https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91849
Bug ID: 91849 Summary: Misleading diagnostic message when binding reference to unrelated type Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mpolacek at gcc dot gnu.org Target Milestone: --- void g () { float f = 1.f; int &r = f; } void g2 () { int &r = 1.f; } gives q.C: In function ‘void g()’: q.C:5:12: error: cannot bind non-const lvalue reference of type ‘int&’ to an rvalue of type ‘int’ 5 | int &r = f; | ^ q.C: In function ‘void g2()’: q.C:11:12: error: cannot bind non-const lvalue reference of type ‘int&’ to an rvalue of type ‘int’ 11 | int &r = 1.f; | ^~~ which could be improved. clang++ says q.C:5:8: error: non-const lvalue reference to type 'int' cannot bind to a value of unrelated type 'float' int &r = f; ^ ~ q.C:11:8: error: non-const lvalue reference to type 'int' cannot bind to a temporary of type 'float' int &r = 1.f; ^ ~~~