Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta Alias Fungsi dalam 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>
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>
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>
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!