http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56303
Bug #: 56303 Summary: [C++11] ICE in lambda with closure on member variable of a template class Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: crill...@tiscali.it Created attachment 29432 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29432 the ii file generated by the compiler Hi, I get an internal compiler error with a C++11 program on GCC 4.7.2, targeting MinGW on Windows 7 64 bit. I've also checked that the same error is generated on GCC 4.7.1 on a linux virtual machine (opensuse 12.2 64bit on VirtualBox, hosted by my Windows 7 64 bit operating system). As requested on instructions, I have used the -Wall -Wextra -fno-strict-aliasing -fwrapv options to better detect errors in code but that didn't change the result. I also used -pedantic, idem. I used -save-temps to save the ii file that I attach to this post. The error is "Segmentation Fault". I've seen I get it using a closure, also with variants in the use of [] operator: [&], [this], [=] as indicated in the comment in the code. When I write [] I get "this not captured" error instead (seems no compiler error). I attach the .ii file generated by the compiler (4.7.2 on Windows 7 64bit). The program is : //////////////////////////////////// #include <set> #include <vector> using namespace std; template<class elements_it> class my_iterator { public: my_iterator(elements_it begin, elements_it end) : begin_(begin), end_(end), i(0) {} void f() { for_each(begin_, end_, [=](typename elements_it::value_type) { // segmentation fault with [&], [this], [=] // "this" not captured with [] if(v[i]) return; }); } private: elements_it begin_; elements_it end_; size_t i; vector<int> v; }; int main(int argc, char* argv[]) { set<int> elements = { 1, 2, 3 }; my_iterator<set<int>::iterator> it(begin(elements), end(elements)); } //////////////////// I get the following compiler error: >g++ -pedantic -Wall -Wextra -fno-strict-aliasing -fwrapv -save-temps --st d=c++11 test_enumeration1.cpp -o test_enumeration1_gpp.exe test_enumeration1.cpp: In lambda function: test_enumeration1.cpp:21:10: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions.