【发布时间】:2014-06-30 10:28:08
【问题描述】:
[C++11: 12.8/3]:class X的非模板构造函数是移动构造函数,如果它的第一个参数是typeX&&、const X&&、volatile X&&或const volatile X&&,并且要么没有其他参数,要么否则所有其他参数都有默认参数(8.3.6)。 [..]
为什么采用const 右值引用的构造函数被标准称为“移动构造函数”?除了最边缘的情况外,肯定是it's self-evident 和this prohibits meaningful move semantics?
“根据我的说法”,正如 SO 所说,T(const T&&) 不应被视为“移动构造函数”,因为it's basically useless。
如果任何东西,不应该叫拷贝构造函数吗?
【问题讨论】:
-
“移动构造函数”可以撕掉
mutable胆量,不是吗? ;) -
我的猜测是,如果你有一个采用
const X&&的构造函数,那么你的类可能有一些不寻常的语义,隐式定义一个“真正的”移动构造函数是没有意义的。所以我们只是说const X&&构造函数是一个移动构造函数。你怎么称呼它并不重要(我认为)。 -
@LightnessRacesinOrbit:等等,所以你认为 copy 构造函数移动
mutable是合理另一个const对象的胆量? -
那么复制构造函数如何能够响应@FredOverflow 的评论呢?
-
这不就是最不意外的原则吗?该构造是否真的有用似乎并不那么有趣。
标签: c++ c++11 move-semantics