gpt4 book ai didi

c++ - 类型特征检查类特殊函数的琐碎性的基本原理

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:46 27 4
gpt4 key购买 nike

除了 std::is_trivialstd::is_trivially_copyable 之外,C++11 还提供了许多类型特征来检查类型是否具有平凡的构造函数、析构函数和复制/移动赋值运算符,即:

  • std::is_trivially_constructible
  • std::is_trivially_default_constructible
  • std::is_trivially_copy_constructible
  • std::is_trivially_move_constructible
  • std::is_trivially_assignable
  • std::is_trivially_copy_assignable
  • std::is_trivially_move_assignable
  • std::is_trivially_destructible

他们最初的预期目的是什么?当然,某些 C++ 委员会论文必须解释将它们包含在 C++ 标准库中的基本原理。

最佳答案

为什么它们在标准库中?因为它们很有用但不可能用语言实现。


两个具体的有用示例。

  • std::is_trivially_copy_constructible - 如果我有 vector是一种可简单复制构造的类型,我不需要在进行重新分配时单独复制每个元素。我可以memcpy()一气呵成整个街区。我们需要这个类型特征来检查这个优化何时是安全的。
  • std::is_trivially_destructible - Trivial destruction是一个类型的重要品质。它是文字类型的标准之一,因此可用于常量表达式。在某些情况下,我可能希望我的类型可以用作文字类型,这种情况有可能发生(例如 std::optional )。我们需要这种类型特征才能生成 optional<T>有条件地平凡可破坏。

关于c++ - 类型特征检查类特殊函数的琐碎性的基本原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353660/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com