What an ideal C++ programmer should know, in a vacuum

Many companies often have unreasonable requirements for programmers.

Here's what an ideal C++ programmer job posting might look like:

1. C++, the standard, Stroustrup/D&E/Josuttis, Dewhurst/Meyers/Sutter, RAII, the rule of three, exception safety, Alexandrescu/Abrahams-Gurtovoy, type erasure, CRTP, NVI, SFINAE, Koenig lookup, Duff's device, Boost, Czarnecki-Eisenecker, TR1, TR on C++ performance, the Stepanov test, the forwarding problem, SPECS, C++0x

2. Compilers, standard implementation quirks, implementation limits, intrinsics, differences between standard libraries (containers, rand), ABI, implementation of virtual functions, virtual inheritance, exceptions, RTTI, switch statements, function and member pointers; optimizations, copy elision (RVO, NRVO), sizeof on different platforms, compiler and environment defines, __declspec, compiler flags, empty-base optimization, static and dynamic linking, name mangling, distributed compilation, precompiled headers, single compilation unit, (strict) aliasing/restrict, inline/_forceinline, volatile

3. Multithreading, the dining philosophers, deadlock/race condition/starvation, atomicity, processor lock instructions, CAS or LL/SC, wait/lock/obstruction-free, the ABA problem, writing lock-free containers, spin-locks, TLS/per-thread data, OpenMP, MPI, map-reduce, critical section/mutex/semaphore/condition variable, WaitForSingleObject/WaitForMultipleObjects, green threads/coroutines, pthreads