This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: gcc 2.95.2 does not allow explicit template parameters in function declaration of partial specialization.


llewelly@198.dsl.xmission.com writes:

| [1  <text/plain; US-ASCII (7bit)>]
| template<typename T0,typename T1>
|   void foo();
| 
| template<typename T0>
|   void foo<T0,int>();

[...]

| function_template_specialization_bug.cc:5: template-id `foo<T0, int>'
| in declaration of primary template 

G++ is right?

| 
| Section 14.8.1 paragraph 2 implies that this is allowed.

Really?

14.8.1/2:

  A template argument list may be specified when referring to a
  specialization of a template function
  -- when a function is called,
  -- when the address of a function is taken, when a function
     initializes a reference to function, or when a pointer to member
     function is formed,
  -- in an explicit specialization,
  -- in a friend declaration.

  Trailing tmeplate arguments that can be deduced (14.8.2) may be
  omitted from the list of explicit template-arguments. If all of the
  template arguments can be deduced, they may all be omitted, in this
  case, the emppty argument list <> itself may also be omitted.


-- Gaby

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]