Ciertos errores en la plantilla desinstalada no informados por g ++

Considere este ejemplo:

class A
{
  void foo();
  public:
  void bar();
};

template <class> class B
{
  B()
  {
    A a;
    a.foo();    // 1
    A::bar();   // 2
    a.bar(1);   // 3
  }
};

NotaB nunca se instancia.

clang++ informa que las tres líneas marcadas son erróneas.g++ (4.8.3) acepta líneas1 y2 y solo reporta línea3.

SiB se instancia,g++ felizmente informa que las tres líneas son erróneas.

Esto es ung++ ¿error? Uno pensaría que sí.A no es un nombre dependiente y sus miembros deben verificarse normalmente en el momento de la definición de la plantilla. ¿Hay matices que no veo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta