【发布时间】:2021-02-03 00:00:23
【问题描述】:
我正在尝试编写一个始终返回-1 的通用函数。我希望模板参数列表默认为int。我正在尝试使用std::enable_if 或std::enable_if_t 通过使用std::is_arithmetic 或std::is_arithmetic_v 来测试T 类型是否是有效的算术类型。我遇到语法问题才能使其正确编译。这是我的 lambda 的样子:
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>();
}
【问题讨论】:
标签: c++ templates lambda c++17 default-arguments