Here's the code: ============================================== #include <iostream> using namespace std; auto test = [] () { return [] (istream &ris) -> istream& { return ris; }; }; int main() { cin >> test(); return 0; } ============================================== I'm not sure whether this code is correct but it just crashes g++ 4.5.0. I'm compiling with: g++ -std=c++0x -pedantic -Wall Test.cpp I'm doing code like that because I wish to implement a custom parameterized I/O manipulator without using implementation-specific types such as smanip and stuff. Note that it doesn't crash if I just call test() without using the result on cin, thus I think the problem is matching the returned lambda against the version of operator >> that takes a function as an argument. PS: I don't think there's any difference but I'm using MinGW and I'm currently unable to test on Linux with real g++.
fails on Linux too, it's not a target-specific problem
I'm looking at this issue. *** This bug has been marked as a duplicate of bug 47687 ***