C++中的std::is_convertible模板及示例
C++ STL中的 std::is_convertible 模板存在于 < type_traits>头文件中。C++ STL中的 std::is_convertible 模板用于检查任何数据类型A是否隐式转换为任何数据类型B。它返回布尔值true或false。
头文件:
#include<type_traits>
模板类:
template< class From, class To >
struct is_convertible;
template< class From, class To >
struct is_nothrow_convertible;
语法:
is_convertible <A*, B*>::value;
参数: 它接受两个数据类型A和B:
- A: 它表示要转换的参数。
- B: 它表示参数 A 被隐式转换的参数。
返回值:
- True: 如果给定的数据类型 A 转换为数据类型 B 。
- False: 如果给定的数据类型 A 未转换为数据类型 B 。
下面是演示 std::is_convertible 在C++中的程序:
代码:
// C++程序演示
// std :: is_convertible示例
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;
// 给定的类
class A {
};
class B: public A {
};
class C {
};
// 驱动程序
int main()
{
cout << boolalpha;
// 检查类B是否可以转换为A
bool BtoA = is_convertible<B*, A*> :: value;
cout << BtoA << endl;
// 检查类A是否可以转换为B
bool AtoB = is_convertible<A*, B*> :: value;
cout << AtoB << endl;
// 检查类B是否可以转换为C
bool BtoC = is_convertible<B*, C*> :: value;
cout << BtoC << endl;
// 检查int是否可以转换为float
cout << "int to float: "
<< is_convertible<int, float> :: value
<< endl;
// 检查int是否可以转换为const int
cout << "int to const int: "
<< is_convertible<int, const int> :: value
<< endl;
return 0;
}
true
false
false
int to float: true
int to const int: true