C ++ 20 дозволяє використовувати auto
для типу параметра параметр.
Чи дозволяє це також використовувати auto
як заповнювач аргументу шаблону (не схожий, але в дусі шаблону <a +> шаблону C ++ 17) ) для типу параметра функції?
Отже, наступний код, попередньо C ++ 20:
template<typename First, typename Second>
void printPair(const std::pair<First, Second>& p) {
std::cout << p.first << ", " << p.second;
}
Можна записати як:
void printPair(const std::pair<auto, auto>& p) {
std::cout << p.first << ", " << p.second;
}
Він компілює і працює чудово з експериментальною реалізацією ССЗ для концепцій.
Це законний синтаксис із C ++ 20?
auto
допускається в [](const std::pair<auto, auto>& p){}
(будь то з -std=c++2a
або -std=c++17
).
auto
безпосередньо перекладається на шаблонізовануtypename XYZ
, що сильно означає, що це законний синтаксис. Акуратний .