Salut à tous,
Considérons le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
struct A
{
    A( const A& a ){ cout << "copy ctor" << endl; }
    A( int a ){ cout << "ctor 1 param" << endl; }
};
 
int main ()
{
    A a = A (1);//appel du constructeur à un paramètre puis appel au constructeur par copie???
 
    return 0;
}
À l'exécution, je devrais obtenir l'affichage suivant :
ctor 1 param
copy ctor


Or je n'obtiens que ctor 1 param.

Ma question est : est-ce une optimisation de mon compilateur ou un comportement défini dans la norme?