std::is_move_constructible在C++中的应用与示例

std::is_move_constructible在C++中的应用与示例

C++ STL中的 std::is_move_constructible 模板出现在 <type_traits> 头文件中。C++ STL中的std::is_move_constructible模板用于检查T是否可以使用移动构造函数(可以使用其类型的右值引用构造)构造,返回bool类型的值,值为true或false。

头文件:

#include<type_traits>

模板类:

template< class T >
struct is_move_convertible;

语法:

std :: is_move_constructible < datatype > :: value << '\n'

参数: 模板 std::is_move_constructible 接受单个参数 T(特性类) ,以检查 T 是否为可移动构造类型。

返回值:

  • 真: 如果给定的数据类型 Tis_move_constructible
  • 假: 如果给定的数据类型 T 不是 is_move_constructible

下面是演示 std::is_move_constructible的 程序:

程序:

//C++ program to demonstrate
//std::is_move_constructible

#include <bits/stdc++.h>
#include <type_traits>

using namespace std;

// Declare structures
struct B {
};
struct A {
    A& operator=(A&) = delete;
};

class C {
    int n;
    C(C&&) = default;
};

class D {
    D(const D&) {}
};

// Driver Code
int main()
{
    cout << boolalpha;

    // Check if char is move constructible or not
    cout << "char: "
          << is_move_constructible<char> ::value
          << endl;

    // Check if struct A is move constructible or not
    cout << "struct A: "
          << is_move_constructible<A> ::value
          << endl;

    // Check if struct B is move constructible or not
    cout << "struct B: "
          << is_move_constructible<B> ::value
          << endl;

    // Check if class C is move constructible or not
    cout << "class C: "
          << is_move_constructible<C> ::value
          << endl;

    // Check if class D is move constructible or not
    cout << "class D: "
          << is_move_constructible<D> ::value
          << endl;
    return 0;
}
char: true
struct A: true
struct B: true
class C: false
class D: false

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程