Какие правила определяют, является ли объект тривиально копируемым

С введением C ++ 11,тривиально копируемость получил весьма актуальным. Наиболее заметно использование 'std :: atomic'. Основы довольно просты. Классfoo легко копируется, если:

foo* src = new foo();
foo* dest = malloc(sizeof(foo));
memcpy(dest, src, sizeof(foo));

Имеет тот же эффект, что и:

foo* src = new foo();
foo* dest = new foo(src);

Таким образом, объект, в котором копирование памяти будет иметь тот же эффект, что и конструктор копирования. Однако здесь, конечно, есть подвох. Там не только копировать конструкторы. Но также перемещайте конструкторы, перемещайте операторы присваивания. И т.п.

станд :: is_trivially_copyable может использоваться для проверки возможности копирования объекта. Таким образом, методом проб и ошибок можно сделать объект легко копируемым.

Но, конечно, четко определенный набор правил будет немного приятнее :). Итак, моя просьба.

Ответы на вопрос(1)

Ваш ответ на вопрос