
From: David Abrahams <dave@boost-consulting.com>
Rob Stewart <stewart@sig.com> writes:
From: Tylo <tylo@start.no>
I propose this usage (for shared_ptr):
shared_ptr<Widget> wp1 = NULL; // 1a
<snip>
Current shared_ptr usage:
shared_ptr<Widget> wp1( NULL ); // 2a
Lines 1a and 2a are just the difference between assignment and initialization syntax.
It's the difference between copy initialization and direct initialization.
Sure. I'd forgotten the terms and didn't look them up. Thanks for the clarification.
The former can be slower than the latter, though the difference may be optimized away.
On many compilers where there is a difference, copy initialization is actually faster than direct initialization.
Call me confused. copy-initialization results in the construction of an object that is then used to direct-initialize the object (wp1, in this case). Of course, the compiler is permitted to elide the extra step, so copy-initialization can degenerate into direct-initialization. How, then, can copy-initialization be faster than direct-initialization on some compilers and which are they? -- Rob Stewart stewart@sig.com Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;