我明显错过了某些东西。尝试引用与const成员通过引用传递时删除的函数
如果我有:
class MyClass
{
public:
const int something;
MyClass(int Something) : something(something) {}
};
这将失败(试图引用已删除的功能),因为我没有拷贝构造函数
std::vector<MyClass> myStuff;
std::sort(myStuff.begin(), myStuff.end(),
[](MyClass lhs, MyClass rhs) {
return lhs.something > rhs.something; });
所以我应该按引用传递。但即使拉姆达变为
[](const MyClass& lhs, const MyClass& rhs) {
return lhs.something > rhs.something; });
这是什么原因?解决方法很明确(不具有const成员变量),但我想知道我在上面的示例中缺少的内容。
'sort'需要移动向量中的物体。你不能这样做,因为课程不是可复制或可分配的。 – NathanOliver
@NathanOliver而移动构造函数由于相同的原因而丢失,对吧? – user3804799
是的,复制和移动赋值操作符被删除,因为你有一个'const'成员。 – NathanOliver