我需要访问static constexpr
一个我放在一起的解决方案,它适用于 gcc(现场示例),但不适用于 vc++(现场示例)。
代码如下:
template<class Drvd>
class Base
{
public:
static constexpr bool val = Drvd::val;
};
class Derived : public Base<Derived>
{
friend class Base;
private:
static constexpr bool val = true;
};
int main()
{
std::cout << Derived::Base::val << std::endl;
}
所以这是 vc++ 的一个错误,但是任何人都知道如何以vc++ 不会抱怨的不同方式将inval
定义为 in的Base
值?val
Drvd
编辑:
请注意,结果与变体相同:friend class Base<Derived>;
而不是friend class Base;