다음 코드를 고려하십시오.멤버에 대한 포인터에 액세스 할 수 없습니다. 왜?
template<class T, class F> struct X {};
template<class T, class F, T F::* m> struct Y {};
struct Foo {
int member;
typedef X<int, Foo> x_type; // works well
typedef Y<int, Foo, &Foo::member> y_type; // ERROR
};
typedef Y<int, Foo, &Foo::member> y_type2; // OK
컴파일러에서 오류가 발생하는 이유는 무엇입니까? (VS2008)
새로운
이 버그를 connect.microsoft.com에 게시했습니다.
당신이 사용하는 어떤 컴파일러? g ++ 4.3.3에는 오류가 없습니다. – sth
컴파일러에서 반환되는 오류는 무엇입니까? – luc
"Y"템플릿의 선언을 이해할 수 없습니다. 템플릿 매개 변수는 유형 또는 정수 값입니다. "TF :: * m"은 템플릿을 매개 변수화 할 수있는 유형이 아닙니다 ... "Y"라고 쓰면 마지막 매개 변수는 형식이 아니며 형식이 아닙니다. 정수 값. 멤버에 대한 포인터입니다. 따라서, 나는 믿을 만하다, 거부되어야한다 ... –
SadSido