C CRTP和不完整的类定义
C++ CRTP And Incomplete Class Definition
使用crtp时允许在基本定义中允许的派生类字段?
template<typename T>
class Base
{
public:
constexpr int IntInDerived = T::SomeInt; // <--- Is This Valid
using TypeInDerived = typename T::SomeType; // <--- Is This Valid
};
class Derived : public Base<Derived>
{
public:
constexpr int SomeInt = 10;
using SomeType = float;
};
我不确定,因为即使t :: someinint and t ::某种程度上是依赖的名称,但在矩基上实例化的派生也被认为是不完整的类型。
显然,当在问题中,将它们放置在类定义块中时,这些都是无效的。但是,由于方法将在以后单独实例化,因此在方法中访问T的成员是有效的。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 部分定义/别名模板模板参数
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- #为""定义宏;静态";针对不同的上下文
- 如何确保C++函数在定义之前声明(如override关键字)
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 将具有固定签名的自定义函数名称注入 CRTP
- 类型特征检查 CRTP 派生,在基类中,问题是未定义的类型
- C CRTP和不完整的类定义
- 为什么CRTP中的落魄定义行为
- 在模板化类型的CRTP中定义类型
- CRTP和基类定义的类型的可见性
- CRTP的这个用例被认为是未定义的行为吗
- 使用继承时,带有 CRTP 的类型定义不起作用
- C++ CRTP 并从 base 访问派生的嵌套类型定义
- 自动定义来自CRTP的访问者(CRTP使用boost foreach和boost变体)
- 在CRTP中引用类内部的结构定义