Я хочу получить указатель-член в качестве параметра шаблона в 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