Пожалуйста, рассмотрите этот пример, как нам принудительно вызвать неявное преобразование в функции, вторым параметром которой является указатель на функцию-член.явное приведение в список аргументов функции - это не то, чего я хочу достичь сейчас.Вместо этого я хотел бы, чтобы компилятор как-то делал это так же, как это делает параметр FIRST ...
struct Base
{
virtual ~Base() = 0 {}
};
struct Derived : public Base
{
void f(){}
};
typedef void(Base::*polymorph)();
// how do I force IMPLICIT conversion here: EDIT: (polymorph type work only for polymorph pointer type no conversion)
void func(Base* arg1, polymorph arg2) // void* arg2, (void*) arg2 etc... dosn't work
{
polymorph temp = reinterpret_cast<polymorph>(arg2); // to achive this
}
int main()
{
Derived* test = new Derived;
// first parameter work but another gives an error
func(test, &Derived::f); // BY NOT CHANGING THIS!
delete test;
return 0;
}