The following code compiles without warning and has an exit value of 1, which
is correct according to the standard. However, an implicit conversion from
double to int happened without a corresponding warning. This seems incorrect to
me, and similar to bug 24525 (
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24525 ).


struct T {
  double x;
  explicit T(double x) : x(x) {
  }
  operator double() {
    return x;
  }
};

T f() {
  return T(5.3);
}

int main() {
  double t = false ? 0 : f();
  return t == 5.0;
}


-- 
           Summary: Failure to warn about implicit conversion from double to
                    int
           Product: gcc
           Version: 4.4.3
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: alvaro dot begue at gmail dot com
 GCC build triplet: x86_64-suse-linux
  GCC host triplet: x86_64-suse-linux
GCC target triplet: x86_64-suse-linux


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

Reply via email to