$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Eric Lemings (lemings_at_[hidden])
Date: 2006-09-20 13:19:49
Currently, the integral constant wrappers (integral_c, int_, etc.) have
a function call operator that returns the runtime value of the type.
Naturally, the metafunctions for arithmetic operations inherit these
operators. Example:
typedef plus< int_<1>, int_<2> > t1;
assert (t1() == 3);
What if MPL took this a step further and extended the placeholders
concept to account for runtime parameters? The plus class template
would then have a function call operator that accepts zero or more
arguments depending on the number of placeholders. Some examples:
typedef plus< int<1>, _ > t2;
assert (t2(2) == 3);
typedef plus< _, _ > t3;
assert (t3(1, 2) == 3);
typedef plus< _, plus< _, int_<-1> > > t4;
assert (t4(1) == 1);
With a metafunction to count placeholders in a lambda expression and
some template specialization, I believe this is quite feasible. It
would be useful for combining MPL arithmetic operations into more
complex metafunctions that mix integral constants with runtime
arguments.
Thoughts?
Thanks,
Eric.