【发布时间】:2019-04-17 02:03:28
【问题描述】:
根据Concepts TS,虽然一个无约束的推导参数每次都会产生新的模板类型参数,但受约束的推导参数每个约束只产生一个模板类型参数:
[](auto a, auto b) // IS-A
[]<class ArgA, class ArgB>(ArgA a, ArgB b)
[](Constraint a, Constraint b) // IS-A
[]<Constraint Type>(Type a, Type b)
现在,P1141R1 被投票(参见Herb Sutter's Trip Report),它重新引入了用于约束自动的“形容词语法”的约束推导参数的简短语法:
void fun(Constraint auto a, Constraint auto b);
概念,“auto(包括Constraint auto)在参数列表中的出现告诉我们我们正在处理一个函数模板。”
但是,没有关于这种语法会产生多少种不同类型的信息。所以,问题是:对于两个具有相同约束(如上)的约束推导参数,是否存在具有一个类型参数的模板,或者由于auto关键字的存在而放宽了规则?
编辑:模板类型argument参数。
【问题讨论】:
标签: c++ template-meta-programming c++-concepts c++20