C++ is a wonderful language. A collection of curious details:
- A full-expression is not necessarily an expression at all.
void*
is not a pointer-to-object but it is an object pointer.- Member pointers are not "pointers".
- Default initialisation may leave the object uninitialised.
- Rvalue reference variables are lvalues.
std::move
doesn't move anything.- Function arguments cannot be arrays, but you can declare arguments to be arrays in which case they are "adjusted" to not be arrays.