[mpl] Crossing More Runtime Boundaries

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.
participants (1)
-
Eric Lemings