Рассмотрим следующий тест 1 код
struct A {
private:
class face;
friend class face;
};
struct A::face {};
template <typename _CharT>
struct C : public A::face
{};
int main()
{
C<int> x;
}
Правильно ли сформирован этот код?Я проверил это под G ++ и Comeau.g ++ прекрасно скомпилирует, тогда как comeau выдает следующее сообщение об ошибке (которое я считаю правильным)
"ComeauTest.c", line 12: error: class "A::face" (declared at line 9) is inaccessible
struct C : public A::face
^
detected during instantiation of class "C<_CharT> [with _CharT=int]"
at line 17
Какой компилятор верен в этом случае?Comeau - один из самых стандартных компиляторов, который я знаю.G ++ снова не так?
(1) Это не реальный код.