Явные несоответствия функций-членов между разными компиляторамиC++

Программы на C++. Форум разработчиков
Anonymous
Явные несоответствия функций-членов между разными компиляторами

Сообщение Anonymous »

Я написал следующую программу на C++23. Здесь я перегрузил функции-члены. Но во всех случаях разные компиляторы дают разные результаты, как показано ниже в комментарии. Как вы можете видеть, ниже у меня есть три случая. Демо.
struct C {
void j(this const C);
void j() const ; //#1: Clang:Nope while gcc and msvc:Ok

// void f(this C );
// void f(C); //#2: EDG: Nope while Clang,gcc and msvc:OK

// void k(this const C&);
// void k() const ; //#3: EDG: OK while Clang, gcc and msvc:Nope

};


Я хочу знать, каково стандартное соответствующее поведение для этих трех случаев.
#1 принимается gcc и msvc, но отклоняется clang, говоря:

:3:10: error: class member cannot be redeclared
3 | void j() const ; //#1: Clang:Nope while gcc and msvc:Ok
| ^
:2:10: note: previous declaration is here
2 | void j(this const C);
|


Подробнее здесь: https://stackoverflow.com/questions/787 ... -compilers

Вернуться в «C++»