問題タブ [arity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
117 参照

c++ - ラムダ アリティに基づく特殊化関数テンプレート

引数として渡すラムダのアリティに基づいて、テンプレート化された関数を特殊化しようとしています。これは私が解決策として思いついたものです:

よりエレガントな方法でこれを達成する方法はありますか? 私はこれを見てきました:ジェネリックラムダのアリティ

ただし、最新のソリューション (florestan の) はすべての引数を に変換するaribtrary_tため、各ラムダ内でそれらをキャストし直す必要がありますが、これは理想的ではありません。理想的には、テンプレートhigherOrderFun化されたものを SFINAE で直接特化したかったのですが、それを実現するためにヘルパー クラスを使用しています。もっと簡単な方法はありますか?たとえばhigherOrderFun、クラスに依存せずにSFINAE を直接適用するにはhelper? これの要点は、andに変更higherOrderFunする必要はなく、コンパイラにラムダと指定された引数 ( ) から正しい特殊化を推測させることです。higherOrderFun2higherOrderFun3const T& a

関数への引数の型についても気にしないことを言及する必要があります-それらの数についてだけです。したがって、可能であれば私の例で変更したでしょうdecltype(a.someVal())(auto明示的に型を定​​義することを回避する方法があるかもしれません? )。