`static_cast` с `явным оператором bool`C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 `static_cast` с `явным оператором bool`

Сообщение Anonymous »

Учитывайте следующее:

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

struct C {
explicit operator bool() const {
return true;
}
};

int main() {

C c;

auto b = static_cast(c);

return 0;

}
Clang++ 18 компилируется нормально, G++ 14 говорит:

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

test.cpp: In function ‘int main()’:
test.cpp:12:14: error: invalid ‘static_cast’ from type ‘C’ to type ‘const bool&’
12 |     auto b = static_cast(c);
|              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
См. в Compiler Explorer.
Эта несовместимость возникла в моем коде, потому что тестовые макросы Catch2 используют такой тип static_cast под капотом и он терпит неудачу с пользовательским типом с явным оператором bool, но только с G++.
Мне кажется, что, поскольку временный тип bool может быть привязан к константе bool &, это должно быть разрешено.
Кто здесь, следует стандарту?

Подробнее здесь: https://stackoverflow.com/questions/787 ... rator-bool
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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