C++ primer plus里面有講到過加入泛型里面設(shè)了兩個(gè)不同類型她倘,這兩個(gè)不同類型的參數(shù)在一個(gè)表達(dá)式中參與計(jì)算硬梁,那么表達(dá)式的結(jié)果到底應(yīng)該是個(gè)什么類型呢荧止,這個(gè)很難說跃巡。
為此C++11標(biāo)準(zhǔn)推出了一個(gè)關(guān)鍵字叫decltype素邪。把它拆開來看一下就是declare
type的意思兔朦,就是聲明一個(gè)類型沽甥。而它的用法是decltype(),括號(hào)里面的參數(shù)是表達(dá)式等亥曹。
例如:decltype(x)
y;這就是說y的類型是和x一樣的歇式。
并且材失,連修飾符也是一樣的龙巨。值得一提的是這個(gè)表達(dá)式如果加上括號(hào)的話旨别,那它代表一個(gè)左值汗茄,那么此時(shí)的y就是一個(gè)x類型的引用了洪碳。
不過瞳腌,decltype關(guān)鍵字也不能完全解決問題嫂侍,因?yàn)橛械臅r(shí)候你希望直接返回一個(gè)表達(dá)式,因?yàn)楹瘮?shù)會(huì)自動(dòng)去計(jì)算這個(gè)表達(dá)式并把這個(gè)結(jié)果返回給主調(diào)函數(shù)颓影,而且這么寫比較方便瞭空。很顯然這個(gè)時(shí)候你用不著decltype關(guān)鍵字咆畏,當(dāng)然你這個(gè)應(yīng)用場(chǎng)景也無法使用decltype關(guān)鍵字旧找。
那該怎么辦呢钮蛛?那就引出下一個(gè)議題魏颓。