This is the mail archive of the gcc@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: bug report...


>>>>> Nathan Myers <ncm@cygnus.com> writes:

> B. James Phillippe wrote:
>> 
>> On 5 Jun 1998, Alexandre Oliva wrote:
>> 
>> > Yup, AFAI recall, the problem has to do with generating templates of
>> > local classes in function templates.  Bear in mind, however, that
>> > using local classes as template arguments is *not* ANSI/ISO C++
>> > ([temp.arg.type]/2 explicitly forbits this), it is an extension
>> > provided by gcc and egcs.
>> 
>> I'm sorry, I missed the first part of this thread.  Can you provide a small
>> snippet of code that illustrates this?  You say this is explicitly
>> forbidden from ISO C++ and it is supported anyway by egcs; is there a
>> warning or compiler flag that prevents someone from inadvertently writing
>> this non-portable code?

> Evidently the warning currently has the form:

>   In function `void sort(T *, int)':
>   In file included from teste.cc:1:
>   Internal compiler error.

As Alexandre said, that's fixed in the current sources.

> for code (as requested)

>   template< class T >
>   void sort( T* t, int n )
>   {       struct  { int operator()(T i, T j) 
>                    { return (i < j) ? -1 : ((j < i) ? 1 : 0); } 
>           } c;
>           sort(t,n,c,0);  // this is the STL template algorithm.
>   }

The compiler doesn't give any diagnostic for this testcase because there's
nothing wrong with it.  It doesn't instantiate any templates using a local
class; in fact, it doesn't instantiate any templates at all.

Jason


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