O Visual C ++ Compiler permite o nome dependente como um tipo sem "typename"?

Hoje, um dos meus amigos me disse que o código a seguir se compila bem no 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;
}

Eu costumo usar g ++, e ele sempre se recusa a passar a segunda chamada PrintAll (). Como eu sei, para esse problema, o g ++ está fazendo a maneira padrão de traduzir um modelo.

Então, meu conhecimento está errado ou é uma extensão do VS2008?

questionAnswers(2)

yourAnswerToTheQuestion