今天我的一个朋友告诉我,下面的代码在他的 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的扩展?