Why Can’t I Find the Injected Name of a Templated Class’s Templated Base Class? -- Raymond Chen
Some time ago, I wrote about how injected class names were the C++ feature you didn’t even realize that you were using. Injected class names let you use the plain name for the class being defined without needing to fully qualify it with namespaces and template parameters. Furthermore, injected class names are public and can be inherited.
“But wait, I’m trying to use the injected class name of my base class, but the compiler won’t accept it.”
Why Can’t I Find the Injected Name of a Templated Class’s Templated Base Class?
by Raymond Chen
From the article:
Some time ago, I wrote about how injected class names were the C++ feature you didn’t even realize that you were using. Injected class names let you use the plain name for the class being defined without needing to fully qualify it with namespaces and template parameters. Furthermore, injected class names are public and can be inherited.
“But wait, I’m trying to use the injected class name of my base class, but the compiler won’t accept it.”
template<typename T> struct Base { Base(T value); }; template<typename T> struct Derived : Base<T> { Derived(T value) : Base(value) {} };This generates a compiler error.

In the
In Qt 4, container classes like QVector introduced an optimization that transformed certain operations on contained objects into efficient byte-level manipulations. By identifying types that can be safely moved via a simple memory copy, Qt was able to streamline reallocations for specific data types like 
In today's post, I will continue where I left off with last month's post Understanding the role of cv-qualifiers in function parameters. This time, I will focus on type deduction.
The new