C++

template<class T>
class Singleton
{
public:
    // Guaranteed to be destroyed.
    // Instantiated on first use.
    static T& GetInstance() { static T instance; return instance; }
private:
    Singleton();
    ~Singleton();
    Singleton(const Singleton &) {}; // Don't Implement
    Singleton& operator=(const Singleton<T>&) {}; // Don't Implement
    Singleton* operator&() {};
};
class A : public Singleton<A>
{
friend class Singleton<A>;
private:
    A(); // Should be private
    ~virtual A();
    A(const A&);
    A& operator=(const A&);
    A* operator&();
};