Comeau vs g++ [Yet another bug]

Рассмотрим следующий тест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) Это не реальный код.

5
задан Prasoon Saurav 16 December 2011 в 17:51
поделиться