So, I'm writing a little document for my workmates on some useful features/concepts of C++, but I'm having some difficulty in trying to group them.
I currently have:
C++ Features
Namespaces
Templates
C++ Idioms
TMP - Template Metaprogramming
SFINAE - Substitution Failure Is Not An Error
Parameter Packs
Type Erasure
Concepts
CRTP - Curiously Recurring Template Pattern
RAII - Resource Acquisition Is Initialization
Iteration over Contained Objects and Algorithms
Perfect Forwarding
Many Smaller Rather Than Less Larger
But I'm thinking that not all of the things under C++ Idioms are in fact idioms and am struggling to try and come up with other headings.
The last heading is in reference to having many smaller functions rather than fewer larger functions.
Who is your audience? The things you've listed are good for experienced OO programmers looking at the advantages of C++, but fairly esoteric if you're just looking at day-to-day programming and why one might choose C++ over other languages.
This document is to give our programmers awareness of more advanced C++ constructs and methods. This is not to say that they will use all of these in their day to day programming, but that they will have them if the need should ever arise.