【发布时间】:2011-10-28 22:46:39
【问题描述】:
在 C++03 中,不可能按值返回具有私有未定义复制构造函数的类的对象:
struct A { A(int x) { ... } private: A(A const&); };
A f() {
return A(10); // error!
return 10; // error too!
}
我想知道,在 C++11 中是否取消了这个限制,从而可以为没有用于复制或移动的构造函数的类编写具有类类型返回类型的函数?我记得允许函数的调用者使用新返回的对象可能很有用,但他们无法复制该值并将其存储在某处。
【问题讨论】:
-
“按值...不复制或移动”返回对象是什么意思?
-
@Richard 有一个不返回
void或引用的函数定义。我的意思是一个返回一个新类对象的函数。我会澄清的。 -
@Xeo :因为这是一个更了解的人提出的愚蠢问题。我这么说是作为一个在我知道之前就已经知道/尊重 litb 的人。 ;-]
-
@ildjarn 哦,我对爱的感觉如何。我在下面发现了这个测验的解决方案!
-
@Johannes : 够公平的!
标签: c++ c++11 copy-constructor