Self-referential Inheritance

Self-referential Inheritance

Consider the following example:

 class A : public list {  // ...};

Does your compiler accept it? According to the Standard, using an incomplete type as a template parameter in a template instantiation results in undefined behavior. In this example, A is an incomplete type when it is used as a template argument of list. Certain compilers, GCC for instance, do accept this code. However, most compilers don’t. For this reason, you should avoid this programming style if you’re writing portable code.


About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist