[Bug c++/63192] New: non-mutable lambda capture by value on reference does not apply const
dacamara.cameron at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Sep 5 20:55:00 GMT 2014
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&
}();
}
More information about the Gcc-bugs
mailing list