J'essaye d'appliquer une transformation à un mpl::string
, mais je n'arrive pas à le compiler. J'utilise MS VC++ 2010 et Boost 1.43.0. Le code:Comment appliquer une transformation mpl :: à une chaîne mpl :: string?
#include <boost/mpl/string.hpp>
#include <boost/mpl/vector_c.hpp>
#include <boost/mpl/transform.hpp>
#include <boost/mpl/plus.hpp>
#include <boost/mpl/arithmetic.hpp>
using namespace boost;
int main() {
// this compiles OK
typedef mpl::vector_c<int, 'abcd', 'efgh'> numbers;
typedef mpl::transform<numbers, mpl::plus<mpl::_1, mpl::int_<1> > >::type result_numbers;
// this doesn't (error C2039: 'value' : is not a member of 'boost::mpl::has_push_back_arg')
typedef mpl::string<'abcd', 'efgh'> chars;
typedef mpl::transform<chars, mpl::plus<mpl::_1, mpl::int_<1> > >::type result_chars;
}
J'ai posté le message d'erreur complet à http://paste.ubuntu.com/447759/.
Les MPL docs disent que mpl::transform
a besoin d'un Forward Sequence
et mpl::string
est un Bidirectional Sequence
, que je crois est un type de Forward Sequence
, donc je pensais que ça fonctionne. Est-ce que je fais quelque chose de mal, ou est-ce carrément impossible? Si oui, pourquoi?
Merci!
* "Est-ce que je fais quelque chose de mal?" * Um, essayant la métaprogrammation de template en C++? *** canards *** –
Si vous utilisez _MS_ VC 2010 pourquoi publiez-vous vos problèmes sur un site web _Ubuntu_? – KitsuneYMG