問題タブ [callable-object]
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.
c++ - テンプレート引数が特定の署名を持つ呼び出し可能かどうかを確認する方法
基本的に、私が達成したいのは、登録された callable (関数、ラムダ、call 演算子を含む構造体) が正しい署名を持っていることをコンパイル時に検証することです (エラー メッセージが表示される可能性があります)。記入例(static_assert
記入欄の内容):
templates - オブジェクトの呼び出しシグネチャに基づいて、呼び出し可能なオブジェクトをパラメーターとして関数をオーバーロードするにはどうすればよいですか?
たとえば、次のコードがあるとします。
の 2 つのバージョンを書きたいと思います。1fun
つは A の署名を持つオブジェクトで動作し、もう 1 つは B の署名を持つオブジェクトで動作します。
そして、私はこの動作を期待しています
もちろん、前の例では、コンパイル時にテンプレートの再定義エラーがスローされます。
B が代わりに関数である場合、次のfun
ように書き直すことができます。
fun
しかし、関数と呼び出し可能なオブジェクトの両方で作業したいと考えています。std::bind
またはを使用std::function
すると問題が解決する可能性がありますが、私は C++98 を使用しており、それらは C++11 で導入されました。