Senarai Parameter Templat Berlebihan dalam Pembina Templat Kelas dalam C 20
Dalam C , sintaks untuk mengisytiharkan pembina dalam templat kelas telah mengalami perubahan dalam C 20. Sebelum ini, kod borang berikut telah dipertimbangkan terbentuk dengan baik:
template<typename T> struct S { S<T>(); };
Walaupun terdapat lebihan
error: expected unqualified-id before ')' token 3 | S<T>(); ^
Walaupun ralat ini tidak ditemui dalam GCC10.2 atau Clang dengan -std= c 20, ia berpunca daripada perubahan asas yang diperkenalkan dalam C 20.
Menurut C 20 bahagian keserasian, penggunaan simple-template-id sebagai declarator-id untuk pembina atau pemusnah tidak lagi sah. Langkah ini bertujuan untuk menghapuskan potensi lebihan yang terdedah kepada ralat.
Perkataan baharu dalam bahagian [class.ctor] C 20 menentukan bahawa bagi pembina dalam pengisytiharan ahli dalam templat kelas, nama kelas yang disuntik hendaklah digunakan sebaliknya :
template<typename T> struct S { S(); // Use injected-class-name };
Dalam contoh ini, S mewakili nama kelas yang disuntik untuk templat kelas dalam. Akibatnya, lebihan
Atas ialah kandungan terperinci Mengapa Senarai Parameter Templat Berlebihan dalam Pembina Templat Kelas C 20 Kini Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!