
At 12:38 PM -0400 8/24/05, Gennadiy Rozental wrote:
"Kim Barrett" <kab@irobot.com> wrote in message news:p06230900bf3241d57905@[192.168.161.194]...
At 1:25 AM -0400 8/23/05, Gennadiy Rozental wrote:
template<typename F> class global_fixure_impl : public global_fixure { virtual void setup() { new (m_space) F; } virtual void teardown() { ((F*)m_space)->~F(); }
char m_space[sizeof(F)]; };
Alignment of m_space must be appropriate for the alignment of F. I think this can be addressed by putting m_space in a union with a value whose type is the result of boost::type_with_alignment<boost::alignment_of<F>::value>::type.
char m_space[sizeof(F)]; is going to be aligned properly automatically
I don't see how. See analogous discussion recently on boost developers list under subject "alignment problem in proposed any alternative", in particular the message from Martin Bonner on 8/11/05: http://aspn.activestate.com/ASPN/Mail/Message/boost/2772775 Otherwise, what would be the point of boost::aligned_storage (which actually packages up the union idiom I was suggesting be used)?