【发布时间】:2021-02-05 08:03:09
【问题描述】:
根据cppreference,std::allocator 是无状态的。除了大多数无状态类型都可以简单地复制之外,我认为它们没有要复制的状态!也许我能想到的唯一例外是无状态类型,它在复制时写入某个全局变量,从而留下副作用。我不希望std::allocator 做这样的事情。
但是,以下静态断言在 Clang 和 GCC 上均失败
static_assert(std::is_trivially_copyable_v<std::allocator<int>>);
这很烦人,因为依赖于检测可复制类型来提高其性能的代码(例如,通过用 memcpys 代替实际副本)在 std::allocator 存在的情况下无法工作。为什么会这样?
【问题讨论】:
标签: c++ typetraits c++-standard-library allocator