今日、私の友人の1人が、次のコードが彼のVisualStudio2008で適切にコンパイルされると教えてくれました。
#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++を使用しますが、2番目のPrintAll()呼び出しを渡すことを常に拒否します。私が知っているように、この問題に対して、g++はテンプレートを翻訳する標準的な方法を実行しています。
それで、私の知識は間違っていますか、それともVS2008の拡張ですか?