This is the mail archive of the gcc-prs@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]
Other format: [Raw text]

Re: c++/4205


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

From: Nathanael Nerode <neroden@twcny.rr.com>
To: gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, Jens.Maurer@gmx.net,
   gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: c++/4205
Date: Fri, 3 Jan 2003 07:07:54 -0500

 This has a further perverse piece of behavior not noted before:
 the following code will, correctly, give an error!
 --
  template<typename F> void quirk(F f) {
    (*f) (1);
  }
 
 
 // void foo(int i, int j = 5){}
  void bar(int i, int j)    {}
 
  int main() {
 //   quirk(&foo);
    quirk(&bar);
  }
 --
 And so will this:
 --
 template<typename F> void quirk(F f) {
    (*f) (1);
  }
 
 
  void foo(int i, int j = 5){}
  void bar(int i, int j)    {}
 
  int main() {
    quirk(&bar);
    quirk(&foo);
  }
 --
 
 As long as "foo" is seen *first*, it 'immunizes' all subsequent functions.  
 But not otherwise.  This is really bad behavior.  
 It may possibly be related to c++/3784, which has similar "first one seen 
 controls everyone else" behavior, though I doubt it.


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