This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/63192] New: non-mutable lambda capture by value on reference does not apply const


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63192

            Bug ID: 63192
           Summary: non-mutable lambda capture by value on reference does
                    not apply const
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dacamara.cameron at gmail dot com

This is an example taken directly from the standard (5.1.2.19) with a bit of
decoration for output. The last case produces false when it should be true.


int main() {
    float x, &r = x;
    std::cout<<std::boolalpha;
    [=] { // x and r are not captured (appearance in a decltype operand is not
an odr-use)
        std::cout<<std::is_same<decltype(x), float>::value<<'\n' // has type
float
        <<std::is_same<decltype((x)), float const&>::value<<'\n' // has type
float const& because this lambda
                                                                 // is not
mutable and x is an lvalue
        <<std::is_same<decltype(r), float&>::value<<'\n'         // r1 has type
float& (transformation not considered)
        <<std::is_same<decltype((r)), float const&>::value;      // r2 has type
float const&
    }();
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]