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 answers

In 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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage