戻り値の型をテンプレート仮引数にする

  • Boost.Phoenix-2EvalPolicyという概念があるんですが、戻り値の型がテンプレート仮引数になっている
    • 戻り値の型をユーザーが書かなくてよくなる (ソースが劇的にすっきりする)
    • ライブラリ側はこちらに注意
  • ちなみに以下のようなコードを本当に使っていた

[]struct[] []A[]
[]{[]
[]A[][]([][]int[] []x[][]) : [][]x[][]([][]x[][]) { }[]
[]int[] []x[][];[]
[]};[]