我想将传递给函数的编译时常量整数捕获为模板类型。未来的目标是推出我自己的(非常有限的)表达式模板,它从非常简单的表达式(编译时间常量 int 和变量的总和)创建表达式,例如:-2*i + 3*k。
我开始很慢,我有以下代码:
struct Foo {
Foo (int i) : i_(i) {}
int i_;
};
template <int N> int operator*(std::integral_constant<int, N> i, Foo j) {
return N * j.i_;
}
int main(void) {
std::integral_constant<int, 2> k;
int i = k * Foo(3);
cout << i << endl;
int j = 2 * Foo(3);
cout << j << endl;
}
2*Foo(3) 的模板参数推导失败。我已经读过函数没有 constexpr 参数之类的东西。
有没有办法完成我想要的?