Masalah:
C 20 feature std::source_location menyediakan maklumat konteks semasa panggilan fungsi. Walau bagaimanapun, penyepaduannya dengan fungsi templat variadic menimbulkan cabaran kerana kedudukan tetap argumen variadic.
Percubaan Gagal:
Penyelesaian menggunakan Panduan Potongan:
Untuk menyelesaikan isu ini , panduan potongan boleh digunakan:
<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>
Dengan menyatakan panduan potongan, pengkompil boleh membuat kesimpulan jenis yang betul untuk fungsi templat variadic.
Ujian:
<code class="cpp">int main() { debug(5, 'A', 3.14f, "foo"); }</code>
Kod ini berjaya menyusun dan mencetak argumen yang disediakan bersama-sama dengan lokasi sumbernya.
DEMO: [pautan disediakan dalam soalan asal]
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan `std::source_location` dengan Fungsi Templat Variadik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!