- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如何检查 C++ 类型是否可平凡复制?我有一个类,它使用具有指定模板类型 T 的 memcpy 和 memcmp 函数,我想为使用 memcpy 复制不安全的类型触发断言。有什么办法可以做到这一点(使用现有标准)?
最佳答案
不,在 C++98/C++03 中是不可能的。像这样的事情就是为什么<type_traits>
被添加到 C++0x。 <type_traits>
中的一些功能可以在 C++03 中实现,通常使用 SFINAE 原理,但有几个,包括 std::is_trivially_copyable<T>
, 只需要内置的编译器支持。
关于C++ is_trivially_copyable 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4994388/
如何检查 C++ 类型是否可平凡复制?我有一个类,它使用具有指定模板类型 T 的 memcpy 和 memcmp 函数,我想为使用 memcpy 复制不安全的类型触发断言。有什么办法可以做到这一点(使
考虑到 cppreference 和当前的 c++ 工作草案,一个类在以下情况下是可简单复制的: 每个复制构造函数都是微不足道的或被删除的 每个移动构造函数都是微不足道的或已删除 每个复制赋值运算符都
C++ 标准(以及多个 SO answers )声明符合 is_trivially_copyable 的条件, 一个类型 T必须有: 一个默认的析构函数, 没有虚函数, 没有虚拟基类。 (这些不是唯一
我的 gcc 版本是 4.8.3 20140624。我可以使用 is_pod、is_trivial、is_standard_layout,但尝试 is_trivially_copyable 时失败、i
这些何时会给出不同的答案,这种差异何时有用(如果有的话)? 最佳答案 前者测试trivially copyable属性,简而言之,这意味着该类型是memcpy-安全的。 A trivially cop
C++17 的当前标准(我观察到 C++11 的类似措辞)对于可复制的类型的措辞非常困惑。我首先通过以下代码(GCC 5.3.0)偶然发现了这个问题: class TrivialClass {}; s
我在 libstdc++ STL_uninitialized.h 中看到这段代码: // This class may be specialized for specific types. /
根据各种来源(例如 cppreference.com ),一个类必须是平凡可复制的才能与 memcpy 一起使用,但我不明白为什么平凡复制可构造类是不够的。普通可复制类(如普通析构函数)的额外属性应该
我是一名优秀的程序员,十分优秀!