Visual C ++ Compiler permite el nombre de dependiente como un tipo sin "typename"?

Hoy uno de mis amigos me dijo que el siguiente código se compila bien en su Visual Studio 2008:

#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;
}

Usualmente uso g ++, y siempre se niega a pasar la segunda llamada PrintAll (). Como sé, para este problema, g ++ está haciendo la forma estándar de traducir una plantilla.

Entonces, ¿mi conocimiento es incorrecto o es una extensión de VS2008?