public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/52369] New: Const-qualified non-class base member and defaulted default constructor
@ 2012-02-24 11:35 ai.azuma at gmail dot com
  2012-02-24 14:06 ` [Bug c++/52369] " fabien at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: ai.azuma at gmail dot com @ 2012-02-24 11:35 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52369

             Bug #: 52369
           Summary: Const-qualified non-class base member and defaulted
                    default constructor
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: ai.azuma@gmail.com


Created attachment 26740
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26740
Output of -v option and preprocessed file

The following ill-formed code is wrongly accepted by GCC 4.7.0 20120218
(experimental).

////////////////////
class B
{
private:
  int const v_;
};

class D
  : public B
{};

int main()
{
  D d;
}
////////////////////

B's default constructor is implicitly-declared and has no ctor-initializer. So,
B::v_ is not designated by any mem-initializer-id and subject to
default-initialization. However, default-initialization of a const-qualified
non-class type is ill-formed. Therefore, the use of B's constructor is
ill-formed (and it should be defined as deleted in -std=c++11 mode), and the
use of D's is also ill-formed.

N.B. A similar (but a bit different) problem seems to have been resolved in
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29043 .


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/52369] Const-qualified non-class base member and defaulted default constructor
  2012-02-24 11:35 [Bug c++/52369] New: Const-qualified non-class base member and defaulted default constructor ai.azuma at gmail dot com
@ 2012-02-24 14:06 ` fabien at gcc dot gnu.org
  2012-02-24 15:21 ` redi at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: fabien at gcc dot gnu.org @ 2012-02-24 14:06 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52369

fabien at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2012-02-24
                 CC|                            |fabien at gcc dot gnu.org
         AssignedTo|unassigned at gcc dot       |fabien at gcc dot gnu.org
                   |gnu.org                     |
     Ever Confirmed|0                           |1
      Known to fail|                            |4.1.2, 4.2.4, 4.3.6, 4.5.3,
                   |                            |4.7.0

--- Comment #1 from fabien at gcc dot gnu.org 2012-02-24 14:05:19 UTC ---
Confirmed.

Can someone please test it on 4.6.0 and 4.6.2 ?
Thanks.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/52369] Const-qualified non-class base member and defaulted default constructor
  2012-02-24 11:35 [Bug c++/52369] New: Const-qualified non-class base member and defaulted default constructor ai.azuma at gmail dot com
  2012-02-24 14:06 ` [Bug c++/52369] " fabien at gcc dot gnu.org
@ 2012-02-24 15:21 ` redi at gcc dot gnu.org
  2014-03-26 21:34 ` fabien at gcc dot gnu.org
  2014-03-28 15:36 ` fabien at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2012-02-24 15:21 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52369

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-02-24 14:17:17 UTC ---
With 4.6.2 and -Wall gives the same as 4.7.0:

l.cc:4:13: warning: non-static const member 'const int B::v_' in class without
a constructor [-Wuninitialized]
l.cc: In function 'int main()':
l.cc:13:5: warning: unused variable 'd' [-Wunused-variable]

4.5.2 gives the same (except doesn't print the [-W...] info after the warnings)


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/52369] Const-qualified non-class base member and defaulted default constructor
  2012-02-24 11:35 [Bug c++/52369] New: Const-qualified non-class base member and defaulted default constructor ai.azuma at gmail dot com
  2012-02-24 14:06 ` [Bug c++/52369] " fabien at gcc dot gnu.org
  2012-02-24 15:21 ` redi at gcc dot gnu.org
@ 2014-03-26 21:34 ` fabien at gcc dot gnu.org
  2014-03-28 15:36 ` fabien at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: fabien at gcc dot gnu.org @ 2014-03-26 21:34 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52369

--- Comment #3 from fabien at gcc dot gnu.org ---
Author: fabien
Date: Wed Mar 26 21:33:28 2014
New Revision: 208854

URL: http://gcc.gnu.org/viewcvs?rev=208854&root=gcc&view=rev
Log:
2014-03-26  Fabien Chene  <fabien@gcc.gnu.org>
        PR c++/52369
        * cp/method.c (walk_field_subobs): improve the diagnostic
    locations for both REFERENCE_TYPEs and non-static const members.
    * cp/init.c (diagnose_uninitialized_cst_or_ref_member): use %q#D
    instead of %qD to be consistent with the c++11 diagnostic.

2014-03-26  Fabien Chene  <fabien@gcc.gnu.org>

        PR c++/52369
        * g++.dg/init/const10.C: New.
    * g++.dg/init/const11.C: New.
    * g++.dg/init/pr25811.C: Adjust.
    * g++.dg/init/pr29043.C: Likewise.
    * g++.dg/init/pr43719.C: Likewise.
    * g++.dg/init/pr44086.C: Likewise.
    * g++.dg/init/ctor8.C: Likewise.
    * g++.dg/init/uninitialized1.C: Likewise.

Added:
    trunk/gcc/testsuite/g++.dg/init/const10.C
    trunk/gcc/testsuite/g++.dg/init/const11.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/init.c
    trunk/gcc/cp/method.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/init/ctor8.C
    trunk/gcc/testsuite/g++.dg/init/pr25811.C
    trunk/gcc/testsuite/g++.dg/init/pr29043.C
    trunk/gcc/testsuite/g++.dg/init/pr43719.C
    trunk/gcc/testsuite/g++.dg/init/pr44086.C
    trunk/gcc/testsuite/g++.dg/init/uninitialized1.C


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/52369] Const-qualified non-class base member and defaulted default constructor
  2012-02-24 11:35 [Bug c++/52369] New: Const-qualified non-class base member and defaulted default constructor ai.azuma at gmail dot com
                   ` (2 preceding siblings ...)
  2014-03-26 21:34 ` fabien at gcc dot gnu.org
@ 2014-03-28 15:36 ` fabien at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: fabien at gcc dot gnu.org @ 2014-03-28 15:36 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52369

fabien at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|---                         |4.8.3

--- Comment #4 from fabien at gcc dot gnu.org ---
Fixed.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-03-28 15:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-24 11:35 [Bug c++/52369] New: Const-qualified non-class base member and defaulted default constructor ai.azuma at gmail dot com
2012-02-24 14:06 ` [Bug c++/52369] " fabien at gcc dot gnu.org
2012-02-24 15:21 ` redi at gcc dot gnu.org
2014-03-26 21:34 ` fabien at gcc dot gnu.org
2014-03-28 15:36 ` fabien at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).