Ответ 1
Я нашел ответ. Поскольку это может быть полезно для других, я размещаю его здесь - это ошибка GCC 47346.
Рассмотрим следующий код:
class A {
class B {};
};
template <typename C>
class D : A::B {};
void f() {
D<int> d;
}
D<int>
наследует от A::B
, который является частным вложенным классом. Я ожидал, что это будет ошибка, но GCC принимает этот код. Это ошибка в GCC или я что-то не хватает?
Я нашел ответ. Поскольку это может быть полезно для других, я размещаю его здесь - это ошибка GCC 47346.
Вы пытались создать класс, не требующий шаблона?
Класс шаблона не скомпилирован, если нет объекта этого класса. Попробуйте создать экземпляр этого класса или создать не-шаблонный класс - gcc, вероятно, не удастся; -)
Edit Мой плохой - объект создан и не вызывает gcc-ошибку. Извините за это.