
Hello All, Problem is: what the difference between "type" in such cases? 1) class type{}; and 2) class type1{}; typedef type1 type; I think, they are equal. But... look code. ///////////////////////////////////// //// Begin of code ///////////////////////////////////// #include <boost\mpl\apply.hpp> #include <boost\mpl\lambda.hpp> #include <boost\mpl\placeholders.hpp> namespace mpl = boost::mpl; struct CClass{ void Init(int& i){i--;};}; namespace impl { template<typename TBase> struct CClass0:public TBase { public: void Init(int& i){i--; TBase::Init(i);}; }; template<typename TBase> struct CClass1:public TBase { public: void Init(int& i){i--; TBase::Init(i);} ;}; } typedef mpl::lambda<impl::CClass0<mpl::_> >::type CClass0; typedef mpl::lambda<impl::CClass1<mpl::_> >::type CClass1; template <typename T1, typename T2> struct CMetaFunction1 { struct type1: public mpl::apply<T1, T2>::type{}; typedef type1 type; }; template <typename T1, typename T2> struct CMetaFunction2 { struct type: public mpl::apply<T1, T2>::type{}; }; class CBase { CBase(void) { { CMetaFunction1<CClass1, CMetaFunction1<CClass0, CClass>::type >::type g; int i=5; g.Init(i); } { CMetaFunction2<CClass1, CMetaFunction2<CClass0, CClass>::type >::type g; int i=5; g.Init(i); } } }; /////////////////////////////////////////////// end of code ////////////////////////////////////////////// Explanation: Want impl::CClass1<impl::CClass0<CClass> >; and running g.Init(); CClass1::Init(); CClass0::Init(); CClass::Init(); using CMetaFunction1 everything is OK. but CMetaFunction2 gives CClass0::Init(); CClass::Init(); WHY ??? Tested on VC++7.0 and GNU Dev-C++ P.S. when use my own lamda function Both variants works OK. /////////////////////////////////////////////// template <template <typename> class TBase> struct lambda { template <typename T> struct apply { typedef TBase<T> type; }; }; typedef lambda<impl::CClass0> CClass0; typedef lambda<impl::CClass1> CClass1; /////////////////////////////////////////////// --Sincerely Yours,-- --\ SergeY /-- --<>\\\ PisarchiK ///<>-- --<>()<>--Never surrendeR--<>()<>-- mailto:Sergey_pisarchiK@tut.by