Avatar ·

Quelles nouvelles fonctionnalités sont apparues dans C++17 et comment les utiliser dans des projets réels ?

Bonjour à tous ! J'écris en C++ depuis environ un an, j'utilise principalement C++11/14. Récemment, j'ai commencé à étudier C++17 et j'ai remarqué que beaucoup de code dans les projets open-source utilise des constructions que je ne comprends pas. Par exemple, je vois souvent ce code :
auto [x, y, z] = getPoint();
Ou ceci :
if (auto it = map.find(key); it != map.end()) { ... }
Ou encore :
std::variant<int, float, std::string> v = 42;
Ma question : quelles sont exactement les nouveautés apportées par C++17 ? J'ai entendu parler des structured bindings, if-init, std::variant, std::optional, mais comment tout cela fonctionne-t-il en pratique ? Y a-t-il autre chose à savoir ? Je suis particulièrement intéressé par : 1. Quelles fonctionnalités simplifient vraiment le développement quotidien ? 2. Qu'est-ce qui a changé dans la bibliothèque standard ? 3. Y a-t-il des pièges lors du passage de C++14 à C++17 ? Je serais reconnaissant pour une analyse détaillée avec des exemples de code. Je veux comprendre quelles fonctionnalités adopter dans mes projets et lesquelles éviter pour l'instant.