Можно ли написать шаблон, который изменяет поведение в зависимости от того, определена ли определенная функция-член в классе?
Вот простой пример того, что я хотел бы написать:
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".