是否可以为 c++17 函数推导模板值(而非类型)?
函数foo:
template<int I>
int foo()
{
return (I);
}
可以通过以下方式调用:
foo<5>();
并将返回 5。
模板类型可以通过函数参数的类型推导出来。是否有可能以某种方式对模板值做同样的事情?例如:
template<int I = x>
int bar(const int x)
{
return (I);
}
这显然行不通(因为对于一个 x
来说,在它的声明之前是必需的),但是可能有一些 C++17 技巧允许这样做吗?
我想用它来设置常量表达式函数参数。
最佳答案
你想要的只能通过(ab)使用整数推导的类型推导来完成。观察:
template<int x>
struct integer_value {};
template<int x>
void test(integer_value<x> val)
{
//x can be used here.
}
当然,您必须使用 test(integer_value<4>{})
调用它或类似的东西。
关于c++ - 模板非类型参数推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50479415/