https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79307
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |diagnostic
Status|UNCONFIRMED |RESOLVED
Resolution|--- |DUPLICATE
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Szikra from comment #0)
> I thought (something like) this was fixed in bug 986
>
> Code:
> struct TestRefInt {
> TestRefInt(const int& a) : a_(a) {};
> void DoSomething() { cout << "int:" << a_ << endl; }
> protected:
> const int& a_;
> };
This is harder to diagnose than the 986 cases. There's nothing wrong with
binding the parameter 'a' to a temporary. And (in general) there's nothing
wrong with binding the reference member 'a_' to something that's already a
reference. The problem is indirect, and the two locations might not even be in
the same translation unit.
We still want a warning, but it's harder to do.
> struct TestRefIntDirect {
> TestRefIntDirect(int a) : a_(a) {};
> void DoSomething() { cout << "int:" << a_ << endl; }
> protected:
> const int& a_;
> };
This is bug 44974.
> Possible duplicate of bug #44859 or bug #51270.
Looks more like bug 49974 to me.
*** This bug has been marked as a duplicate of bug 44974 ***