Представьте себе следующий сценарий:
template<class T>
void myFunction(T *)
{
//do nothing
}
void myFunction(myBase * _base)
{
//do something with _base
}
int main( int argc, const char* argv[] )
{
myDerivedFromBase * ptr = new myDerivedFromBase;
myFunction(ptr); //calls the templated version
myFunction(static_cast<myBase*>(ptr)); //calls the correct version
delete ptr;
}
В основном я хочу добиться, чтобы шаблонная функция вызывалась для указателей, которые не являются производными от моей базы. Если ptr получен из myBase, я хочу, чтобы вторая версия myFunction была вызвана без явного приведения. Это возможно?