오늘 내 친구 중 하나는 다음과 같은 코드가 자신의 비주얼 스튜디오 2008에서 잘 컴파일 말해 줬어 :Visual C++ 컴파일러는 dependent-name을 "typename"없이 유형으로 허용합니까?
#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의 확장인가요?
/Za (엄격) 또는/Ze (기본값, 내선)를 사용합니까? – MSalters
@MSalters : 지금/Za와 시도했습니다. 차이점을 보지 못했습니다 ... – hpsMouse