This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ 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: Decorate C prototypes


Martin Sebor <sebor@roguewave.com> writes:
> Mark Mitchell wrote:
> [...]
> > 2. We should verify that the compiler accepts
> > 
> >   extern "C" void abort(void);
> >   namespace std {
> >     extern "C" void abort(void) throw();
> >   }
> > 
> > and:
> > 
> >   namespace std {
> >     extern "C" void abort(void) throw();
> >   }
> >   extern "C" void abort(void);
> > 
> > That's important in case a user explicitly declares the function, or
> > #include's the C header.
> 
> gcc 4.3.1 (the latest I have access to at the moment) does accept
> this even though it's ill-formed according to [except.spec], p2:
> 
>    If any declaration of a function has an exception-specification,
>    all declarations, including the definition and an explicit
>    specialization, of that function shall have an exception-
>    specification with the same set of type-ids.

Yes, but are those really the same functions?  It seems to me like one
is `abort' and the other is `std::abort'.  Without any sort of using
declaration, these are distinct ... no?

-tom


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