Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Anda Boleh Menggunakan `std::source_location` dengan Fungsi Templat Variadik dalam C 20?
Mengatasi Halangan dalam Menggunakan std::source_location dengan Fungsi Templat Variadik
Fungsi templat variadik, ciri yang kuat dalam C 20, membolehkan pengendalian bilangan hujah yang sewenang-wenangnya. Walau bagaimanapun, menyepadukan std::source_location, satu cara untuk menangkap maklumat konteks panggilan, dengan fungsi ini memberikan cabaran.
Perlanggaran dengan Parameter Variadik
Parameter Variadik mesti ada pada akhir tandatangan fungsi, menimbulkan sekatan jalan apabila memasukkan std::source_location.
Penyelesaian 1: Melaksanakan Panduan Potongan
Isu ini boleh dielakkan dengan memperkenalkan panduan potongan yang mengubah sintaks panggilan:
<code class="cpp">template <typename... Ts> struct debug { debug(Ts&&... ts, const std::source_location& loc = std::source_location::current()); }; template <typename... Ts> debug(Ts&&...) -> debug<Ts...>;</code>
Dalam persediaan ini, tandatangan fungsi kekal tidak berubah, manakala panduan potongan merapatkan jurang:
<code class="cpp">int main() { debug(5, 'A', 3.14f, "foo"); // Call converted to debug<int, char, float, const char*> }</code>
Penyelesaian ini mengekalkan faedah daripada std::source_location dan memastikan sintaks yang lancar untuk fungsi templat variadic.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menggunakan `std::source_location` dengan Fungsi Templat Variadik dalam C 20?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!