Can I memcpy() any type which has a trivial destructor?

前端 未结 4 1148
感情败类
感情败类 2021-02-20 17:02

I do realize is_pod is a sufficient condition for a type to be memcpy-able, but is has_trivial_destructor also sufficien

4条回答
  •  北荒
    北荒 (楼主)
    2021-02-20 17:26

    No. The requirement is that the type be trivially copyable (§3.9/2) which has a few more requirements, like the lack of a non-trivial copy constructor (§9/6).

    A trivially copyable class is a class that:

    — has no non-trivial copy constructors (12.8),

    — has no non-trivial move constructors (12.8),

    — has no non-trivial copy assignment operators (13.5.3, 12.8),

    — has no non-trivial move assignment operators (13.5.3, 12.8), and

    — has a trivial destructor (12.4).

    So you should use is_trivially_copyable instead.

提交回复
热议问题