在线文档教程
C++
应用 | Utilities

std::is_convertible

STD::是[医]可转换

Defined in header
template< class From, class To > struct is_convertible;(since C++11)

如果虚函数定义To test(){returnstd::declval<From>(}是格式良好的,%28,也就是std::declval<From>()可以转换为To使用隐式转换,或者两者兼而有之From和To是否符合cv条件?void%29,提供成员常量。value等于true.否则value是false.为本支票的目的,使用std::declval在返回语句中不被认为是ODR-使用...

存取检查执行时,就好像是从与任何类型无关的上下文中执行的。只考虑返回语句%28中表达式的即时上下文的有效性,包括对返回类型%29的转换。

FromTo每一个都是一个完整的类型,%28可能是cv-合格%29void,或者一系列未知的界限。否则,行为就没有定义。

辅助变量模板

template< class From, class To > inline constexpr bool is_convertible_v = is_convertible::value;(since C++17)

继承自STD:积分[医]常量

成员常数

value statictrue if From is convertible to To , false otherwise (public static member constant)

成员函数

operator boolconverts the object to bool, returns value (public member function)
operator() (C++14)returns value (public member function)

成员类型

TypeDefinition
value_typebool
typestd::integral_constant<bool, value>

注记

给出引用类型、空类型、数组类型和函数类型的定义良好的结果.

二次

#include <iostream> #include <type_traits> int main() { class A {}; class B : public A {}; class C {}; bool b2a = std::is_convertible<B*, A*>::value; bool a2b = std::is_convertible<A*, B*>::value; bool b2c = std::is_convertible<B*, C*>::value; std::cout << std::boolalpha; std::cout << b2a << '\n'; std::cout << a2b << '\n'; std::cout << b2c << '\n'; }

二次

产出:

二次

true false false

二次

另见

二次

*。

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/type/is[医]可转换