//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// type_traits
// aligned_storage
#include<type_traits>intmain(){{typedefstd::aligned_storage<10,1>::typeT1;static_assert(std::alignment_of<T1>::value==1,"");static_assert(sizeof(T1)==10,"");}{typedefstd::aligned_storage<10,2>::typeT1;static_assert(std::alignment_of<T1>::value==2,"");static_assert(sizeof(T1)==10,"");}{typedefstd::aligned_storage<10,4>::typeT1;static_assert(std::alignment_of<T1>::value==4,"");static_assert(sizeof(T1)==12,"");}{typedefstd::aligned_storage<10,8>::typeT1;static_assert(std::alignment_of<T1>::value==8,"");static_assert(sizeof(T1)==16,"");}{typedefstd::aligned_storage<10,16>::typeT1;static_assert(std::alignment_of<T1>::value==16,"");static_assert(sizeof(T1)==16,"");}{typedefstd::aligned_storage<10,32>::typeT1;static_assert(std::alignment_of<T1>::value==32,"");static_assert(sizeof(T1)==32,"");}{typedefstd::aligned_storage<20,32>::typeT1;static_assert(std::alignment_of<T1>::value==32,"");static_assert(sizeof(T1)==32,"");}{typedefstd::aligned_storage<40,32>::typeT1;static_assert(std::alignment_of<T1>::value==32,"");static_assert(sizeof(T1)==64,"");}{typedefstd::aligned_storage<12,16>::typeT1;static_assert(std::alignment_of<T1>::value==16,"");static_assert(sizeof(T1)==16,"");}{typedefstd::aligned_storage<1>::typeT1;static_assert(std::alignment_of<T1>::value==1,"");static_assert(sizeof(T1)==1,"");}{typedefstd::aligned_storage<2>::typeT1;static_assert(std::alignment_of<T1>::value==2,"");static_assert(sizeof(T1)==2,"");}{typedefstd::aligned_storage<3>::typeT1;static_assert(std::alignment_of<T1>::value==2,"");static_assert(sizeof(T1)==4,"");}{typedefstd::aligned_storage<4>::typeT1;static_assert(std::alignment_of<T1>::value==4,"");static_assert(sizeof(T1)==4,"");}{typedefstd::aligned_storage<5>::typeT1;static_assert(std::alignment_of<T1>::value==4,"");static_assert(sizeof(T1)==8,"");}{typedefstd::aligned_storage<7>::typeT1;static_assert(std::alignment_of<T1>::value==4,"");static_assert(sizeof(T1)==8,"");}{typedefstd::aligned_storage<8>::typeT1;static_assert(std::alignment_of<T1>::value==(sizeof(long)==4?4:8),"");static_assert(sizeof(T1)==8,"");}{typedefstd::aligned_storage<9>::typeT1;static_assert(std::alignment_of<T1>::value==(sizeof(long)==4?4:8),"");static_assert(sizeof(T1)==(sizeof(long)==4?12:16),"");}{typedefstd::aligned_storage<15>::typeT1;static_assert(std::alignment_of<T1>::value==(sizeof(long)==4?4:8),"");static_assert(sizeof(T1)==16,"");}{typedefstd::aligned_storage<16>::typeT1;static_assert(std::alignment_of<T1>::value==16,"");static_assert(sizeof(T1)==16,"");}{typedefstd::aligned_storage<17>::typeT1;static_assert(std::alignment_of<T1>::value==16,"");static_assert(sizeof(T1)==32,"");}{typedefstd::aligned_storage<10>::typeT1;static_assert(std::alignment_of<T1>::value==(sizeof(long)==4?4:8),"");static_assert(sizeof(T1)==(sizeof(long)==4?12:16),"");}}