Se requiere un espacio de nombres cuando se hace referencia a la clase base

Tengo un código como este:

namespace N {
   class B {
     public:
       virtual void doStuff(B *) = 0;
    };
 }

 // not in a namespace
 class Derived : public N::B {
   public:
       void doStuff(B *); // Should this be N::B, or is B ok?
 };

¿Necesito el calificador de espacio de nombres donde Derivado se refiere a su clase base? GCC y MSVC están contentos con el código tal como está escrito, pero otro compilador se queja a menos que ponga el espacio de nombres. ¿Qué dice el estándar C ++?

Respuestas a la pregunta(1)

Su respuesta a la pregunta