Обрабатывает ли std::allocator чрезмерно выровненные типы в С++ 17?

В C++17 представлены std::aligned_alloc и new с учетом выравнивания, которые могут выполнять избыточное выравнивание, но как насчет std::allocator? Обрабатывает ли он чрезмерно выровненные типы?


person Jamboree    schedule 25.09.2017    source источник
comment
ой, я удалил свой неправильный ответ, ужастик с копией и вставкой ... (не стесняйтесь проголосовать за меня ... :) )   -  person Massimiliano Janes    schedule 25.09.2017
comment
Да, open-std.org/jtc1/ sc22/wg21/docs/papers/2016/p0035r4.html удалил текст, сделав его реализацией определенной.   -  person Marc Glisse    schedule 25.09.2017
comment
@MassimilianoJanes Неважно, я нашел раздел в N4659 (C++ 17 DIS).   -  person Jamboree    schedule 25.09.2017


Ответы (1)


В N4659 (C++ 17 DIS) 23.10.9.1 [allocator.members], маркер 2

T* выделить (size_t n);

Возвращает: Указатель на начальный элемент массива хранения размером n * sizeof(T), выровненный соответствующим образом для объектов типа T.

По сравнению с C++14 предложение

Определяется реализацией, поддерживаются ли типы с чрезмерным выравниванием.

был удален. Таким образом, std::allocator должен поддерживать типы с чрезмерным выравниванием в C++17.

person Jamboree    schedule 25.09.2017
comment
гм, N4659 (версия в формате pdf, которую я нашел на www.open-std.org) по-прежнему читается дословно в соответствии с моим первоначальным ответом, то есть поддержка перегруженных типов определяется реализацией... - person Massimiliano Janes; 25.09.2017
comment
@MassimilianoJanes Я нашел его на github.com/timsong-cpp/cppwp, не уверен, что тот на сайте open-std.org. - person Jamboree; 25.09.2017
comment
хорошо, читая комментарий Марка Глиссе, становится ясно, что вы правы (приятно знать, что функции распределения теперь также принимают параметр выравнивания). - person Massimiliano Janes; 25.09.2017
comment
Не могли бы вы нажать принять этот ответ? Именно поэтому выровненный_аллокатор больше не нужен. - person sandthorn; 31.08.2018
comment
@Jamboree Это здорово. Спасибо, что раскопал это. - person KeyC0de; 27.09.2019