Я прочитал о std::enable_if
для:
Перегрузка функции на основе произвольных свойств типа
Поэтому я пытался перегрузить ctors класса через enable_if
(как показано ниже), но я получаю сообщение о том, что enable_if
нельзя использовать для отключения объявления, и это в обеих строках, когда я использовал std::enable_if
:
#include <iostream>
#include <type_traits>
#include <typeinfo>
template <typename T>
class cls
{
public:
cls (T a, typename std::enable_if< std::is_same<T, int>::value >::type * Dummy = 0)
{
std::cout << "Ctor for int\n";
}
cls (T a, typename std::enable_if< std::is_same<T, char>::value >::type * Dummy = 0)
{
std::cout << "Ctor for char\n";
}
};
int main()
{
cls a(10);
cls b('x');
return 0;
}
Так что возможно перегрузить ctors, используя enbale_if
.