In vs
template<typename T,void (T::*m)(int)>
struct B{
void f(T* a,int x){
(a->*m)(x);
}
};
struct A{
template<typename X> void f(int){
}
void wrap(int i){
f<char>(i);
}
B<A,&A::wrap > x;
B<A,&A::f<char> > y;
};
int main(){
A a;
}
====compiler output====
c:\users\fabio\dropbox\vs\testbug\testbug.cpp(20): error C2440: 'specialization' : cannot convert from 'overloaded-function' to 'void (__thiscall A::* )(int)'
None of the functions with this name in scope match the target type
===Solution===
B<A,&f<char> > y;
template<typename T,void (T::*m)(int)>
struct B{
void f(T* a,int x){
(a->*m)(x);
}
};
struct A{
template<typename X> void f(int){
}
void wrap(int i){
f<char>(i);
}
B<A,&A::wrap > x;
B<A,&A::f<char> > y;
};
int main(){
A a;
}
====compiler output====
c:\users\fabio\dropbox\vs\testbug\testbug.cpp(20): error C2440: 'specialization' : cannot convert from 'overloaded-function' to 'void (__thiscall A::* )(int)'
None of the functions with this name in scope match the target type
===Solution===
B<A,&f<char> > y;
No comments:
Post a Comment