170 похожих чатов

Привет. Подскажите пожалуйста, это не баг? https://godbolt.org/z/7YEqYP9Gf

22 ответов

21 просмотр

ошибка одна и та же во всех 3 основных компиляторах :)

добавь перегрузку get для X&&

@mostvexingparsse верно написал про перегрузку get<> для && https://timsong-cpp.github.io/cppwp/n4868/dcl.struct.bind#4 In either case, e is an lvalue if the type of the entity e is an lvalue reference and an xvalue otherwise.

Anatoliy-Tomilov [Russia] Автор вопроса
Denis
@mostvexingparsse верно написал про перегрузку get...

это понятно, что workaround. Но какие qualifiers discarded? Явно же бредовое сообщение об ошибке. Почему const float не конструируется из float&?

Anatoliy Tomilov [Russia]
это понятно, что workaround. Но какие qualifiers ...

Это не воркэраунд, как я понимаю. a и b в вашем примере — это элиасы не для полей x (который lvalue), а для полей копии x, в стандарте называемой e (и которая в этом случае xvalue).

Anatoliy-Tomilov [Russia] Автор вопроса
Denis
Это не воркэраунд, как я понимаю. a и b в вашем пр...

т.е. это должно сломаться, если у меня данные-члены non-copyable?

Anatoliy Tomilov [Russia]
это понятно, что workaround. Но какие qualifiers ...

Вот как цппинсайт интерпретирует AST кланга: https://cppinsights.io/s/1c92b80e

Минимизированный пример: const std::tuple<int, int> t; auto [a, b] = t;

Alexander Karaev
Минимизированный пример: const std::tuple<int, int...

И вот так получится #include <tuple> int main() { const std::tuple<int, int> t = std::tuple<int, int>(); std::tuple<int, int> __t6 = std::tuple<int, int>(t); int && a = std::get<0UL>(static_cast<std::tuple<int, int> &&>(__t6)); int && b = std::get<1UL>(static_cast<std::tuple<int, int> &&>(__t6)); return 0; }

Anatoliy-Tomilov [Russia] Автор вопроса

чёт не соответствует сообщению об ошибке. Нет таких слов в нём

Anatoliy Tomilov [Russia]
чёт не соответствует сообщению об ошибке. Нет таки...

Есть, просто неочевидно сформулировано. binding reference of type '...' {aka 'double&'} to 'const double' discards qualifiers

Anatoliy-Tomilov [Russia] Автор вопроса
Denis
каких таких?

const double = double & — (псевдокод) вот такую ситуацию описывает сообщение об ошибке

сообщение описывает вот такую ситуацию: https://godbolt.org/z/crxr1hjoj

Anatoliy-Tomilov [Russia] Автор вопроса
Denis
сообщение описывает вот такую ситуацию: https://go...

да уж. Путница. Тем более это не соответствует cppinsight выкладкам(

Anatoliy-Tomilov [Russia] Автор вопроса
Anatoliy Tomilov [Russia]
там double&& a = get...

Тип a зависит от value category инициализатора, которая в свою очередь определяется тем, какая перегрузка get<> выбрана. А это в свою очередь зависит от value category e (xvalue, если у вас auto [a, b], а не auto& [a, b], например) и от того, какие перегрузки есть (у вас нет для &&, но есть для const&). В том же пункте стандарта: Given the type Ti designated by std​::​tuple_­element<i, E>​::​type and the type Ui designated by either Ti& or Ti&&, where Ui is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names ri as follows: S Ui ri = initializer ;

Denis
И вот так получится #include <tuple> int main() ...

а как код помечать что это именно с++?

Anatoliy Tomilov [Russia]
там double&& a = get...

Зачем ты постоянно пытаешься сохранить ссылки на временный объект? Может всё же если копируешь, то по значению?

Anatoliy-Tomilov [Russia] Автор вопроса

Похожие вопросы

Обсуждают сегодня

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
А что ты вообще делаешь ?
Yesgoter
13
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
5
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
18
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
Подскажите, почему в правом коде с1 дополняется до 8байт, а не до 4?
Sergey
9
что это и почему оно? executor.start_polling(bot, skip_updates=True, on_startup=on_startup, File "/usr/local/lib/python3.10/dist-packages/aiogram/utils/executor.py", line 4...
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
2
Карта сайта