【发布时间】:2017-02-20 20:29:02
【问题描述】:
除了std::is_trivial 和std::is_trivially_copyable 之外,C++11 还提供了许多类型特征来检查类型是否具有普通的构造函数、析构函数和复制/移动赋值运算符,即:
std::is_trivially_constructiblestd::is_trivially_default_constructiblestd::is_trivially_copy_constructiblestd::is_trivially_move_constructiblestd::is_trivially_assignablestd::is_trivially_copy_assignablestd::is_trivially_move_assignablestd::is_trivially_destructible
他们最初的预期目的是什么?当然,一些 C++ 委员会论文必须解释将它们包含在 C++ 标准库中的理由。
【问题讨论】:
-
它们非常适合在单元测试中查看是否有人搞砸了并做出了一些必须琐碎的事情_无论什么不是琐碎的,导致在生产代码中无声地调用未定义的行为。还要在生产代码中制作漂亮的
static_assert编译时陷阱,以防有人真的愚蠢而不是单元测试。
标签: c++ c++11 c++14 language-lawyer c++17