是否可以推断出 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>{})
或类似的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)