老问题
对于 临时对象 只能绑定到 const-ref 上,这是没有怀疑的。而C++对这点的要求也是为了避免代码中出现bug,不过有种情况好象与这点正好相反。
class T
{
public:
T& get_instance(){ return *this; }
//其他的部分
};
void fun(T& r)
{
//对r操作
}
int main()
{
fun(T().get_instance());
}
上面那段代码完全可以通过,其中对get_instance的调用,让编译器觉察到该处表达式的确是一个左值。对于这段代码来说,应该是绝对安全的。但是对于下面这段代码来说,就绝对地不安全了
T& r = T().get_instance();
//对r操作
这算是语言的纰漏吗?