Visual C ++ Compiler erlaubt abhängigen Namen als Typ ohne "Typname"?

Heute hat mir einer meiner Freunde erzählt, dass der folgende Code in seinem Visual Studio 2008 gut kompiliert werden kann:

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

Ich benutze normalerweise g ++ und es lehnt es immer ab, den zweiten PrintAll () -Aufruf zu übergeben. Wie ich weiß, übersetzt g ++ für dieses Problem eine Vorlage auf die übliche Weise.

So, ist mein Wissen falsch oder ist es eine Erweiterung von VS2008?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage