Bugün arkadaşlarımdan biri şu kod onun Visual Studio 2008 de derler söyledi:Visual C++ Derleyici, "typename" olmayan bir isim olarak bağımlı isim verir?
#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;
}
Genellikle g ++ kullanın ve her zaman ikinci PRINTALL() çağrısını geçmek reddediyorum. Bildiğim gibi, bu sorun için, g ++ bir şablonu tercüme etmenin standart yolunu yapıyor.
Bilgim yanlış mı, yoksa VS2008'in uzantısı mı?
Bu,/Za (katı) veya/Ze (varsayılan, uzantılar) ile mi? – MSalters
@MSalters: Hemen şimdi/Za ile çalıştım. Herhangi bir fark görmediniz ... – hpsMouse