Dear all,

I would like to post a bug report for the GNU C/C++ compiler 3.3-e500.

We use the compiler to generate code for a PowerPC processor.

Used invokation line for the GNU C++ compiler:

ccppc -c -x c++ -ansi -Wall -Werror -mcpu=8540 -fverbose-asm -mbig
      -fmerge-templates -mmultiple -mno-string -mstrict-align -O3
      -fno-exceptions -fno-rtti -fno-builtin-printf
      -I<some include paths>
      -D<some #define's>
      X.CPP -oX.O


// file X.CPP

template <typename T_>
T_ f1 (const T_* p)                     // function #1
{ return p[1]; }

template <typename R_, typename T_>
R_ f1 (const T_* p)                     // function #2
{ return p[2]; }


float f (const int* p)
{ return f1<int>(p); }                  // "f1<int>(const int*)" or
                                        // "f1<int,int>(const int*)" ?


The compiler doesn't recognize that the call to f1() is ambiguous and
it selects function #2. (BTW, Comeau online rejects the code fragment
above.)

Kind regards
W. Roehrl


-- 
           Summary: Unrecognized ambiguity in function overloading
           Product: gcc
           Version: 3.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: wolfgang dot roehrl at gi-de dot com
 GCC build triplet: sparc-sun-solaris2.5.1
  GCC host triplet: i386-pc-mingw32
GCC target triplet: powerpc-wrs-vxworks


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31597

Reply via email to