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

             Bug #: 51630
           Summary: failure to detect missing
    Classification: Unclassified
           Product: gcc
           Version: 4.5.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: ra...@rrsd.com


Created attachment 26149
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26149
program compiles with error when an error should be detected

the following code:

struct name {};

bool test1(){
    name x, y;
    return x < y;
}

name test2(){
    name x, y;
    return (x < y) ? y : x;
}

emits two error message as it should due to lack of < operator for name.

The following code:

template<typename T>
const T & max(const T & x, const T & y){
    return (x < y) ? y : x;
}

struct name {};

void test3(){
    name x, y, z;
    z = max(x, y); // error name doesn't have < operator
}

emits no error message.

This looks like a bug to me.  For what it's worth, this second example fails to
compile with MSVC 9.0 pointing to an error for lack of operator < as one would
expect.

Robert Ramey

Reply via email to