Qual é o uso básico de align_storage?
Qual é o uso básico de std :: tr1 :: aligned_storage? Pode ser usado como memória automática para um tipo de dados Foo como o abaixo?
struct Foo{...};
std::tr1::aligned_storage<sizeof(Foo)
,std::tr1::alignment_of<Foo>::value >::type buf;
Foo* f = new (reinterpret_cast<void*>(&buf)) Foo();
f->~Foo();
Se sim, que tal armazenar múltiplos Foo no buf como,
std::tr1::aligned_storage<5*sizeof(Foo)
,std::tr1::alignment_of<Foo>::value >::type buf;
Foo* p = reinterpret_cast<Foo*>(&buf);
for(int i = 0; i!= 5; ++i,++p)
{
Foo* f = new (p) Foo();
}
Eles são programas válidos? Existe algum outro caso de uso para isso? A pesquisa do Google só produz a documentação sobre alignment_storage, mas muito pouco sobre o uso dela.