Неправильное количество аргументов шаблона с помощью decltype.

cogle спросил: 03 февраля 2018 в 11:20 в: c++

В приведенной ниже программе при компиляции он жалуется, что должно быть два аргумента шаблона, но есть только 1.

template<typename T, typename U = T, 
    typename = std::enable_if<std::is_convertible<std::decltype(int()), int>::value>::type>
void func(T t, U u){}

Однако код ниже компилируется,

template<typename T, typename U = T, 
    typename = std::enable_if<std::is_convertible<int, int>::value>::type>
void func(T t, U u){}

Мне интересно, какая разница между этими двумя и как я могу скомпилировать этот код.

0 ответов