如何从 CRTP 类型的类访问静态 constexpr 内联变量?
我不明白为什么
T::X
在 struct Templated
中不可用?
template <typename T> struct Templated {
static const int x = T::X;
};
struct Normal : Templated<Normal> {
static constexpr const inline int X = 0;
};
错误:
“X”不是 Normal 的成员。
找到了!
MSVC 不编译此问题的解决方案是通过简单地将 T::x 放入函数中来延迟 T::x 的评估:
static constexpr const char* name() noexcept { return T::className; }
希望这对某人有帮助!