以下代码在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()的作品。开发跨平台代码,很烦人的是一些代码是用一个编译器而不是其他编译器编译的。我想知道它的标准是什么,如果三个编译器可以对齐以提供相同的编译结果(成功与否)... –