Structured bindings
The C++17 syntax auto [a, b] = expr; that unpacks a compound value into several names at once.
Three kinds of type are supported: plain arrays, structs with public members, and anything implementing the tuple protocol — which is how it works for std::pair and std::tuple. The daily benefit is that iterating a map becomes for (const auto& [key, value] : m) instead of it->first and it->second, which besides being readable also eliminates a classic mix-up. Returning several values from a function additionally stopped requiring output parameters. A couple of details surprise people: the names are not variables but bindings to a hidden object, and you cannot skip a component you don't want — writing _ is an ordinary name bound just like the others.