title: How to force implicit conversion in polymorphism?
body: <p>Please consider this example,
  how do we force implicit conversion in function whose second parameter is pointer to member function.
  casting explicitly in argument list of function is not what I want to achive wright now.
  Instead I would like that compiler somehow do that like it does with FIRST parameter...</p>
  
  <pre><code>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&lt;polymorph&gt;(arg2); // to achive this
  }
  
  int main()
  {
      Derived* test = new Derived;
      // first parameter work but another gives an error
      func(test, &amp;Derived::f); // BY NOT CHANGING THIS!
      delete test;
      return 0;
  }
  </code></pre>