Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Argumen Templat Disimpulkan Secara Automatik dalam C Menggunakan `template`?

Bolehkah Argumen Templat Disimpulkan Secara Automatik dalam C Menggunakan `template`?

Susan Sarandon
Susan Sarandonasal
2024-11-05 02:43:01301semak imbas

Can Template Arguments Be Deduced Automatically in C   Using `template`?

Mengautomasikan Potongan Hujah Templat dengan templat

Soalan:

Boleh templat hujah diluluskan semasa masa penyusunan tanpa menyatakan jenisnya secara jelas? Contohnya, bukannya templat bolehkah kami menggunakan templat?

Jawapan:

Pendekatan yang disebutkan tidak boleh dilakukan dalam C . Alternatif terdekat melibatkan penggunaan makro:

<code class="cpp">#define AUTO_ARG(x) decltype(x), x

f.bar<AUTO_ARG(5)>();
f.bar<AUTO_ARG(&Baz::bang)>();</code>

Pendekatan alternatif ialah menggunakan fungsi penjana yang menyimpulkan hujah templat:

<code class="cpp">template <typename T>
struct foo {
    foo(const T&amp;) {} // do whatever
};

template <typename T>
foo<T> make_foo(const T&amp; x) {
    return foo<T>(x);
}</code>

Sekarang, bukannya menulis:

<code class="cpp">foo<int>(5);</code>

Kami hanya boleh menulis:

<code class="cpp">make_foo(5);</code>

Kaedah ini mengautomasikan potongan hujah templat, menyediakan cara yang lebih mudah untuk meluluskan hujah.

Atas ialah kandungan terperinci Bolehkah Argumen Templat Disimpulkan Secara Automatik dalam C Menggunakan `template`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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