Компилятор Visual C ++ допускает использование зависимого имени как типа без «typename»?

Сегодня один из моих друзей сказал мне, что следующий код хорошо компилируется в его 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;
}

Я обычно использую g ++, и он всегда отказывается передавать второй вызов PrintAll (). Как я знаю, для этой проблемы g ++ выполняет стандартный способ перевода шаблона.

Итак, мои знания неверны или это расширение VS2008?

Ответы на вопрос(1)

Ваш ответ на вопрос