下面將編譯GCC 5.2,但不與Visual Studio 2015年CRTP編譯錯誤
template <typename Derived>
struct CRTP {
static constexpr int num = Derived::value + 1;
};
struct A : CRTP<A> {
static constexpr int value = 5;
};
它抱怨A
沒有一個成員名爲value
。 如何修復代碼以便在兩個編譯器上編譯?還是完全違法?
它也無法編譯的鏗鏘。 –
它是非法的語法,GCC只是僥倖嗎? – prestokeys
我不確定,但它看起來應該是非法的,否則你可能有'num = Derived :: value'和'value = CRTP :: num' –