📅  最后修改于: 2023-12-03 14:47:42.674000             🧑  作者: Mango
在 C++ 中,std::is_move_assignable 是一个用于检查类型是否支持移动赋值运算符的类型特征。
#include <iostream>
#include <type_traits>
class MyClass {
public:
MyClass() {}
~MyClass() {}
MyClass(const MyClass&) {}
MyClass& operator=(const MyClass&) {return *this;}
MyClass(MyClass&&) = default;
MyClass& operator=(MyClass&&) = delete;
};
int main() {
std::cout << std::boolalpha;
std::cout << std::is_move_assignable<MyClass>::value << std::endl; // 输出false
std::cout << std::is_move_assignable<int>::value << std::endl; // 输出true
return 0;
}
在上面的示例中,我们定义了一个名为 MyClass 的类,并实现了其复制构造函数和赋值运算符。但是,我们将移动赋值运算符标记为删除。在主函数中,我们使用 std::is_move_assignable 来检查 MyClass 是否支持移动赋值运算符,以及整数类型是否支持移动赋值运算符。
输出如下:
false
true