Сообщение Re[94]: Когда это наконец станет defined behavior? от 21.08.2023 13:04
Изменено 21.08.2023 13:05 so5team
Re[94]: Когда это наконец станет defined behavior?
Здравствуйте, σ, Вы писали:
S>>Оно понятно, что в C++23 появился std::start_lifetime_as, посредством которого можно сделать:
S>>
S>>Но в этом случае мы, по сути имеем лишь константный указатель на неконстантный объект.
rly
σ>std::start_lifetime_as<const T> создаёт объект
Создает? Да ладно!
Он, вроде бы, к созданию объекта чуть меньше, чем никак. Это всего лишь указание компилятору считать полученный указатель валидным указателем на объект, время жизни которого было начато вне поля зрения компилятора.
S>>Оно понятно, что в C++23 появился std::start_lifetime_as, посредством которого можно сделать:
S>>
σ>alignas(T) std::byte buffer[sizeof(T)];
σ>read_some_data(buffer);
σ>const T * ptr_to_immutable_value = std::start_lifetime_as<const T>(buffer);
σ>S>>Но в этом случае мы, по сути имеем лишь константный указатель на неконстантный объект.
rly
σ>std::start_lifetime_as<const T> создаёт объект
Создает? Да ладно!
Он, вроде бы, к созданию объекта чуть меньше, чем никак. Это всего лишь указание компилятору считать полученный указатель валидным указателем на объект, время жизни которого было начато вне поля зрения компилятора.
Re[94]: Когда это наконец станет defined behavior?
Здравствуйте, σ, Вы писали:
S>>Оно понятно, что в C++23 появился std::start_lifetime_as, посредством которого можно сделать:
S>>
S>>Но в этом случае мы, по сути имеем лишь константный указатель на неконстантный объект.
σ>std::start_lifetime_as<const T> создаёт объект
Создает? Да ладно!
Он, вроде бы, к созданию объекта чуть меньше, чем никак. Это всего лишь указание компилятору считать полученный указатель валидным указателем на объект, время жизни которого было начато вне поля зрения компилятора.
S>>Оно понятно, что в C++23 появился std::start_lifetime_as, посредством которого можно сделать:
S>>
σ>alignas(T) std::byte buffer[sizeof(T)];
σ>read_some_data(buffer);
σ>const T * ptr_to_immutable_value = std::start_lifetime_as<const T>(buffer);
σ>S>>Но в этом случае мы, по сути имеем лишь константный указатель на неконстантный объект.
σ>std::start_lifetime_as<const T> создаёт объект
Создает? Да ладно!
Он, вроде бы, к созданию объекта чуть меньше, чем никак. Это всего лишь указание компилятору считать полученный указатель валидным указателем на объект, время жизни которого было начато вне поля зрения компилятора.