Подтвердить что ты не робот

Почему GCC позволяет наследовать от частного вложенного класса?

Рассмотрим следующий код:

class A {
  class B {};
};

template <typename C>
class D : A::B {};

void f() {
  D<int> d;
}

D<int> наследует от A::B, который является частным вложенным классом. Я ожидал, что это будет ошибка, но GCC принимает этот код. Это ошибка в GCC или я что-то не хватает?

4b9b3361

Ответ 1

Я нашел ответ. Поскольку это может быть полезно для других, я размещаю его здесь - это ошибка GCC 47346.

Ответ 2

Вы пытались создать класс, не требующий шаблона?

Класс шаблона не скомпилирован, если нет объекта этого класса. Попробуйте создать экземпляр этого класса или создать не-шаблонный класс - gcc, вероятно, не удастся; -)

Edit Мой плохой - объект создан и не вызывает gcc-ошибку. Извините за это.