From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18962 invoked by alias); 11 Jun 2011 13:27:34 -0000 Received: (qmail 18951 invoked by uid 22791); 11 Jun 2011 13:27:33 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 11 Jun 2011 13:27:19 +0000 From: "schaub.johannes at googlemail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/49372] New: Temporaries evaluated for arguments of a default constructors of array elements not destructed properly (?) X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: schaub.johannes at googlemail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Sat, 11 Jun 2011 13:27:00 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2011-06/txt/msg00947.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49372 Summary: Temporaries evaluated for arguments of a default constructors of array elements not destructed properly (?) Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned@gcc.gnu.org ReportedBy: schaub.johannes@googlemail.com This testcase outputs a surprising result: struct A { A() { std::cout << "C" << std::endl; } ~A() { std::cout << "D" << std::endl; } }; struct B { B(A const& a = A()) { } }; typedef B array[2]; int main() { array{}; } GCC prints "CCDD". I would have expected "CDCD", as it seems that is the intent of the wording in the spec (FDIS). The FDIS however seems to be contradicting here, but it appears to me that GCC should better print "CDCD", so as to follow the intent. Originated from http://stackoverflow.com/questions/6315670/when-an-array-is-created-by-a-subexpression-what-happens-with-the-temporaries-th .