
On 10/21/2006 11:11 AM, Larry Evans wrote: [snip]
Sorry for noise. I still need to reread the docs and experiment before I understand how bind works.
The following works: template < unsigned I
struct a {}; struct f4 { template< typename T1, typename T2, typename T3, typename T4 > struct apply { typedef vector<T1,T2,T3,T4> type; }; }; MPL_TEST_CASE() // partially bound metafunction classes { typedef bind4<f4, a<1>,a<2>,_1,_2 > f4_a1_a2; typedef apply_wrap2<f4_a1_a2, a<3>,a<4> >::type f4_a1_a2_a3_a4; MPL_ASSERT(( boost::is_same<f4_a1_a2_a3_a4,vector<a<1>,a<2>,a<3>,a<4> > > )); } So, apparently, the n in apply_wrapn is >= max placeholder arg in the bind args. Rereading boost.bind, I now see the similarity. Sorry for the noise, but further examples like the f4 example above would have helped.