以下代碼在visual studio 2015中編譯(即使使用/ Za選項)。它不會在gcc和clang上編譯。模板基類的調用方法
struct A
{
};
template<typename T>
struct B
{
void f()
{
}
};
template<typename T>
struct C : B<T>
{
void f()
{
}
void g()
{
B::f();
}
};
int main()
{
C<A> c;
c.g();
return 0;
}
GCC - 誤差:無模板參數使用的 '模板結構B'
鐺 - 錯誤: 'B' 不是類,命名空間,或枚舉
哪個編譯器是符合標準規格?規格中的任何含糊之處?
編輯
我已在C
f()
有一個更貼切的例證。
對,我知道B :: f()的作品。開發跨平臺代碼,很煩人的是一些代碼是用一個編譯器而不是其他編譯器編譯的。我想知道它的標準是什麼,如果三個編譯器可以對齊以提供相同的編譯結果(成功與否)... –