Перегрузка родительской функции-члена без квалификатора ref дочерней функцией-членом с квалификатором ref в C++ ⇐ C++
Перегрузка родительской функции-члена без квалификатора ref дочерней функцией-членом с квалификатором ref в C++
В C++ невозможно перегрузить в одном классе функцию-член с квалификатором ref функцией-членом без квалификатора ref. Но в то же время можно унаследовать одну функцию-член от родительского класса и перегрузить ее в дочернем классе, как в примере:
struct A { недействительный е() {} //void f() & {} //ошибка перегрузки везде }; структура Б: А { используя A::f; void f() & {} // везде ОК }; интервал основной() { Б б; б.ф(); // ок только в GCC } Только во время вызова f Clang жалуется, что вызов функции-члена 'f' неоднозначен. Но GCC принимает программу без ошибок, демо: https://gcc.godbolt.org/z/5zzbWcs97
Какой компилятор здесь?
В C++ невозможно перегрузить в одном классе функцию-член с квалификатором ref функцией-членом без квалификатора ref. Но в то же время можно унаследовать одну функцию-член от родительского класса и перегрузить ее в дочернем классе, как в примере:
struct A { недействительный е() {} //void f() & {} //ошибка перегрузки везде }; структура Б: А { используя A::f; void f() & {} // везде ОК }; интервал основной() { Б б; б.ф(); // ок только в GCC } Только во время вызова f Clang жалуется, что вызов функции-члена 'f' неоднозначен. Но GCC принимает программу без ошибок, демо: https://gcc.godbolt.org/z/5zzbWcs97
Какой компилятор здесь?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение