#include <iostream>
int main()
{
auto n {42};
cout << "The n has value of " << n <<
" and a size of " << sizeof(n) << endl; // Works as expected
}
#include <iostream>
int main()
{
auto n = {42};
cout << "The n has value of " << n <<
" and a size of " << sizeof(n) << endl; // Does not work!
}
Why is that? In "Tour of C++" it is explicitly said:
1.4.2 Initialization Before an object can be used, it must be given a value. C++ offers a variety of notations for expressing initialization, such as the = used above, and a universal form based on curly-brace delimited initializer lists:
double d1 = 2.3; // initialize d1 to 2.3
double d2 {2.3}; // initialize d2 to 2.3
double d3 = {2.3}; // initialize d3 to 2.3 (the = is optional with { ... })
complex<double> z2 {d1,d2};
complex<double> z3 = {d1,d2}; // the = is optional with { ... }
The =
is optional with {}
.
so, why does this happen?
Aucun commentaire:
Enregistrer un commentaire