衰减到基类

Decay to base class

本文关键字:基类 衰减      更新时间:2023-10-16

是否有一个特征返回特定类的基类,并假设不涉及多重继承?基本上是这样的:

struct Base
{
};
struct Derived : public Base
{
};
struct DerivedDerived : public Derived
{
};
static_assert(std::is_same_v<base<DerivedDerived>::type,Derived>);
static_assert(std::is_same_v<base<Derived>::type,Base>);
static_assert(std::is_same_v<base<Base>::type,Base>);
// with levels
static_assert(std::is_same_v<base<0,DerivedDerived>::type,Base>);
static_assert(std::is_same_v<base<1,DerivedDerived>::type,Derived>);
static_assert(std::is_same_v<base<2,DerivedDerived>::type,DerivedDerived>);
static_assert(std::is_same_v<base<0,Derived>::type,Base>);
static_assert(std::is_same_v<base<1,Derived>::type,Derived>);

不。您可以使用std::is_base_of测试给定类型是否继承自给定的其他类型,但不能直接请求基类型。也就是说,直到C++在未来某个时候得到静态反射。