などの既存の Boost Phoenix (プレースホルダー) 引数_1
を使用して、配列/添え字演算子を使用できます。たとえば、次の抜粋では1
.
int arr[4] = {1,2,3,4};
std::cout << _1[0](arr) << std::endl;
ただし、独自のプレースホルダー引数を定義すると、次のようになります。
phoenix::actor<phoenix::expression::argument<1>::type> const my_1 = {{}};
ただし、飾らなくても問題なく動作します (次の出力は 7 です)。
std::cout << my_1(7) << std::endl;
(上記のように)添字演算子を使用しようとすると:
std::cout << my_1[0](arr) << std::endl;
多くのエラーが発生します。要約すると、G++ 4.7.2 では、テンプレート引数の推論が失敗します。Clang 3.2 では、関数は配列型を返せないと言われました。
Phoenix プレースホルダー引数で添字演算子をサポートするにはどうすればよいですか?