int i = 12;
decltype(i) x4; // type is int
decltype((i)) x5; // type is int&
我們從C++ fundementals知道i
是lvaue了。 現在decltype(i)
等於表達式i
的類型,其自然是int
。 現在按規格/標準(i)
也是一個左值和decltype((i))
也應當以某種方式檢查表達(i)
這是左值和是相同i
這也是左值的類型。但爲什麼標準突然需要T&
類型?C++ 11:T和T&推導[行爲差異,兩者之間] decltype行爲
這很混亂。因爲如果它是decltype((i)&)
那麼我同意這意味着decltype
的int&
會更清晰準確。我在這裏有點失落,爲什麼i
和(i)
兩者都解析爲左值類型導致不同類型的T
和T&
。
希望鏈接的重複回答你的問題。並且[這裏](https://www.reddit.com/r/cpp/comments/4z8han/decltypee_decltypee/)的另一個討論。 – songyuanyao