C ++ 20允许使用auto
函数参数类型。
它是否还允许将函数参数类型auto
用作模板参数占位符(不相似,但以C ++ 17 template <auto>的精神)。
因此,以下代码是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;
}
它确实可以编译,并且可以很好地与实验性GCC实现概念配合使用。
它是C ++ 20的合法语法吗?
谢谢@DavisHerring-我已纠正措辞
—
Amir Kirsh
auto
直接转换为templateizedtypename XYZ
,这将强烈暗示它是合法的语法。整洁。