V
Vladimir Menshakov
Good day!
Is it possible to write wrapper, which prefers const-member pointer
over non-const one?
Consider simple example:
class Foo {
void bar() {}
void bar() const {}
};
template<typename T>
struct member_ptr {
typedef void (T::*value_type)();
typedef void (T::*const_value_type)() const;
value_type value;
const_value_type const_value;
member_ptr(const value_type& v): value(v) {}
member_ptr(const const_value_type& v): const_value(v) {}
}
member_ptr ptr(&Foo::bar); // call of overloaded ‘member_ptr(Foo*,
<unresolved overloaded function type>)’ is ambiguous
Maybe SFINAE could help, but I cant figure out how
Thank you!
Is it possible to write wrapper, which prefers const-member pointer
over non-const one?
Consider simple example:
class Foo {
void bar() {}
void bar() const {}
};
template<typename T>
struct member_ptr {
typedef void (T::*value_type)();
typedef void (T::*const_value_type)() const;
value_type value;
const_value_type const_value;
member_ptr(const value_type& v): value(v) {}
member_ptr(const const_value_type& v): const_value(v) {}
}
member_ptr ptr(&Foo::bar); // call of overloaded ‘member_ptr(Foo*,
<unresolved overloaded function type>)’ is ambiguous
Maybe SFINAE could help, but I cant figure out how
Thank you!