On 09/18/13 18:33, Agustín K-ballo Bergé wrote:
The following snippet fails to compile (tested with 1.54.0 and trunk, several compilers),
#include
#include #include int main() { using namespace boost::mpl; static_assert(and_
::value, "U KID?"); //this one fires static_assert(or_ ::value, "U KID?"); //this one is ok } This issue actually showed up in a variadic template scenario. Is this a bug? I feel like I'm doing something really wrong...
I guess one may not call `and_` with less than two arguments. If that's the case, it would be helpful if it would be impossible to instantiate it with a single argument.
Regards,
There's a variadic mpl::and_ and mpl::or_ which I think solves this problem. However, I seriously doubt it would compile as fast because, my impression is that the standard boost mpl spent a lot of effort using the preprocessor to speed compile times, and the variadic versions here: http://svn.boost.org/svn/boost/sandbox/variadic_templates/boost/mpl/ were not coded with compile speed in mind :( -regards Larry