Which is entirely true, and is often the case when performance is a goal - abstractions must be broken. But that is not an argument for or against C++.
class person
{
protected:
int age;
int wieght;
};
template <class Base>
class people: public Base
{
private:
Base *prev;
Base *next;
};
people<person> plist;