Elision
In certain cases, compiler can skip calling copy / more constructers, instead writing the object’s value s directly into its final location.
Consider the example below:
- In
g++ std=c++14
, neither move nor copy gets called. Elision is used
Another example
Here, {1,5}
is directly written into r
.
Note: Elision is possible, even if it changes program output.
- Not expected to know all possible cases, just that it’s possible.
Disable with the flag -fno-elide-constructors
(slows down program though)
Copy Elision
https://en.wikipedia.org/wiki/Copy_elision https://stackoverflow.com/questions/12953127/what-are-copy-elision-and-return-value-optimization
In the context of the C++ programming language, return value optimization (RVO) is a compiler optimization that involves eliminating the temporary object created to hold a function’s return value.