関数に渡されたコンパイル時の定数整数をテンプレート化された型にキャプチャしたいと思います。将来の目標は、-2*i + 3*k のような非常に単純な式 (コンパイル時定数 int と変数の合計) から式を作成する独自の (非常に限定された) 式テンプレートを作成することです。
私は非常にゆっくりと始めています。次のコードがあります。
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 パラメータのようなものはないことを読みました。
私が望むものを達成する方法はありますか?