https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70343
--- Comment #2 from tower120 <tower120 at gmail dot com> --- The workaround for all versions is use lambda that doesn't CAPTURE this, e.g. http://coliru.stacked-crooked.com/a/e223ddb156d817c1 struct Empty{}; template<class T> struct Data{ int properties_parcel4[10]; Empty j = [](auto& self){ self.properties_parcel4[0] = 10; return Empty(); }(*this); }; int main () { Data<int> k; return 0; } P.S. This maybe somehow related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61636 - problem workarounds are same.