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 是否为可移动构造类型。
返回值:
- 真: 如果给定的数据类型 T 是 is_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