|
Boost Users : |
From: Thyfate (thyfate_at_[hidden])
Date: 2006-09-06 07:30:01
Hello !
I have been trying to work with the MPL but I have some problems with the
composition and argument binding concepts.
1/ Here is a problem I cannot find a solution for:
I would like to have a placeholder expression (S) which takes a single
argument which is itself a placeholder expression of 2 arguments (A).
I want S when invoked with mpl::apply to return a lambda expression (B) of 1
argument which when invoked on (x) would yield the same result than applying
the pair (x, x) to (A).
This means I expect apply<S, A> == B and apply<B, x> == apply<A, x, x>.
Could someone tell me if this is possible? (I know how to do this without a
placeholder expression for (S) but I would like to improve my understanding
of them)
Typedef int_<1> one;
Typedef plus<_1, _2> A;
Typedef . S;
Typedef typename apply<S, A>::type B;
BOOST_STATIC_ASSERT(apply<B, one>::type::value == apply<A, one,
one>::type::value)
2/ Why doesn't bind take a placeholder expression ? If I want to remap a
placeholder expression, I can do for example:
bind<typename lambda<plus<_1, _2>::type, _1, _1> but why doesn't the library
invoke lambda by itself ?
(bind< plus<_1, _2>, _1, _1> wont work)
Is the combination bind/lambda the only way to remap placeholder
expressions?
3/ What is the use of protect? Where can I find some examples?
Thanks in advance,
Charles
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net