Я пытаюсь применить преобразование к mpl::string
, но не могу его скомпилировать. Я использую MS VC++ 2010 и Boost 1.43.0. Код:Как применить mpl :: transform к строке 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;
}
Я отправил полное сообщение об ошибке в http://paste.ubuntu.com/447759/.
The MPL документы говорят, что mpl::transform
нуждается в Forward Sequence
и mpl::string
является Bidirectional Sequence
, который я собираю это тип Forward Sequence
, поэтому я думал, что это работает.
Я делаю что-то неправильно или это невозможно? Если да, то почему?
Спасибо!
* «Я делаю что-то не так?» * Ум, пытающийся метапрограммировать шаблон на C++? *** утки *** –
, если вы используете _MS_ VC 2010, почему вы публикуете свои проблемы на сайте _Ubuntu_? – KitsuneYMG