2017-07-18 68 views
0

如何獲取包含引用的表達式的類型?因此,下面的僞代碼將會有三次不同的結果。獲取C++中的表達式類型,包括引用

int a = 5; 
std::cout << type(a) << std::endl; 
int &b = a; 
std::cout << type(b) << std::endl; 
int &&c = 5; 
std::cout << type(c) << std::endl; 

typeid忽略出於某種原因引用,所以它不是一個選項)

+0

出於哪些目的? – Holt

+3

你想解決什麼*實際*問題?爲什麼你需要帶引用的類型?請閱讀[XY問題](http://xyproblem.info/)並思考你的問題可能是怎樣的。 –

+0

@Someprogrammerdude我只是在學習語言,並試圖找出確切的表達類型:)你是否意味着從來沒有必要區分它們? – ledonter

回答

3

如果你只需要看到一個推導式,一招是讓失敗實例化一個模板:

template<typename T> struct TD; 
TD<decltype(a)> tda; 
TD<decltype(b)> tdb; 
TD<decltype(c)> tdc; 

這將導致編譯錯誤,告訴您的類型a/b/c