我只是在想新的 C++11 类内成员初始化器是否可用于在编译时初始化单例,这可能是我应用程序中某些管理器类的加速:
class CSingleton
{
public:
CSingleton(void) {}
~CSingleton(void) {}
static const CSingleton* GetInstance(void)
{
return Instance;
}
bool Foo1(int x);
bool Foo2(int y);
private:
static constexpr CSingleton *Instance = new CSingleton();
}
问题是这会导致以下错误:
Line of Instance declaration: error: invalid use of incomplete type 'class test::CSingleton'
First Line of class declaration: error: forward declaration of 'class test::CSingleton'
有没有办法在编译时用这种或另一种方法初始化单例?
[我在 MacOSX10.7(和 Ubuntu)上使用 GCC4.7 并设置了 -std=c++0x 标志]