2017-09-25 63 views
2

C++ 17引入了std::aligned_alloc和对齐感知的new,它们可以执行over-aligned分配,但std::allocator呢?它处理的是过度对齐的类型吗?std :: allocator是否处理C++ 17中的over-aligned类型?

+0

oops,我删除了我的错误答案,复制粘贴的恐怖故事......(随意投票给我...... :)) –

+1

是的,http://www.open-std.org/jtc1/ sc22/wg21/docs/papers/2016/p0035r4.html删除了使其实现定义的文本。 –

+0

@MassimilianoJanes没关系,我已经找到了N4659(C++ 17 DIS)中的部分。 – Jamboree

回答

3

在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类型。

+0

uhm,N4659(我在www.open-std.org找到的pdf版本)仍然按照我的原始答案逐字读取,即全部类型支持是实现定义的... –

+0

@MassimilianoJanes我在https://github.com/timsong-cpp/cppwp,不确定在www.open-std.org。 – Jamboree

+0

ok阅读Marc Glisse的评论很清楚你是对的(很高兴知道分配函数现在也需要一个对齐参数)。 –

相关问题