public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: Wolfgang Bangerth <bangerth@ices.utexas.edu>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org,
Subject: RE: c++/10273: g++ fails to compile sort() with a template operator that takes a pointer
Date: Tue, 01 Apr 2003 02:36:00 -0000	[thread overview]
Message-ID: <20030401023600.25457.qmail@sources.redhat.com> (raw)

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

From: Wolfgang Bangerth <bangerth@ices.utexas.edu>
To: "Darren Reed (OSE)" <darrenr@optimation.com.au>
Cc: gcc-bugs@gcc.gnu.org, <gcc-gnats@gcc.gnu.org>
Subject: RE: c++/10273: g++ fails to compile sort() with a template operator
 that takes a pointer
Date: Mon, 31 Mar 2003 20:26:00 -0600 (CST)

 > >   x.cc: In function `void std::doit()':
 > >   x.cc:31: type/value mismatch at argument 1 in template parameter list for `
 > >    template<std::ClassName*<anonymous> > struct std::xLess'
 > >   x.cc:31:   expected a constant of type `std::ClassName*', got `std::ClassName*'
 > >
 > > I think the message says it quite clearly: first the type/value mismatch,
 > > then in addition that it expected a value and got a type. What more do you
 > > want?
 > 
 > Ok, so you know how to parse that message better than I do.  To me it says
 > "expected type 'A', got 'A'" (where A is "std::ClassName*") and hence it
 > does not make any sense to me. 
 
 No, read it, it says
     expected a constant [i.e. a value] of type 'X', got 'X' [which is a type]
 
 The situation is the same as if you had written
     template <int N> class X{};
 and then used it as
     X<int> x;
 That won't work.
 
 
 > I'm the programmer, so because I don't
 > intend for there to be a value there, I don't see a value there. 
 
 If you intend there to be a type, then you should declare the template as 
 taking a type, rather than a value.
 
 
 > The error
 > doesn't tell me that using * implies a value is being used in a template
 > where a type should be.
 
 What you wrote was 
     template <class ClassName *>  struct X {};
 which, since ClassName is the name of an existing class, is equivalent to
     template <ClassName *> struct X {};
 (that is just the same as declaring variables as  "struct X x;" or "X x;"
 is equivalent in C++.)
 
 
 > Just for the sake of comparison, I tried compiling the same piece of code
 > with Visual Studio .Net and SUNWspro CC.  Both of those compilers (rightly
 > or wrongly, I don't know) complain about the code when it comes to parsing
 > the template statement.  In my situation, this type of verbosity helps.
 > [...verbosity of other compilers deleted...]
 
 These compilers simply don't realize that
     template <class C *> struct X {};
 and
     template <C *>
 
 W.
 
 -------------------------------------------------------------------------
 Wolfgang Bangerth             email:            bangerth@ticam.utexas.edu
                               www: http://www.ticam.utexas.edu/~bangerth/
 
 


             reply	other threads:[~2003-04-01  2:36 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-04-01  2:36 Wolfgang Bangerth [this message]
  -- strict thread matches above, loose matches on Subject: below --
2003-04-01  0:26 Darren Reed (OSE)
2003-03-31 23:26 Darren Reed (OSE)
2003-03-31 16:10 bangerth
2003-03-31 10:11 Gabriel Dos Reis
2003-03-31 10:04 darrenr

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=20030401023600.25457.qmail@sources.redhat.com \
    --to=bangerth@ices.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).