Bagaimana untuk Mencipta Alias ​​Fungsi dalam C 11?

Patricia Arquette
Lepaskan: 2024-10-24 05:37:02
asal
601 orang telah melayarinya

How to Create Function Aliases in C  11?

Fungsi Aliasing dalam C 11

Dalam C 11, mengalias kelas menggunakan arahan penggunaan adalah mudah. Walau bagaimanapun, mencipta alias untuk fungsi terbukti lebih mencabar.

Masalah:

Pertimbangkan ruang nama dan pengisytiharan fungsi berikut:

<code class="cpp">namespace bar {
    void f();
}</code>
Salin selepas log masuk

Mencuba menggunakan alias fungsi dengan menggunakan g = bar::f; akan mengakibatkan ralat, kerana "f" bukan jenis dalam ruang nama "bar".

Penyelesaian Bersih dengan Pemajuan Sempurna:

Untuk mencipta alias fungsi , pemajuan sempurna boleh digunakan:

<code class="cpp">template<typename... Args>
auto g(Args&&... args) -> decltype(f(std::forward<Args>(args)...)) {
    return f(std::forward<Args>(args)...);
}</code>
Salin selepas log masuk

Penyelesaian ini memastikan bahawa g memajukan semua hujah ke f dengan betul, walaupun f terlebih beban atau templat fungsi.

Takrif Alias :

Alias, atau B, ialah entiti bahan A yang memastikan bahawa sebarang penggantian B dalam kod sumber untuk sebarang penggunaan (tidak termasuk pengisytiharan atau takrifan) A akan mengakibatkan penyusunan yang tidak diubah. kod.

Contoh:

Selepas mentakrifkan alias g, kod berikut akan memanggil f melalui alias:

<code class="cpp">g(1, 2, 3); // Calls bar::f(1, 2, 3);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Alias ​​Fungsi dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!