Означает ли тривиальное копирование тривиальное перемещение?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Означает ли тривиальное копирование тривиальное перемещение?

Сообщение Anonymous »

C++26 представит std::is_trivyly_relocatable_v, и автор предложения утверждает: Тривиально копируемое подразумевает тривиально перемещаемое.
Однако я думаю, что это утверждение не всегда может быть верным, особенно в случае, если член-указатель указывает на другой член того же объекта.
Рассмотрим следующий код:

Код: Выделить всё

struct A {
int  n{};
int* pn{};
};

static_assert(std::is_trivially_copyable_v); // true

int main() {
auto a = A{};
a.n    = 1;
a.pn   = &a.n;

auto b = A{};
std::memcpy(&b, &a, sizeof(a));
// Now, b.pn points to a.n, rather than b.n.
// So, A should not be regarded as trivially relocatable.
}
Мой вопрос:
Означает ли тривиальное копирование тривиальное перемещение?

Подробнее здесь: https://stackoverflow.com/questions/796 ... elocatable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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