
Hi, When using Boost.Lambda (r41287) with MSVC8 SP1 (v14.0.50727.762) in one of my projects, I get an ICE in boost/lambda/detail/arity_code.hpp, line 49 (get_arity::value) when compiling in Release mode (with PCH and LTCG). Basically the use case is something like this, really nothing particular about it as far as I can tell (I use the same construct all over the place): -------------------- template< typename T > bool Swallow(const T& t) { try { t(); return true; } catch (...) { return false; } } struct Foo { void Bar() { Swallow(bind( &Foo::DoBar, this )); } // ^^ ICE in arity_code.hpp during this instantiation void DoBar() { ... } }; -------------------- Unfortunately I couldn't make a repro case outside this specific project... The "usual" fix of splitting the complex expression (get_arity::value) with the help of a separate typedef solved the problem for me. I attached the patch (from trunk/) I used. Cheers, Francois