Вопрос о поведении unique_ptr при конкретном использовании std::moveC++

Программы на C++. Форум разработчиков
Anonymous
Вопрос о поведении unique_ptr при конкретном использовании std::move

Сообщение Anonymous »


Является ли следующий код на C++20 четко определенным или его поведение неопределенно в зависимости от операции упорядочивания?

#include #include использование пространства имен std; структура А { А(int i) : a_(i) {} int Foo(unique_ptr) { return a_; } интервал а_ = 0; }; интервал основной() { auto a_ptr = make_unique(10); cout Foo(std::move(a_ptr)) b (a перед b).

Означает ли это, что в данном случае a_ptr->Foo(std::move(a_ptr)) должен быть упорядочен как:

A* a_ptr_raw = a_ptr.operator->(); a_ptr_raw->Foo(std::move(a_ptr)); что сделает это более четким.

Вернуться в «C++»