ホームページ >バックエンド開発 >C++ >C の組み込み演算子で関数ポインターを使用できますか?

C の組み込み演算子で関数ポインターを使用できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-25 10:43:02675ブラウズ

Can You Use Function Pointers with Built-in Operators in C  ?

組み込みの標準演算子は関数ポインターを持つことができますか?

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, &amp;std::operator+) << std::endl;</code>

結論:

組み込み演算子はその固有の役割により直接関数ポインターを持つことができませんが、標準ライブラリによって提供される関数オブジェクトを通じて、または標準クラス演算子に必要なテンプレート インスタンスを指定することによって、その機能にアクセスできます。

以上がC の組み込み演算子で関数ポインターを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。