Информация об изменениях

Сообщение Re[4]: Reference binding in C++23 - bug of gcc? от 31.01.2025 21:51

Изменено 31.01.2025 21:52 rg45

Re[4]: Reference binding in C++23 - bug of gcc?
Здравствуйте, cserg, Вы писали:

C>Да, пункт 5.1 как раз ваш случай, код который ломается из-за изменений:

C>
C>std::istream& getline(std::istream&& in, ~~~) {
C>    ~~~
C>    return in;
C>}
C>// was changed to

C>std::istream& getline(std::istream&& in, ~~~) {
C>    ~~~
C>    return static_cast<std::istream&>(in);
C>}
C>


А вообще, выглядит очень костыльно эта фича, с моей точки зрения. Никто не будет выписывать эти статик касты, а будут писать вот так:

    return *&in;


Они ведь не собираются отменять правило "named rvalue references are treated as lvalues", как я понял. Так кого и от чего они спасают этими костылями? Лучше бы оставили более строгие и менее противоречивые правила.
Re[4]: Reference binding in C++23 - bug of gcc?
Здравствуйте, cserg, Вы писали:

C>Да, пункт 5.1 как раз ваш случай, код который ломается из-за изменений:

C>
C>std::istream& getline(std::istream&& in, ~~~) {
C>    ~~~
C>    return in;
C>}
C>// was changed to

C>std::istream& getline(std::istream&& in, ~~~) {
C>    ~~~
C>    return static_cast<std::istream&>(in);
C>}
C>


А вообще, выглядит очень костыльно эта "фича", с моей точки зрения. Никто не будет выписывать эти статик касты, а будут писать вот так:

    return *&in;


Они ведь не собираются отменять правило "named rvalue references are treated as lvalues", как я понял. Так кого и от чего они спасают этими костылями? Лучше бы оставили более строгие и менее противоречивые правила.