std::is_polymorphic

来自cppreference.com
< cpp‎ | types

 
 
 
类型的支持
基本类型
基础类型
定宽整数类型 (C++11)
数值极限
C 数值极限接口
运行时类型信息
类型特性
类型类别
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
类型属性
(C++11)
(C++11)
(C++11)
is_polymorphic
(C++11)
(C++14)
(C++11)
(C++11)(C++17中过时)
(C++11)
类型特性常量
元函数
(C++17)
受支持操作
关系与属性查询
(C++11)
(C++11)
(C++11)
(C++11)
类型修改
(C++11)
(C++11)
(C++11)
类型变换
(C++11)
(C++11)
(C++17)
(C++11)(C++17中过时)
(C++17)
 
定义于头文件 <type_traits>
template< class T >
struct is_polymorphic;
(C++11 起)
T是一个多态类(即,声明或继承了至少一个虚函数的类),提供会员value等于true。对于任何其他类型,valuefalse.
原文:
If T is a polymorphic class (that is, a class that declares or inherits at least one virtual function), provides the member constant value equal true. For any other type, value is false.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

继承自 std::integral_constant

成员常量

value
[静态]
T is a polymorphic class type 则为true,否则为false
(公开静态成员常量)

成员函数

operator bool
转换对象为bool,返回value
(公开成员函数)
operator()
(C++14)
返回value
(公开成员函数)

成员类型

类型 定义
value_type bool
type std::integral_constant<bool, value>

[编辑] 注释

只有多态类包含隐藏的RTTI信息,这使得它可以与dynamic_cast检查,并将其转换.
原文:
Only polymorphic classes contain hidden RTTI information which makes it possible to examine and convert them with dynamic_cast.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 示例

#include <iostream>
#include <type_traits>
 
struct A {
    int m;
};
 
struct B {
    virtual void foo();
};
 
struct C : B {};
 
int main()
{
    std::cout << std::boolalpha;
    std::cout << std::is_polymorphic<A>::value << '\n';
    std::cout << std::is_polymorphic<B>::value << '\n';
    std::cout << std::is_polymorphic<C>::value << '\n';
}

输出:

false
true
true

[编辑] 另请参阅

(C++11)
检查是否是除union以外的对象类型
(类模板) [编辑]
检查是否是一个抽象对象类型
(类模板) [编辑]