Mit SFINAE eine Mitgliedsfunktion erkennen [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Ist es möglich, eine Vorlage zu schreiben, um die Existenz einer Funktion zu überprüfen? 25 answersIn C ++ 11, um herauszufinden, ob eine Klasse eine Mitgliedsfunktion hatsize
, Sie könnten den folgenden Testhelfer definieren:
template <typename T>
struct has_size_fn
{
typedef char (& yes)[1];
typedef char (& no)[2];
template <typename C> static yes check(decltype(&C::size));
template <typename> static no check(...);
static bool const value = sizeof(check<T>(0)) == sizeof(yes);
};
Ist dies in C ++ 98 mit einem ähnlichen Trick möglich, ohne auf Compilererweiterungen wie @ angewiesen zu seitypeof
?