Позволяет ли текущий черновик сформировать набор перегрузки, состоящий из двух объявлений нестатических членов, у одного из которых есть квалификатор ref.
В basic.scope#scope-3.3.1 говорится
обе объявляют функции с одним и тем же списком-тип-параметра, эквивалентными ([temp.over.link]) конечными требующими-предложениями (если есть, кроме указанных в [temp.friend]) и, если оба являются нестатическими членами , одинаковые cv-квалификаторы (если есть) и ref-qualifier (если они есть у обоих)
Вышеупомянутое правило можно понять так: для двух нестатических функций-членов с одним и тем же списком типов-параметров, если у кого-то есть квалификаторы cv, тогда оба объявления должны иметь одинаковые квалификаторы cv; если оба объявления имеют квалификатор ref, они должны иметь один и тот же квалификатор ref. В противном случае они не соответствуют.
struct A{
void show(); //#1
void show() const &; //#2
};
В этом фрагменте: соответствует ли №1 №2? Поскольку № 2 имеет cv-квалификатор, а № 1 его нет, даже если условие наличия такого же
1 ответ
Это изменение было непреднамеренным результатом более ортогональной формулировки правил , но поскольку такая ортогональность допускает несколько дополнительных значимых наборов перегрузки, не было никакой спешки, чтобы «исправить» это. В частности, это может хорошо работать с предложением о выводе
this
это в настоящее время рассматривается.