https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79378
Bug ID: 79378
Summary: lambda init-capture adds const
Product: gcc
Version: 7.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: barry.revzin at gmail dot com
Target Milestone: ---
Minimal example:
template <class T, class U> struct is_same { static constexpr bool value =
false; };
template <class T> struct is_same<T, T> { static constexpr bool value = true;
};
int main() {
int i = 0;
return [j = i]() {
static_assert(is_same<decltype(j), int>::value, "!");
return j;
}();
}
The static_assert fires on gcc 7 (and every other version I've tried) because
it says that decltype(j) is const int. If the lambda were marked mutable, then
decltype(j) is reported correct as int.