I'm learning how to implement the singleton with C++ and I've read this link: C++ Singleton design pattern
I have one question: Why is the "Meyers Singleton" guaranteed-destruction?
class S
{
    public:
        static S& getInstance()
        {
            static S    instance;
            return instance;
        }
    private:
        S() {}
        S(S const&);  
        void operator=(S const&);
 };
In my opinion, in this case, the time of destruction of the variable instance is out of control too. Meaning that it is destroyed after the main returns. If I'm right , why it can be regarded as guaranteed-destruction?
class S
{
    public:
        static S& getInstance()
        {
            return instance;
        }
        S() {}
    private:
        static S instance;
        S(S const&);  
        void operator=(S const&);
 };
 S S::instance = S();
Is this guaranteed-destruction too?
