C ++ 20 memungkinkan penggunaan auto
untuk tipe parameter fungsi.
Apakah itu juga memungkinkan penggunaan auto
sebagai placeholder argumen templat (tidak serupa, tetapi dalam semangat C ++ 17 templat <auto> dengan cara) untuk tipe parameter fungsi?
Jadi kode berikut, pra C ++ 20:
template<typename First, typename Second>
void printPair(const std::pair<First, Second>& p) {
std::cout << p.first << ", " << p.second;
}
Dapat ditulis sebagai:
void printPair(const std::pair<auto, auto>& p) {
std::cout << p.first << ", " << p.second;
}
Itu mengkompilasi dan bekerja dengan baik dengan implementasi GCC eksperimental untuk konsep.
Apakah ini sintaks yang sah dengan C ++ 20?
auto
diperbolehkan [](const std::pair<auto, auto>& p){}
(apakah dengan -std=c++2a
atau -std=c++17
).
auto
langsung diterjemahkan menjadi templatisedtypename XYZ
, yang akan sangat menyiratkan bahwa itu adalah sintaks yang sah. Rapi .