Я пытаюсь написать общую функцию, которая всегда будет возвращать -1
. Я хочу, чтобы список аргументов шаблона по умолчанию был равен int
. Я пытаюсь использовать std::enable_if
или std::enable_if_t
, чтобы проверить, является ли тип T
допустимым арифметическим типом, используя std::is_arithmetic
или std::is_arithmetic_v
. У меня проблемы с синтаксисом, чтобы правильно скомпилировать это. Вот как выглядит моя лямбда:
template<typename T = int,
std::enable_if_t<std::is_arithmetic_v<T>> >
static constexpr T negative_one = [](){
return static_cast<T>(-1);
};
Это очень тривиальная функция и концепция, но компилятор хочет пожаловаться, что аргумент по умолчанию не находится в конце списка аргументов... Как бы выглядело его правильное определение?
Вот как я бы его использовал:
{
int i = negative_one();
float f = negative_one<float>();
}