C++ primer plus里面有講到過加入泛型里面設了兩個不同類型,這兩個不同類型的參數在一個表達式中參與計算,那么表達式的結果到底應該是個什么類型呢,這個很難說。
為此C++11標準推出了一個關鍵字叫decltype。把它拆開來看一下就是declare
type的意思,就是聲明一個類型。而它的用法是decltype(),括號里面的參數是表達式等。
例如:decltype(x)
y;這就是說y的類型是和x一樣的。
并且,連修飾符也是一樣的。值得一提的是這個表達式如果加上括號的話,那它代表一個左值,那么此時的y就是一個x類型的引用了。
不過,decltype關鍵字也不能完全解決問題,因為有的時候你希望直接返回一個表達式,因為函數會自動去計算這個表達式并把這個結果返回給主調函數,而且這么寫比較方便。很顯然這個時候你用不著decltype關鍵字,當然你這個應用場景也無法使用decltype關鍵字。
那該怎么辦呢?那就引出下一個議題。