foo1에 템플릿 매개 변수로 포인터를 가져 오려고합니다. 다음은 코드입니다.템플릿에서 포인터로 템플릿 매개 변수 공제
struct baz{
int qux;
};
template<typename C, typename T, T C::*m>
struct foo1{};
template<typename C, typename T>
void barr2(T C::*m){
}
template<typename C, typename T>
void barr1(T C::*m){
barr2(m); // ok
foo1<C, T, &baz::qux> _; // ok
foo1<C, T, m> f; // g++4.6.1 error here; how to pass 'm' correctly ?
}
int main(){
barr1(&baz::qux);
}
그래서 어떻게 생겼습니까?
도 참조 [내 관련 질문 (HTTP : //stackoverflow.com/questions/9729438/c-pointer-to-method-template-deduction-doesnt-compile-when-targeting-x86-but). 짧은 대답은 내가 아는 한 당신이 할 수 없다는 것이지만, GCC 나 VC++ x64를 목표로하고 싶다면 작동 할 것입니다. 잠깐, 신경 쓰지 마세요, 메소드 포인터가 아니라 데이터 멤버 포인터입니다. 내가 뭐라 했어도 잊어 버려! – Cameron