2 votes

Qu'est-ce qui a changé avec la "conversion des constructeurs" en C++11 ?

Aujourd'hui, j'ai été surpris par ce paragraphe à cppreference :

Constructeur de conversion

Un constructeur qui n'est pas déclaré avec le spécificateur explicit et qui peut être appelé avec un seul paramètre ( jusqu'à C++11 ) est appelé Constructeur de conversion .

Le passage "(jusqu'à C++11)" semble faire référence à la phrase "qui peut être appelé avec un seul paramètre".

Je ne savais pas que cela avait changé avec C++11. Quel est le changement ? Quel type de "constructeur de conversion" peut prendre plus d'un argument ? (Si c'est ce à quoi il fait référence).

(Je suppose que cela pourrait faire référence aux constructeurs qui ont plus d'un argument mais ces arguments supplémentaires - ou tous - ont des valeurs par défaut. Mais les valeurs par défaut pour les arguments sont présentes en C++ depuis toujours. Quelque chose a donc changé - avant C++11, vous ne pouviez pas convertir implicitement avec un constructeur qui prenait des arguments par défaut ? Mais cet exemple chez wandbolt montre que a fait travailler en C++03).

1voto

Sam Varshavchik Points 2563

Un exemple avec deux paramètres est donné plus loin dans la page que vous avez citée :

A a4 = {4, 5}; // OK: copy-list-initialization selects A::A(int, int)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X