Можно ли написать шаблон для проверки существования функции?


можно ли написать шаблон, который изменяет поведение в зависимости от того, определена ли определенная функция-член в классе?

вот простой пример того, что я хотел написать:

template<class T>
std::string optionalToString(T* obj)
{
    if (FUNCTION_EXISTS(T->toString))
        return obj->toString();
    else
        return "toString not defined";
}

Итак, если class T и toString() определено, то он использует его; в противном случае, это не так. Вся магия, что я не знаю, как сделать это "FUNCTION_EXISTS" часть.

23 405

23 ответа: