std :: allocator是否处理C++ 17中的over-aligned类型?
C++ 17引入了std::aligned_alloc
和对齐感知的new
,它们可以执行over-aligned分配,但std::allocator
呢?它处理的是过度对齐的类型吗?std :: allocator是否处理C++ 17中的over-aligned类型?
在N4659(C++ 17 DIS),23.10.9.1 [allocator.members], bullet 2
T *分配(为size_t N);
返回:指向大小为n * sizeof(T)的存储阵列的初始元素的指针,适用于T类型的对象。
相比C++ 14,句子
它实现定义
已被去除过对齐的类型是否被支持。所以std::allocator
应该支持C++ 17中的over-aligned类型。
uhm,N4659(我在www.open-std.org找到的pdf版本)仍然按照我的原始答案逐字读取,即全部类型支持是实现定义的... –
@MassimilianoJanes我在https://github.com/timsong-cpp/cppwp,不确定在www.open-std.org。 – Jamboree
ok阅读Marc Glisse的评论很清楚你是对的(很高兴知道分配函数现在也需要一个对齐参数)。 –
oops,我删除了我的错误答案,复制粘贴的恐怖故事......(随意投票给我...... :)) –
是的,http://www.open-std.org/jtc1/ sc22/wg21/docs/papers/2016/p0035r4.html删除了使其实现定义的文本。 –
@MassimilianoJanes没关系,我已经找到了N4659(C++ 17 DIS)中的部分。 – Jamboree