組み込みの標準演算子は関数ポインターを持つことができますか?
C では、組み込み演算子の関数ポインターを直接参照することはできません。これらは実際には関数オブジェクトを表しません。 C 11 標準によれば、組み込み演算子はオーバーロード解決用に特別に設計されており、他の目的には使用できません。
制限の克服:
回避策これにより、標準ライブラリ (§20.8) で定義された関数オブジェクトを使用できるようになります。比較用のequal_toなどのこれらの関数オブジェクトは、operator()関数内の同等の演算子に分解されます。これらは、関数ポインターの有効な引数として機能します。
標準クラス演算子へのアクセス:
組み込み演算子には直接アクセスできませんが、標準ライブラリ演算子を次のように利用できます。関数ポインター。ただし、コンパイラをガイドするには、適切なテンプレート インスタンスを指定する必要があります。たとえば、 std::basic_string の演算子を使用する場合は、次のようにテンプレート タイプを明示的に指定する必要があります。
<code class="cpp">typedef std::basic_string<char> string_type; ... std::cout << test_function<string_type>(a, b, &std::operator+) << std::endl;</code>
結論:
組み込み演算子はその固有の役割により直接関数ポインターを持つことができませんが、標準ライブラリによって提供される関数オブジェクトを通じて、または標準クラス演算子に必要なテンプレート インスタンスを指定することによって、その機能にアクセスできます。
以上がC の組み込み演算子で関数ポインターを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。