| Ne | Po | Út | St | Čt | Pá | So |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
If you ever get involved in an argument whether A a = A( b ); is or is not equivalent to A a( b ); in C++ (like me yesterday ;-) ), the answer is "it depends". Eg. g++ has a switch for that, see the man page: -fno-elide-constructors: The C++ standard allows an implementation to omit creating a temporary which is only used to initialize another object of the same type. Specifying this option disables that optimization, and forces G++ to call the copy constructor in all cases.
So - in g++ by default it really means A a( b );, but it could also mean a copy construction from temporary [something like A a( A( b ) ); which you cannot really use unless b is a constant, eg. 3, or "blah" - would mean a declaration of a function named a otherwise] with -fno-elide-constructors. Try it yourself...