Any*_*orn 8 c++ templates rvalue
能否请您解释一下以下机制的区别:
int function();
template<class T>
void function2(T&);
void main() {
function2(function()); // compiler error, instantiated as int &
const int& v = function();
function2(v); // okay, instantiated as const int&
}
Run Code Online (Sandbox Code Playgroud)
我的推理在实例化方面是正确的吗?为什么不首先实例化为const T&?
谢谢
因为function返回一个非常量值。只有对象可以是 const,因为它们存储一些状态,如果不是 const,则可以对其进行修改。你返回的不是一个对象,而是一个纯值。从概念上讲,它们是不可修改的(例如,像枚举常量),但它们不是 const 限定的(又像枚举常量)。
| 归档时间: |
|
| 查看次数: |
415 次 |
| 最近记录: |