You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Certains développeurs préfèrent utiliser ``auto`` avec parcimonie, en remplacement de types particulièrement verbeux (notamment les iterateurs).
274
-
D'autres prônent son utilisation quasi systématique, comme Scott Meyers et [Herb Sutter](https://herbsutter.com/2013/08/12/gotw-94-solution-aaa-style-almost-always-auto/).
274
+
D'autres prônent son utilisation quasi systématique, comme Scott Meyers ([Effective Modern C++](https://www.amazon.fr/Effective-Modern-C-Scott-Meyers/dp/1491903996)) et [Herb Sutter](https://herbsutter.com/2013/08/12/gotw-94-solution-aaa-style-almost-always-auto/).
275
275
276
276
Certains seraient même tentés de ne jamais utiliser ``auto`` pour éviter ce genre de problème, et passer à côté de tous les autres avantages qu'il apporte.
Les classes/structures ayant **toutes leurs variables membres publiques** sont déstructurables avec une *structured binding declaration*:
486
486
487
-
{% highlight cpp linenos mark_lines="10" %}
487
+
{% highlight cpp linenos highlight_lines="10" %}
488
488
struct Position2d
489
489
{
490
490
int x;
@@ -531,7 +531,7 @@ auto [x, y, z] = position; // error: type 'Position2d' decomposes into 2 element
531
531
532
532
Les *structured binding declarations* supportent les propriétés *cvref*, permettant d'éviter des copies inutiles ou de modifier les données contenues dans le conteneur:
533
533
534
-
{% highlight cpp linenos mark_lines="13" %}
534
+
{% highlight cpp linenos highlight_lines="13" %}
535
535
struct Person
536
536
{
537
537
std::string name;
@@ -646,7 +646,7 @@ Pour les classes/structures n'ayant que des variables membres publiques, la dés
646
646
647
647
Si une classe/structure contient des variables membre privées, il n'est pas possible de les ignorer dans une *structured binding declaration*.
648
648
649
-
{% highlight cpp linenos mark_lines="6" %}
649
+
{% highlight cpp linenos highlight_lines="6" %}
650
650
struct Person
651
651
{
652
652
Person(std::string firstName, std::string lastName, int birthYear):
0 commit comments