mirror of
https://github.com/CnTransGroup/EffectiveModernCppChinese.git
synced 2025-03-24 08:10:19 +08:00
parent
deb428addf
commit
778135fdb0
@ -138,7 +138,7 @@ authAndAccess(Container&& c,Index i)
|
||||
|
||||
为了完全理解decltype的行为,你需要熟悉一些特殊情况。它们大多数都太过晦涩以至于几乎没有书进行有过权威的讨论,这本书也不例外,但是其中的一个会让我们更加理解decltype的使用。
|
||||
|
||||
对一个名字使用decltype将会产生这个名字被声明的类型。名字是左值表达式,但那不影响decltype的行为,decltype确保产生的类型总是左值引用。换句话说,如果一个左值表达式除了名字外还有类型,那么decltype将会产生 **T&** LEIX .这几乎没有什么太大影响,因为大多数左值表达式的类型天生具备一个左值引用修饰符。举个例子,函数返回左值,几乎也返回了左值引用。
|
||||
将decltype应用于变量名会产生该变量名的声明类型。虽然变量名都是左值表达式,但这不会影响decltype的行为。(译者注:这里是说对于单纯的变量名,decltype只会返回变量的声明类型)然而,对于比单纯的变量名更复杂的左值表达式,decltype可以确保报告的类型始终是左值引用。也就是说,如果一个不是单纯变量名的左值表达式的类型是T,那么decltype会把这个表达式的类型报告为T&。这几乎没有什么太大影响,因为大多数左值表达式的类型天具备一个左值引用修饰符。例如,返回左值的函数总是返回左值引用。
|
||||
|
||||
这个行为暗含的意义值得我们注意,在:
|
||||
````cpp
|
||||
|
Loading…
Reference in New Issue
Block a user