C 11 で関数エイリアスを作成するには?

Patricia Arquette
リリース: 2024-10-24 05:37:02
オリジナル
601 人が閲覧しました

How to Create Function Aliases in C  11?

C 11 での関数のエイリアス

C 11 では、using ディレクティブを使用したクラスのエイリアスは簡単です。ただし、関数のエイリアスの作成はさらに困難であることがわかります。

問題:

次の名前空間と関数の宣言を考えてみましょう:

<code class="cpp">namespace bar {
    void f();
}</code>
ログイン後にコピー

エイリアスを試みていますg = bar::f; を使用した関数"f" は "bar" 名前空間の型ではないため、エラーが発生します。

完全転送によるクリーンなソリューション:

関数エイリアスを作成するには完全転送を使用できます:

<code class="cpp">template<typename... Args>
auto g(Args&&... args) -> decltype(f(std::forward<Args>(args)...)) {
    return f(std::forward<Args>(args)...);
}</code>
ログイン後にコピー

このソリューションでは、f がオー​​バーロードされている場合や関数テンプレートであっても、g がすべての引数を f に正しく転送することが保証されます。

エイリアスの定義:

エイリアス、または B は、物質 A の実体であり、A の使用法 (宣言や定義は含まない) に対してソース コード内で B を置き換えても、変更されていないコンパイル結果が得られることを保証します。 code.

例:

g エイリアスを定義した後、次のコードはエイリアスを介して f を呼び出します:

<code class="cpp">g(1, 2, 3); // Calls bar::f(1, 2, 3);</code>
ログイン後にコピー

以上がC 11 で関数エイリアスを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!