C++ is_trivially_copyable 检查

发布于 2024-10-17 11:38:50 字数 112 浏览 8 评论 0原文

如何检查 C++ 类型是否可简单复制?我有一个类,它使用指定模板类型 T 的 memcpy 和 memcmp 函数,我想对使用 memcpy 复制不安全的类型触发断言。有什么办法可以做到这一点(按照现有标准)?

How to check whether or not C++ type is trivially copyable? I have a class, which uses memcpy and memcmp functions with specified template type T and I would like to fire assert for types, that are not safe to copy with memcpy. Is there any way to do that (with existing standard)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

今天小雨转甜 2024-10-24 11:38:50

不,在 C++98/C++03 中不可能。类似这样的事情就是 添加到 C++0x 的原因。 中的一些功能可以在 C++03 中实现,通常使用 SFINAE 原理,但有几个功能,包括 std::is_trivially_copyable,只需要内置编译器支持。

No, not possible in C++98/C++03. Things like this are why <type_traits> was added to C++0x. Some of the features from <type_traits> can be implemented in C++03, often using the SFINAE principle, but several, including std::is_trivially_copyable<T>, will simply require built-in compiler support.

萝莉病 2024-10-24 11:38:50

boost 中有可用于此目的的类型特征。

然而,你是在​​浪费时间——如果类型可以轻易复制的,那么对类型进行内存复制不会比优化器使用复制构造函数生成的速度快。只需使用复制构造函数即可。

There are type traits available for this in boost.

However, you're wasting your time- memcpying a type is not going to be faster than what your optimizer will produce with a copy constructor if the type is trivially copyable. Just use the copy constructor.

做个ˇ局外人 2024-10-24 11:38:50

最接近的是 boost:: is_pod<>​​

The closest thing is boost::is_pod<>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文