考虑移动赋值运算符的这个规范形式:点击这里
class_name & class_name :: operator= ( class_name && )
当禁用复制时,链接等于不可能,因为返回值是lvalue
,从逻辑上讲这没有意义。唯一可以看到(也许您有其他示例)可用的返回值的地方是调用接受class_name
的参考/常量引用
的函数:
void foo(class_name&){}
void bar(const class_name&){}
void use_foo_bar()
{
some_class a;
foo(a = get_some_class());
bar(a = get_some_class());
}
个人认为,这种编程方式不好(个人观点),不希望在代码库中看到这种方式。
当禁用复制时,返回当前对象是否有意义,还是使用void
返回类型可以接受?
std::move
,那么这是可能的。 - Lightness Races in Orbit