에서 컴파일에 실패부분 전문성은 내가 다음에 귀결 코드를 VS2005
error C2039: 'func' : is not a member of 'Baz<T>'
with
[
T=FloatFooBar
]
error C3861: 'func': identifier not found
제가
const Foo<T>& I
const Foo<T>* I
에 바뀌면
그러나, (오히려 기준보다는 포인터를 전달 I
) 등을 정의 FloatFooBar
:
typedef FooBar<float, &MyStruct::s_floatFoo> FloatFooBar;
GCC와 VS2005 모두 만족합니다.
무슨 일 이니? VS2005가 GCC 나 컴파일러 버그와 다르게 처리하는 미묘한 템플릿 대체 오류입니까?
(가장 이상한 것 : 생각이 오늘 아침 일찍 VS2005에서 위의 코드가 작동했다.하지만 그건 내 아침 커피 전에 있었어. 나는 지금 카페인없는 일이 전혀 없다는 것을 완전히 확신하지 못했습니다. 갈망에 의한 정신 착란 ...)
코드가 정상인 것 같습니다. VS2005의 버그처럼 보입니다. –
코드가 Comeau 온라인으로 컴파일되므로 아마도 VS2005로 제한됩니다. – rotoglup