[llvm-bugs] [Bug 36769] New: clang doesn't to warn about return of reference to temporary when pointers to members are used

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Mar 16 11:02:31 PDT 2018


https://bugs.llvm.org/show_bug.cgi?id=36769

            Bug ID: 36769
           Summary: clang doesn't to warn about return of reference to
                    temporary when pointers to members are used
           Product: clang
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: andy.somerville at gmail.com
                CC: llvm-bugs at lists.llvm.org

Created attachment 20079
  --> https://bugs.llvm.org/attachment.cgi?id=20079&action=edit
test case: no warning on returning reference to temp via pointer-to-member

Expected: Warning about return of reference to temporary

Observed: No warning

Test case (also attached):

////////////////////////////////////////
struct Derp { int b = 66; };

int & memba(Derp obj,int Derp::*mem) {
    return obj.*mem; // <-- would normally warn here if we weren't using
reference to member
}

int main() {
    Derp d;
    return memba(d, &Derp::b);
}
///////////////////////////////////////


There might be a technical reason this cannot be detected, but using pointers
to data member seem to prevent clang from warning about returning a reference
to a temporary.

On the face of it since the value of a pointer to member is not known until
runtime it would seem impossible to warn about what it refers to, but AFAIK,
since pointers to members cannot refer to references, we can deduce that
returning a reference to *any* member of temporary would in turn be returning a
reference to a temporary.


Tested in:

3.7, 3.8, 3.9, 4.0, 5.0, 6.0, 7.x (trunk 2018-03-15)

    clang++ -Wall -Wpedantic --std=c++11 warningtestcase.cpp

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180316/fb195448/attachment.html>


More information about the llvm-bugs mailing list