C++中的std::is_convertible模板及示例

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程