std::(定制点)是否调用最适当的重载?

问题描述 投票:2回答:1

自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中的名称空间之外,程序可能会为任何...提供重载...

c++ overloading c++-standard-library c++20 argument-dependent-lookup
1个回答
2
投票

一个真实的例子是using std::swap; swap(a, b);,它是指定的定制点。这是否意味着从C ++ 20开始,我们可以直接编写using std::swap; swap(a, b);而不是使用std::swap

© www.soinside.com 2019 - 2024. All rights reserved.