Я пытался разобраться в дополнении TR1, известном как align_storage. Читая следующие документы N2165 , N3190 и N2140 , я не могу, хоть убей, увидеть утверждение, в котором четко описывается стековая или кучная природа используемая память.
Я рассмотрел реализацию, предоставляемую msvc2010, boost и gcc, все они предоставляют решение на основе стека, основанное на использовании объединения.
Вкратце:
Определен ли тип памяти (стек или куча), используемый реализацией выровненного хранилища, или он всегда должен быть основан на стеке?
и какой конкретный документ определяет / определяет это?
Примечание: в MSVC10, следующее определение типа выровненного_хранилища, в этом случае, если выровненное_хранилище является автоматической переменной, данные (_Val, _Pad) создаются в стеке:
template
union _Align_type
{
// union with size _Len bytes and alignment of _Ty
_Ty _Val;
char _Pad[_Len];
};
Примечание. Это НЕ банальный вопрос. Пожалуйста, попытайтесь понять вопрос, прежде чем размещать ответ.