Lambda 関数の単項演算子によるあいまいなオーバーロードを解決する
提供されたコード スニペット内:
最初のfoo への呼び出しがあいまいで、コンパイルに失敗します。このあいまいさは、ラムダ式が std::function
この曖昧さを解決するために、2 番目の呼び出しでラムダの前に単項演算子が使用されます。演算子は、ラムダ式を関数ポインタ型 void (*)() に変換します。これは 2 番目のオーバーロードと正確に一致します。
C 標準によると、
したがって、式 []() {} は void (*)() 関数ポインタになります。これは、2 番目のオーバーロードと明確に一致します。
回避するために、ラムダ式を関数ポインタ型に明示的にキャストすることもできることに注意することが重要です。曖昧さ:
以上が単項演算子は、引数としてラムダ式を使用して関数を呼び出すときのあいまいさをどのように解決しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。