devxlogo

Self-referential Inheritance

Consider the following example:

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


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.

Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.

See also  How Seasoned Architects Evaluate New Tech

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.