SFINAE hat nicht kompiliert [duplizieren]

Diese Frage hat hier bereits eine Antwort:

SFINAE arbeitet im Rückgabetyp, aber nicht als Vorlagenparameter 3 answers

Sehr oft habe ich SFINAE verwendet, aber ich habe ein sehr sehr einfaches Beispiel, das ich heute nicht ausführen kann.

class X
{
    public:
        template <typename CHECK, typename = typename std::enable_if< std::is_floating_point<CHECK>::value, void>::type >
            void Do()
            {
                std::cout << "yes" << std::endl;
            }

        template <typename CHECK, typename = typename std::enable_if< !std::is_floating_point<CHECK>::value, void>::type>
            void Do()
            {
                std::cout<< "no" << std::endl;
            }

};

int main()
{
    X x;
    x.Do<float>();
}

Error

src / main.cpp: 20: 18: Fehler: 'template void X :: Do ()' kann nicht überladen werden

src / main.cpp: 14: 18: Fehler: mit 'template void X :: Do ()' void Do ()

Ich möchte jede Überladung mit enable_if deaktivieren, aber es funktioniert nicht ...

Hast du eine Idee, was ich heute falsch gemacht habe?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage