August 22, 2003 return value optimization | ||||
---|---|---|---|---|
| ||||
Hi, #include <stdio.h> struct B { B() { printf("B::B() %08x\n", this); } ~B() { printf("B::~B() %08x\n", this); } }; struct C { C(const B &b) { } }; B f() { B b; return b; } int main() { C c1 = f(); // B::~B should be called here (just after C::C(const B &)) C c2 = f(); // B::~B should be called here (just after C::C(const B &)) printf("done\n"); return 0; } // but the output with 8.35.8n is: // B::B() 0012ff7d // B::B() 0012ff7f // done // B::~B() 0012ff7f // B::~B() 0012ff7d See 12.8 Copying class objects [class.copy], paragraph 15. bye, Christof -- http://cmeerw.org JID: cmeerw@jabber.at mailto cmeerw at web.de |
Copyright © 1999-2021 by the D Language Foundation