Hoy en día uno de mis amigos me dijeron que el código siguiente se compila bien en su Visual Studio 2008:El compilador de Visual C++ permite el nombre dependiente como un tipo sin "nombre de tipo"?
#include <vector>
struct A
{
static int const const_iterator = 100;
};
int i;
template <typename T>
void PrintAll(const T & obj)
{
T::const_iterator *i;
}
int main()
{
std::vector<int> v;
A a;
PrintAll(a);
PrintAll(v);
return 0;
}
lo general el uso g ++, y siempre se niegan a pasar a la segunda llamada Imp todo(). Como sé, para este problema, g ++ está haciendo la forma estándar de traducir una plantilla.
Entonces, ¿está equivocado mi conocimiento, o es una extensión de VS2008?
¿Esto es con/Za (estricto) o/Ze (predeterminado, extensiones)? – MSalters
@MSalters: Lo intenté con/Za hace un momento. No vio ninguna diferencia ... – hpsMouse