[Bug c++/83802] New: Caller doesn't destroy default argument passed to a constructor
pdziepak at quarnos dot org
gcc-bugzilla@gcc.gnu.org
Thu Jan 11 14:13:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83802
Bug ID: 83802
Summary: Caller doesn't destroy default argument passed to a
constructor
Product: gcc
Version: 7.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: pdziepak at quarnos dot org
Target Milestone: ---
Godbolt link: https://godbolt.org/g/fBbYgF
When the following code is compiled with -std=c++17:
struct foo {
~foo();
};
extern foo f;
struct bar {
bar(int, foo = f);
};
void fn()
{
bar b(0);
}
...the destructor of the copy of f passed to the bar's constructor is never
called:
fn():
pushq %rbp
movq %rsp, %rbp
subq $16, %rsp
leaq -1(%rbp), %rdx
leaq -2(%rbp), %rax
movl $0, %esi
movq %rax, %rdi
call bar::bar(int, foo)
nop
leave
ret
More information about the Gcc-bugs
mailing list