Сообщение Re[4]: Reference binding in C++23 - bug of gcc? от 31.01.2025 21:12
Изменено 31.01.2025 21:18 rg45
Re[4]: Reference binding in C++23 - bug of gcc?
Здравствуйте, Великий Реверс, Вы писали:
ВР>если получаем левую ссылку как аргумент, то вернуть можем ее только как левую
ВР>если получаем правую ссылку как аргумент, то вернуть можем ее только как правую
Это какие-то догмы, а не правила. Время жизни временного объекта гарантируется до конца полного выражения и rvalue-lvalue преобразование не противоречит ровным счётом ни чему. А пользу принести может.
Например, вывод в файл может быть сделан одним выражением:
ВР>если получаем левую ссылку как аргумент, то вернуть можем ее только как левую
ВР>если получаем правую ссылку как аргумент, то вернуть можем ее только как правую
Это какие-то догмы, а не правила. Время жизни временного объекта гарантируется до конца полного выражения и rvalue-lvalue преобразование не противоречит ровным счётом ни чему. А пользу принести может.
Например, вывод в файл может быть сделан одним выражением:
lvalue(std::ofstream("data.json")) << data;
Re[4]: Reference binding in C++23 - bug of gcc?
Здравствуйте, Великий Реверс, Вы писали:
ВР>если получаем левую ссылку как аргумент, то вернуть можем ее только как левую
ВР>если получаем правую ссылку как аргумент, то вернуть можем ее только как правую
Это какие-то догмы, а не правила. Время жизни временного объекта гарантируется до конца полного выражения и rvalue-lvalue преобразование не противоречит ровным счётом ни чему. А пользу принести может.
Например, вывод в файл может быть сделан одним выражением, без заведения дополнительных локальных переменных:
ВР>если получаем левую ссылку как аргумент, то вернуть можем ее только как левую
ВР>если получаем правую ссылку как аргумент, то вернуть можем ее только как правую
Это какие-то догмы, а не правила. Время жизни временного объекта гарантируется до конца полного выражения и rvalue-lvalue преобразование не противоречит ровным счётом ни чему. А пользу принести может.
Например, вывод в файл может быть сделан одним выражением, без заведения дополнительных локальных переменных:
lvalue(std::ofstream("data.json")) << data;