quelqu'un peut-il me dire pourquoi ci-dessous l'affirmer échouer?générer mpl :: vecteur <> des clés d'un mpl :: carte
quesiton 1:
typedef mpl::map<mpl::pair<int, unsigned>, mpl::pair<char, unsigned char> > m;
typedef mpl::fold<m, mpl::vector<>, mpl::push_back<mpl::_1, mpl::first<mpl::_2>>>::type keys;
BOOST_STATIC_ASSERT((std::is_same<boost::mpl::vector<int, char>, keys>::value == 1));
question 2: si je veux écrire une fonction fois au produit un mpl :: vectorielle du pointeur sur la clé de la carte, comment dois-je écrire?
template <typename T>
pointer_type {
typedef T* pointer_type;
}
typedef mpl::fold<m, mpl::vector<>, mpl::push_back<mpl::_1, pointer_type<mpl::first<mpl::_2>>>::type>::pointer_type
> keys;
semble ne pas fonctionner. le mpl :: _ 2 n'est jamais évalué.