[ create a new paste ] login | about

Link: http://codepad.org/9FNCkvLx    [ raw code | fork ]

sehe - C++, pasted on Jul 5:
class Derived;

// mock object
struct SomeSingleton
{ 
    static void RegisterThisObject(int type_id) {} 
};

namespace detail
{
    template <class T> struct registerable_traits { };         
    template<> struct registerable_traits<Derived>
    { 
        enum _id { type_id = 1 };
    };
}

template <class T>
class Base
{
protected:  // note change
   Base() { SomeSingleton::RegisterThisObject(detail::registerable_traits<T>::type_id); }
};

class Derived : Base<Derived>
{
public:
   Derived(): Base<Derived>(){};
};

int main()
{
     Derived d;
     return 0;
}


Output:
No errors or program output.


Create a new paste based on this one


Comments: