Basic C++ object class
As per common naming convention, the class names should start with a capital letter.
It may be more readable to put the template line above the class line:

template &lt; typename _Ty &gt;
class data : public dummy
{
}

Your bool functions should be const.  Any member function that doesn't modify data members should be const.  Such functions also include accessors ("getters") and the bool operators (operator==, operator!=, operator&lt;, and operator&gt;).

For instance, with empty():

bool empty() const
{
    // ...
}


and operator==:

bool operator==(object &amp;_Rhs) const
{
    // ...
}


Also, the above parameter should be const&amp; since _Rhs is not being modified.
If you're not defining your own constructor and/or destructor, you don't need to make them yourself.  The compiler will make them for you.

However, if you're using C++11, you can have an explicitly defaulted constructor and destructor:

data() = default;
~data() = default;