I recently heard one of my coworkers claim that the concept of a "subtype" is not defined in C++. He claims that "subtypes" are rightly called "derived types" in C++ terminology. Is this true? If I have:
class A { };
class B : public A { };
Can I call B a subtype of A? Or is it only valid to call B a "derived type" of A in C++?
Subtype is not part of the common jargon in C++. The definition in Wikipedia (thanks Chad) is quite broad and in C++ could represent multiple different things, including but not limited to inheritance. For example, all iterator types from a given category and pointers could be subtypes of the iterator concept as they can be substituted in templates that require that concept (including the standard library algorithms).
I would use derived in general, other alternative words for the same (in different languages) could include extends (type A extends B) or inherits.