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

Const auto& foo() { return getSome(); } const auto& some =

foo();
int main() {}
где теперь будем хранить?

9 ответов

29 просмотров

ок, я понял, этот механизм будет работать только внутри одного translation unit, с раздельной компиляцией он работать не будет

Богдан
ок, я понял, этот механизм будет работать только в...

с другой стороны я и так планирую собирать проект одним translation unit (как минимум потому что у компилятора будет больше информации и он будет лучше оптимизировать код)

Богдан
с другой стороны я и так планирую собирать проект ...

Кстати мне нравится идея самособираемых проектов - когда в репозитории проекта хранится все необходимое для сборки этого проекта. Более того я считаю что компилятор вообще можно рассматривать как пользовательскую библиотеку (среди множества других используемых в проекте) - например есть главная точка входа - функция main а рядом будет лежать файлик типа build.cpp который инклудит компилятор например ligclang и собирает проект (и бинарник следующуей версии себя)

Alex.Z- Автор вопроса

Вы предлагаете внести это изменение в язык из-за проекта, который вы хотите собирать одним TU? Поправьте, если я ошибаюсь.

Alex.Z
Вы предлагаете внести это изменение в язык из-за п...

Никаких изменений в язык добавляться не будет - по стандарту dangling references это UB а я всего лишь хочу настроить этот ub внутри компилятора так чтобы оно работало чуть по другому. Да, для того чтобы оно работало через несколько translation units нужно будет менять abi но вроде как abi не является частью стандарта языка (поправьте если я ошибаюсь)

Богдан
Никаких изменений в язык добавляться не будет - по...

Вместо того, чтобы пытаться менять компилятор, лучше бы понять, почему такой код писать не надо.

Dmitriy [Отпуск]
А как именно менять ABI?))

А как сейчас в abi работает copy elision? Раньше это была внутренняя оптимизация компилятора но в стандарте с++17 появилось требование не вызвать конструктор и деструктор для промежуточных объектов в случае RVO и RNVO. Что происходит если эти функции находтся в нескольких traslation units? Наверняка в abi для этого добавили какие-то дополнительные слоты для скрытых указателей по которым создаются объекты (и передаются без копирования) иначе тогда компиляторы не смогли бы поддерживать этот стандарт

Богдан
А как сейчас в abi работает copy elision? Раньше э...

Как и раньше для передачи объектов, которые не умещаются в GPR: через неявный указатель в RCX/RDI

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Карта сайта