
Stjepan Rajko wrote:
2008/7/27 noman javed <noman_bwp@yahoo.com>:
struct Poplist { template<class seq> struct apply { typedef pop_front<seq>::type res; static const int value = size<seq>::value; }; };
for starts, you need to use typename here:
typedef typename pop_front<seq>::type res;
Also, apply does not have a 'type' member typedef, so I think it is not a metafunction. What about (untested) namespace mpl = ::boost::mpl; struct Poplist : mpl::lambda<mpl::pop_front<mpl::placeholders::_1> >::type {} or (untested) struct poplist{ template<class Seq> struct apply : mpl::pop_front<Seq> {}; }; I think section 3.2 of Abraham's 'C++ Template Metaprogramming' book has some examples. --John