public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org,
Subject: Re: c++/8778: ICE on illegal initialization of non-integral static in-class constant
Date: Mon, 02 Dec 2002 16:26:00 -0000	[thread overview]
Message-ID: <20021203002601.28141.qmail@sources.redhat.com> (raw)

The following reply was made to PR c++/8778; it has been noted by GNATS.

From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: Volker Reichelt <reichelt@igpm.rwth-aachen.de>
Cc: gcc-gnats@gcc.gnu.org, <gcc-bugs@gcc.gnu.org>, <sgunderson@bigfoot.com>
Subject: Re: c++/8778: ICE on illegal initialization of non-integral static
 in-class constant
Date: Mon, 2 Dec 2002 18:19:36 -0600 (CST)

 > I don't quite agree with Wolfgangs analysis.
 
 :-)
 
 > Initializing const arrays is usually supported by gcc.
 
 True, but not as static member variables.
 
 > In fact, the code compiles if you just leave out the curly
 > braces around the initializer.
 > 
 > So the ICE is neither caused by the array initializer nor by the
 > infinite recursion (which might also come to mind as a compiler crasher)
 > as the following example shows:
 > 
 > --------------------snip here----------------------
 > template <int n> struct A
 > {
 >     static const int i = A<0>::i;     // works
 >     static const int i = { A<0>::i }; // ICE
 >     static const int i = { 1 };       // works
 > };
 > --------------------snip here----------------------
 
 Your analysis gives a clue as to what goes wrong in the compiler, but note 
 that the original code reads
        const static int result[] = { mylist<n-1>::result };
                              ^^^^
 This is what makes it illegal, not the curly braces. In your example, you 
 are initializing a scalar, he is initializing an array/pointer. However, 
 the curly braces seem to be the reason for the ICE, as you point out.
 
 But thanks for the analysis anyway, it will help those that actually fix 
 the problem :-)
 
 W.
 
 -------------------------------------------------------------------------
 Wolfgang Bangerth              email:           bangerth@ticam.utexas.edu
                                www: http://www.ticam.utexas.edu/~bangerth
 
 


             reply	other threads:[~2002-12-03  0:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-02 16:26 Wolfgang Bangerth [this message]
  -- strict thread matches above, loose matches on Subject: below --
2002-12-03  7:56 Wolfgang Bangerth
2002-12-03  7:26 Gabriel Dos Reis
2002-12-03  6:56 Wolfgang Bangerth
2002-12-02 16:36 Volker Reichelt
2002-12-02 16:06 Volker Reichelt
2002-12-02 12:49 bangerth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20021203002601.28141.qmail@sources.redhat.com \
    --to=bangerth@ticam.utexas.edu \
    --cc=gcc-prs@gcc.gnu.org \
    --cc=nobody@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).