A few examples:
- CTAD: Instead of
std::pair<int, int> myPair{ 1, 2 }, you just writestd::pair myPair{ 1, 2 } - std::optional, std::variant and std::any
- Guaranteed copy elision in some cases, making it more feasible to apply the rule of 5 everywhere
- Attributes like [[nodiscard]] (compiler warning if an object or return value is discarded) and [[fallthrough]] (suppress a switch fallthrough warning)
- Generic lambdas (
[](auto it){ /* do something */ }) - std::string_view, which is much safer as a function parameter than
const char*





Just be careful when you grip the handle