📌  相关文章
📜  std :: is_move_assignable C++示例(1)

📅  最后修改于: 2023-12-03 14:47:42.674000             🧑  作者: Mango

C++中的std :: is_move_assignable

在 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
注意事项
  • std::is_move_assignable 可以用于编译期判断类型是否支持移动赋值运算符。
  • 对于任何类型,都可以通过特化 std::is_move_assignable 来实现自己的移动赋值运算符检查。