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.