Effective C++ item 1: View C++ as a federation of languages.

Meyers suggests us to view c++ as a federation of languages since a rule may apply to one sub-language but not others. It is easier and more straight forward to treat c++ as a set of sub-languages.

  1. C: Blocks, statements, the preprocessor, built-in data types, arrays, pointers, etc.
  2. Object-Oriented C++: Classes, encapsulation, inheritance, polymorphism, virtual functions, etc.
  3. Template C++: Template metaprogramming(TMP). It’s not uncommon for rules of good programming to include special template-only clauses.
  4. The STL: The STL has particular ways of doing things, and when you’re working with the STL, you need to be sure to follow its conventions.

“Effective C++” Third Edition by Scott Meyers.