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的转换。
From
和To
每一个都是一个完整的类型,%28可能是cv-合格%29void
,或者一系列未知的界限。否则,行为就没有定义。
辅助变量模板
template< class From, class To > inline constexpr bool is_convertible_v = is_convertible | | (since C++17) |
---|
继承自STD:积分[医]常量
成员常数
value static | true if From is convertible to To , false otherwise (public static member constant) |
---|
成员函数
operator bool | converts the object to bool, returns value (public member function) |
---|---|
operator() (C++14) | returns value (public member function) |
成员类型
Type | Definition |
---|---|
value_type | bool |
type | std::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。