自C ++ 20起,在[namespace.std]/7中引入了定制点的概念:
除了在名称空间std中或在名称空间std中的名称空间中,程序可以为任何指定为customization point]的库函数模板提供重载,只要(a)重载的声明取决于至少一个用户定义的类型和(b)重载满足自定义点的标准库要求。 [注意:这允许对定制点的调用(qualified或unqualified)调用给定参数的最适当的重载。 —尾注]
此段是否意味着如果
std::f
是自定义点,f
将自动为std::f
调用最合适的重载?
一个真实的例子是std::swap
,它是指定的定制点。这是否意味着从C ++ 20开始,我们可以直接编写std::swap
而不是std::swap(a, b)
?
自C ++ 20起,在[namespace.std] / 7中引入了自定义点的概念:除了名称空间std或名称空间std中的名称空间之外,程序可能会为任何...提供重载...
一个真实的例子是
using std::swap; swap(a, b);
,它是指定的定制点。这是否意味着从C ++ 20开始,我们可以直接编写using std::swap; swap(a, b);
而不是使用std::swap
?