LINUX.ORG.RU

История изменений

Исправление utf8nowhere, (текущая версия) :

Если использовать по старинке std’шный swap() через using namespace std - то неоднозначностей нет.

Потому что когда находится твой swap и std::swap — оба функции. Несколько функций (да даже одна) образуют overload set. Это ОК.

Когда находится твой swap и std::ranges::...::swap, то второе — это переменная. Тогда lookup is ambiguous.

Post-P1787 [basic.lookup.general]/1:

If the declarations found by name lookup all denote functions or function templates, the declarations are said to form an overload set. Otherwise, if the declarations found by name lookup do not all denote the same entity, they are ambiguous and the program is ill-formed.

Исправление utf8nowhere, :

Если использовать по старинке std’шный swap() через using namespace std - то неоднозначностей нет.

Потому что когда находится твой swap и std::swap — оба функции. Несколько функций (да даже одна) образуют overload set. Это ОК.

Когда находится твой swap и std::ranges::...::swap, то второе — это переменная. Тогда lookup is ambiguous.

Исходная версия utf8nowhere, :

Если использовать по старинке std’шный swap() через using namespace std - то неоднозначностей нет.

Потому что когда находится твой swap и std::swap это функции. Несколько функций (да даже одна) образуют overload set. Это ОК.

Когда находится твой swap и std::ranges::...::swap, то второй — это переменная. И lookup is ambiguous.