время жизни которого будет ограниченно конструктором класса содержащего поля? Вообще у меня задача такая: есть класс который нужно создать до инициализации статиков (код рантайма, который запускает эту инициализацию под моим контролем), ему при конструировании нужно передать некоторую информацию (потому синглтон подходит плохо), также нельзя пользоваться кучей, поскольку класс, собственно, за неё отчасти и отвечает, вопрос в том как это сделать наименее костыльно
PS: забыл сказать, временный объект нужно передать всем полям, по ссылке, он по задумке не копируемый
передать параметр по значению? объект будет создан для конструктора и умрёт в конце него
Если временный объект, то это мув-конструктор. Ну или по значению. Интересно что "до инициализации статиков" - это дремучее С. Как Вы туда с++ засунули?
писать аллокатор на си оказалось не благодарным делом, у меня с мощью плюсов это со скрипом получается, так что да засунул
я же говорю код рантайма свой, могу до инициализации статиков вызывать любые функции
не могу, этот параметр — ссылка на аллокатор, один конструктор должен им воспользоваться, второй, может его мувнуть (точнее взять его состояние и что-то с ним сделать, но состояние можно описать как moved out), к вопросу, сейчас напишу постскриптум
Ого, а под что пишешь хоть?
Ну типо T(U())? Или как?
Ха-ха, под ОС хоть?
не так, скорее так: Foo() { Bar bar{}; construct_field1(bar); construct_field2(bar); }
вот именно, что нет
Да никак по сути? Чисто технически у тебя же {} уже и есть "время жизни" Можешь просто попилить код типо { { локально } глобально }
я ничего не понял
выложил код, для ознакомления с тем, что вообще происходит https://github.com/disba1ancer/kernel/blob/share-25052023/platform/x86_64/alloc.cpp#L891-L905
Обсуждают сегодня