2012-02-17 1 views
1

Я новичком, чтобы повысить и метапрограммирование так что моя проблема заключается в следующем:Заполнение зОго :: вектора с данными вектора типа гетерогенной подталкивание :: слитых

typedef fusion::vector<int, char, double, std::string> my_row; 
typedef std::vector<my_row> my_vec; 

my_row my_data = my_row(3,"f",2,"2"); 

my_vec t; 

t.push_back(my_data); // this doesn't compile and gives error <C2039> 

Это может быть очень глупым вопросом для большинства из вас, но почему это не компилируется? Нужно ли каким-либо образом преобразовать вектор my_row в то, что можно сохранить в обычном std :: vector?

Также может кто-то указать мне на хорошую вводную книгу по метапрограммированию и усилению, чтобы я получил менталитет использования boost и некоторые примеры программирования с использованием boost?

Я действительно считаю, что онлайн-сайт руководства является абсолютным мусором. По крайней мере, это выглядит так, чтобы кто-то не был совершенно новым для C++ и STL, но теряется в десятках объявлений «struct», а «::» и «<>». В общем, все то, что просто усиливает, трудно использовать и понимать для новичков.

ответ

2

"f" - это строка, а не char. Вместо этого попробуйте 'f'.