Was ist die grundlegende Verwendung von aligned_storage?
Was ist die grundlegende Verwendung von std :: tr1 :: align_storage? Kann es als automatischer Speicher für einen Datentyp Foo wie den folgenden verwendet werden?
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();
Wenn ja, was ist mit dem Speichern mehrerer Foo im Buff,
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();
}
Sind sie gültige Programme? Gibt es einen anderen Anwendungsfall dafür? Die Google-Suche liefert nur die Dokumentation zu aligned_storage, aber nur sehr wenige Informationen zur Verwendung.