は、次のコードを考えてみましょう:私は2つの質問持って呼び出すフリー関数を渡しますか?
void f(int) {std::cout << "void f(int)" << std::endl;}
void f(double) {std::cout << "void f(double)" << std::endl;}
void f(int*) {std::cout << "void f(int*)" << std::endl;}
std::invoke(f, 3);
:free関数(ないファンクタ)で
- を、それが
f
の全体の過負荷セットを渡し、invoke
は右を選択させることが可能です1? (ヘルパークラスなしで、それは純粋な言語の質問です) void f(int)
をinvoke
に渡す方法はありませんか?コンパイラは、それが最善であるf
のどの過負荷を把握するinvoke
の実装を見ていないstd::invoke(f, 3);
を解析するとき
はい、適切なオーバーロードを選択するにはstatic_cast <>を使用する必要があります - https://stackoverflow.com/questions/24874478/use-stdbind-with-overloaded-functions – Slava
@Vincent Try std: :(f、3)を呼び出します。 –