Для тестирования подходит ли тот или иной тип в aligned_storage
, я создал следующую тестовую структуру:Испытание на размер aligned_storage
template< typename T, std::size_t Bytes >
struct fits_in_storage : public std::integral_constant<bool, sizeof(std::aligned_storage<Bytes>::type) >= sizeof(std::aligned_storage<sizeof(T)>::type)>
{};
Теперь я вроде интересно ли такой тест/будет присутствовать в STDLIB , Не хотел бы изобретать колесо.
Я использую его для проверки того, имеет ли заголовок, заданный aligned_storage
(размером Bytes
), внутренний тип данных, который доступен только в реальном блоке компиляции.
Я не уверен, что вы хотите проверить здесь. Первый параметр шаблона 'aligned_storage' указывает размер, тогда как второй параметр определяет выравнивание. Без второго параметра вы проверяете только строжайшее выравнивание для объекта не более указанного размера? – dyp
@DyP В настоящее время да. Возможно, я добавлю третий параметр шаблона по умолчанию в 'fits_in_storage'. – abergmeier
N.B. Из-за * не более указанного размера * существует гарантия того, что самое строчное выравнивание получает только * более строгий для больших объектов. То есть если 'Bytes> = sizeof (T)', объект типа 'T' будет соответствовать и быть правильно выровнен в' aligned_storage :: type'. –
dyp