СФИНА не скомпилировала [дубликат]
На этот вопрос уже есть ответ здесь:
SFINAE работает в типе возврата, но не в качестве параметра шаблона 3 ответаОчень часто я использовал SFINAE раньше, но у меня есть очень простой пример, который я не могу запустить сегодня.
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>();
}
Ошибка:
src / main.cpp: 20: 18: ошибка: шаблон void X :: Do () не может быть перегружен
src / main.cpp: 14: 18: ошибка: с шаблоном void X :: Do () void Do ()
Я хочу отключить любую перегрузку с помощью enable_if, но это не работает ...
Есть идеи, что сегодня я сделал не так?