遵循Loki 单例实现的一段代码,它显示了它所谓的“MaxAlign Trick”。我认为它与对齐有关(呃!),但是尝试与联合中提到的所有类型对齐的目的是什么?没有它,新的内部安置会Create()
破裂吗?
template <class T> struct CreateStatic
{
union MaxAlign
{
char t_[sizeof(T)];
short int shortInt_;
int int_;
long int longInt_;
float float_;
double double_;
long double longDouble_;
struct Test;
int Test::* pMember_;
int (Test::*pMemberFn_)(int);
};
static T* Create()
{
static MaxAlign staticMemory_;
return new(&staticMemory_) T;
}
// other code...
}