SFINAE hat nicht kompiliert [duplizieren]
Diese Frage hat hier bereits eine Antwort:
SFINAE arbeitet im Rückgabetyp, aber nicht als Vorlagenparameter 3 answersSehr 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?