Boost.EnableIf defines enable_if etc, and goes on to define lazy_enable_if, which
the documentation states is for the circumstances and compilers when the non-lazy
version would break since the instantiation for which SFINAE should apply is a nested
instantiation which is not properly processed by some compilers.

What I don't understand is why anyone would wish to use the non-lazy versions,
since AFAICS the lazy version will always work.

Then the obvious question is why the non-lazy versions exist at all?

Thanks, Rob.

--
ACCU - Professionalism in programming - http://www.accu.org