Следующий код компилируется в 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;
}
НКУ - ошибка: 'шаблон структура B' используется без параметров шаблона
лязг - ошибка: 'B' не является классом, пространства имен, или перечисление
Какой компилятор соответствует стандартным спецификациям? Любая двусмысленность в спецификациях?
Редактировать
Я добавил f()
в C
иметь более подходящий пример.
Правильно, я знаю, что B :: f() работает. Разрабатывая код кросс-платформы, раздражает то, что некоторый код компилируется с одним компилятором, а не с другими. Я хотел бы знать, что говорит о стандарте, и если три компилятора могут быть выровнены, чтобы дать тот же результат компиляции (успешный или нет) ... –