http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51833
--- Comment #5 from Richard Eames <naddiseo at gmail dot com> 2012-01-12 20:01:15 UTC --- I've reduced the testcase further. It appears to be a problem with templates. The reason I was passing a function type in the template was because std::function<bool(Arg*)> wouldn't work for me. If I take out the first parameter so that it's just the function pointer, then std::function works with the lambda as a default argument, but as soon as the function is templated I get the IRC.