std::is_convertible 判断类型转换
目录
- 简介
- class template 声明
- 示例
- 参考
C++ 11知识点:std::is_convertible
简介
is_convertible用于判断是否可以转换:第一个模板参数的类型是否可以转换为第一个模板参数的类型。
如果To, From都是基本类型,那么可以隐式转换。
如果To是基类,From是子类,那么From可以转换为To。
class template 声明
template
struct is_convertible;
is_convertible 继承自integral_constant,如果能转换,可以从is_convertible<>::value萃取到true;如果不能转换,则萃取到false。
示例
A是B基类,B可以转换为A,反之不行。
// is_convertible example#include #include
struct A { };
struct B : A { };
int main() {
std::cout << std::boolalpha; /* 输出流将bool输出true/false, 而不是1/0 */
std::cout << "is_convertible:" << std::endl;
std::cout << "int => float: " << std::is_convertible::value << std::endl;
std::cout << "int = >const int: " << std::is_convertible::value << std::endl;
std::cout << "A => B: " << std::is_convertible::value << std::endl; /* A不能转换为B */
std::cout << "B => A: " << std::is_convertible::value << std::endl; /* B能转换为A */
return 0;
}
输出
is_convertible:
int => float: true
int => const int: true
A => B: false
B => A: true
参考
http://www.cplusplus.com/reference/type_traits/is_convertible