Можно ли определить оператор сравнения по умолчанию для структуры C?C++

Программы на C++. Форум разработчиков
Anonymous
Можно ли определить оператор сравнения по умолчанию для структуры C?

Сообщение Anonymous »

Я хочу использовать структуру C () в моей программе на C++20, но я хочу иметь возможность сравнивать два экземпляра termios.
Поскольку сравнения по умолчанию нет, я попытался определите оператор сравнения по умолчанию:

Код: Выделить всё

bool operator == (const termios& lhs, const termios& rhs) = default;
Но я получаю сообщение об ошибке:

ошибка: по умолчанию 'booloperator==(const termios&, const termios&) ' не является другом 'termios'.

Определение оператора также не работает:

Код: Выделить всё

auto operator  (const termios& lhs, const termios& rhs) = default;
ошибка: используемый по умолчанию 'autooperator(const termios&, const termios&)' не является другом 'termios'

Ошибка одинакова для GCC 12.2 и clang-14.
Я всегда думал, что мы можем определить операторы сравнения, не являющиеся членами, без необходимость того, чтобы они были друг структуры (в конце концов, структура берется из заголовка C, и все ее члены являются общедоступными).
Есть ли способ сравнения по умолчанию без сравнение элементов по элементам (что сделает сравнение зависимым от членов структуры)?

Подробнее здесь: https://stackoverflow.com/questions/793 ... a-c-struct

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