c++ primer 第五版關於decltype的一個問題?
這裡說decltype(i)是一個int,這個說法是否有問題?不應該是int嗎?
這裡確實有問題,decltype(i)確為int。
找了一下中文版的書,這段內容在628-629頁,英文的711頁。
C++ Primer本身對於decltype的介紹在2.5.3節,其中有一個WARNING:
切記:decltype((variable))(注意是雙層括弧)的結果永遠是引用,而decltype(variable)的結果只有當variable本身就是一個引用的時候才是引用。
decltype的標準定義寫在[dcl.type.simple],或者cppref上也有完全符合標準的中文解釋。
decltype(e)
...if e is an unparenthesized id-expression or an unparenthesized class member access, decltype(e) is the type of the entity named by e.
簡言之,聲明是什麼類型就是什麼類型。
和樓上的說法一致@庄森
#include &
using namespace std;
template&
struct rmv_reference{
typedef T type;
};
template&
struct rmv_reference&
typedef T type;
};
template&
struct rmv_reference&
typedef T type;
};
int main(){
int i=101;
rmv_reference&
rmv_reference&
rmv_reference&
return 0;
}
這大概就是標準庫remove_reference模板類型的實現。
參考c++ primer 5th 中文版 p62,p628.
推薦閱讀:
※用一年時間如何能掌握 C++ ?
※為什麼現代CFD和PIC模擬大量採用C++編寫?針對這些模擬C++相對於C的優勢在哪?
※C++ 是 2012 年不宜進入的技術點嗎?
※C++ 研發實習生面試通常會被問到什麼問題?