如果對象的類已禁用了複製構造函數並禁用了複製操作符,是否可以在地圖中插入對象?移動語義在這裏有用嗎?在不復制對象的情況下在地圖中插入對象
#include <map>
class T {
public:
T(int v): x(v) {};
private:
T(const T &other); // disabled!
T &operator=(const T &other); // disabled!
int x;
};
int main() {
std::map<int, T> m;
m[42] = T(24); // compilation error here!
}
編輯我並不完全清楚。該對象是巨大的,所以我不想做不必要的副本。但我可以修改類的代碼(也許我需要實現移動語義?),而不是用戶代碼(示例中的主函數)。
還要注意'm [42]'也需要'T'默認構造函數。 – Jarod42