[Issue 3516] Destructor not called on temporaries
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun May 30 15:59:11 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3516
Brad Roberts <braddr at puremagic.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |braddr at puremagic.com
--- Comment #3 from Brad Roberts <braddr at puremagic.com> 2010-05-30 15:59:09 PDT ---
Reduced test case:
extern(C) int printf(const char*, ...);
int numctor, numdtor;
struct Tid
{
this(int i) { ++numctor; }
~this() { ++numdtor; }
}
Tid f() { return Tid(1); }
// This temporary is destroyed
void test1() { Tid tid = f(); }
// This (invisible) temporary is never destroyed
void test2() { f(); }
void main()
{
numctor = numdtor = 0;
test1();
printf("numctor = %d, numdtor = %d\n", numctor, numdtor);
assert(numctor == 1);
assert(numdtor == 1);
numctor = numdtor = 0;
test2();
printf("numctor = %d, numdtor = %d\n", numctor, numdtor);
assert(numctor == 1);
assert(numdtor == 1);
}
Current results:
numctor = 1, numdtor = 1
numctor = 1, numdtor = 0
core.exception.AssertError at bug3516(31): Assertion failure
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list