tr1::array
(и std::array
и boost::array
) являются POD, поэтому память, занятая содержимым, совпадает с памятью array
.Итак, выделите array
так, как вам нужно, и сконструируйте его с размещением new
.
typedef std::tr1::array< MyClass, ary_sz > AryT;
void *array_storage = aligned_allocation( sizeof( AryT ) );
AryT *ary = new( array_storage ) AryT( initial_value );