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