Ist es möglich, eine Vorlage zu schreiben, um die Existenz einer Funktion zu überprüfen?

Ist es möglich, eine Vorlage zu schreiben, die das Verhalten ändert, je nachdem, ob eine bestimmte Elementfunktion für eine Klasse definiert ist?

Hier ist ein einfaches Beispiel für das, was ich schreiben möchte:

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

Also, wennclass T hattoString() definiert, dann benutzt es es; sonst nicht. Der magische Teil, den ich nicht kann, ist der Teil "FUNCTION_EXISTS".

Antworten auf die Frage(25)

Ihre Antwort auf die Frage