в C++20, на предыдущие стандарты?
Откуда возник вопрос: https://stackoverflow.com/questions/69320918/why-does-taking-istream-to-a-temporary-stringstream-works-but-not-when-tak
Кажется, что код из вопроса корректен только начиная с C++20: до C++11 у нас вообще нет мув-семантики, в C++17 там слева ещё требуется istream&&.
Но на cppreference это не так давно убрали и сказали, что поведение одинаковое аж с C++11 — это вообще законно? https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_istream/operator_gtgt2&diff=116602&oldid=106958
А есть объяснение как временный объект stringstream биндится к не конст ссылке istream?
Да. Никак. Там есть специальная перегрузка operator>> с левым rvalue-аргументом, которая перенаправляет, как раз Brian Bi на SO отвечает. И вот она то ли разная во всех стандартах, то ли, после принятия LWG1203 в 2020, стала одинаковой во всех стандартах — я вот этого не понимаю.
А, вот оно что, спасибо
Переформулирую вопрос: может ли вообще изменяться уже опубликованный стандарт? Скажем, каким-нибудь Defect Report. Или они только говорят, что надо в очередной ревизии стандарта что-то подкорректировать?
Может, но это отдельно пишется. Например исправления std::format бэкпортируют из С++23 в С++20
Я так понял, что речь про вот это: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2216r3.html#polls А есть ли где-нибудь список таких портированных штук? Я вижу, что по опросам получилось "Strong consensus for DR against C++20", но на странице https://cplusplus.github.io/LWG/lwg-defects.html отдельного LWG не вижу
>Changed the following 280 issues to C++20 (from WP) я думаю, это он и есть
Ну, они там явно перечислены и все на этой странице есть, у каждого свой номер вида LWG1234. Но поиск 2216 или каких-то цитат из секции "wording" P2216R2 ничего не находит.
я ничего не нахожу на этот счет если это как-то поможет, то вот коммит, где эту бумагу добавили в стандарт https://github.com/cplusplus/draft/commit/cfc0da32db0c02758e2e027980fff0f12625b542
Да, в ближайший стандарт понятно. Мне интересно, как это влияет на будущие. Пока спросил на SO, надеюсь, формулировки достаточно ясные: https://stackoverflow.com/questions/69325059/was-lwg1203-more-useful-rvalue-stream-insertion-retroactively-applied-to-c11 https://stackoverflow.com/questions/69325106/is-there-a-list-of-all-changes-retroactively-applied-to-published-c-standards
Обсуждают сегодня