kleinster Datentyp für Konstante -> mpl -> Fehler
-
Hallo,
ich möchte für Zahlen in einem bestimmten Bereich den Besten Datentyp finden. Dies möchte ich per boost::mpl realisieren.
Mein Ansatz:template<long long lMin,long long lMax> class CGT { private: typedef mpl::vector< mpl::vector<mpl::integral_c<long long,CHAR_MIN>, mpl::integral_c<long long,CHAR_MAX>, char>, mpl::vector<mpl::integral_c<long long,0>, mpl::integral_c<long long,UCHAR_MAX>, unsigned char>, mpl::vector<mpl::integral_c<long long,SHRT_MIN>, mpl::integral_c<long long,SHRT_MAX>, short>, mpl::vector<mpl::integral_c<long long,0>, mpl::integral_c<long long,USHRT_MAX>, unsigned short>, mpl::vector<mpl::integral_c<long long,INT_MIN>, mpl::integral_c<long long,INT_MAX>, int>, mpl::vector<mpl::integral_c<long long,0>, mpl::integral_c<long long,UINT_MAX>, unsigned int>, mpl::vector<mpl::integral_c<long long,LONG_MIN>, mpl::integral_c<long long,LONG_MAX>, long>, mpl::vector<mpl::integral_c<long long,0>, mpl::integral_c<long long,ULONG_MAX>, unsigned long> >IntegralTypes_t; typedef typename mpl::find_if<IntegralTypes_t, typename mpl::and_< typename mpl::less_equal< typename mpl::at_c<typename mpl::_1,0>::type, mpl::integral_c<long long,lMin> >, typename mpl::greater_equal< typename mpl::at_c<typename mpl::_1,1>::type, mpl::integral_c<long long,lMax> > > >::type pIntegralType_t; public: typedef typename mpl::at_c<typename mpl::deref<pIntegralType_t>::type,2>::type type; };Leider klappt dies so nicht
Bei der Instanzierung meckert der Compiler (VC++
bei dem Code "typename mpl::at_c<typename mpl::_1,1>" mit dem Fehler "
20>C:\Boost\include\boost-1_34_1\boost/mpl/next_prior.hpp(31) : error C2039: 'next' : is not a member of 'boost::mpl::void_'". "typename mpl::at_c<typename mpl::_1,0>" klappt dagegen wunderbar.Was ist falsch?