TriviallyCopyableでないオブジェクトに使うと未定義動作になるので使ってはいけない。
使う場合はstd::is_trivially_copyable_vで未定義動作にならない型なのかをチェックしてから使うのが吉。
https://cpprefjp.github.io/reference/type_traits/is_trivially_copyable.html
class MyClass {
// ...
};
MyClass hoge;
MyClass mosa;
// memcpyを利用する前に型がTriviallyCopyableかのチェックを挿入する
static_assert(std::is_trivially_copyable_v<MyClass>);
std::memcpy(&hoge, &mosa, sizeof(MyClass));
コメントを残す