Здравствуйте, _nn_, Вы писали:
__>Как заставить boost::mpl::vector принять большое количество аргументов ? скажем 200
Я столкнулся с такой задачей в свое время, пробовал разные варианты.
Наилучшим (для моих целей) оказался такой (скопирую коммент):
/// one of (X in [1,50]):
/// - vectorX
/// - joint_view< vector50, vectorX >
/// - joint_view< joint_view< vector50, vector50 >, vectorX >
/// - joint_view< joint_view< vector50, vector50 >, joint_view< vector50, vectorX > >
Реализацию привести не могу, ибо NDA, но, я думаю, ты и сам справишься
Тут необходимо помнить, что в результате получится список с последовательным доступом.
Смотри, достаточно ли тебе этого.
Здравствуйте, _nn_, Вы писали:
__>>>Как заставить boost::mpl::vector принять большое количество аргументов ? скажем 200
A>>A>>#define BOOST_MPL_LIMIT_VECTOR_SIZE 200
A>>#include <boost/mpl/vector.hpp>
A>>
A>>И спрятаться под столом перед запуском компиляции.
__>Это я уже пробовал..
__>__>\boost\mpl\vector.hpp(36) : fatal error C1083: Cannot open include file: 'boost/mpl/vector/vector200.hpp': No such file or directory
зайди в boost/mpl/vector
файлы vector50.hpp и vector50_c.hpp
скопируй в vector200.hpp и vector200_c.hpp и в них замени
(3,(41, 50, <boost/mpl/vector/aux_/numbered_c.hpp>))
на
(3,(41, 200, <boost/mpl/vector/aux_/numbered_c.hpp>))
как-то так
Здравствуйте, night beast, Вы писали:
NB>Здравствуйте, _nn_, Вы писали:
__>>>>Как заставить boost::mpl::vector принять большое количество аргументов ? скажем 200
A>>>A>>>#define BOOST_MPL_LIMIT_VECTOR_SIZE 200
A>>>#include <boost/mpl/vector.hpp>
A>>>
A>>>И спрятаться под столом перед запуском компиляции.
__>>Это я уже пробовал..
__>>__>>\boost\mpl\vector.hpp(36) : fatal error C1083: Cannot open include file: 'boost/mpl/vector/vector200.hpp': No such file or directory
NB>зайди в boost/mpl/vector
NB>файлы vector50.hpp и vector50_c.hpp
NB>скопируй в vector200.hpp и vector200_c.hpp и в них замени
NB> (3,(41, 50, <boost/mpl/vector/aux_/numbered_c.hpp>))
NB>на
NB> (3,(41, 200, <boost/mpl/vector/aux_/numbered_c.hpp>))
NB>как-то так
А если ничего не копировать то можно так
// test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
// vectorX
#define BOOST_MPL_LIMIT_VECTOR_SIZE 200
#include "boost/mpl/vector/vector50.hpp"
#include "boost/mpl/aux_/config/ctps.hpp"
#include "boost/preprocessor/iterate.hpp"
#include "boost/config.hpp"
namespace boost { namespace mpl {
#define BOOST_PP_ITERATION_PARAMS_1 (3,(51, BOOST_MPL_LIMIT_VECTOR_SIZE, "boost/mpl/vector/aux_/numbered.hpp"))
#include BOOST_PP_ITERATE()
}}
// vector
#define BOOST_MPL_PREPROCESSING_MODE
#include "boost/mpl/vector.hpp"
#undef BOOST_MPL_PREPROCESSING_MODE
using namespace boost::mpl;
using namespace boost;
// создать
typedef vector<
float
,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
,int,int,int,int,int,int,int,int,int,int
// ,int,int,int,int,int,int,int,int,int,int
// ,int,int,int,int,int,int,int,int,int,int
> v_180;
typedef vector<float> v_1;
// показать что работает
#include <boost/mpl/remove_if.hpp>
#include <boost/type_traits/is_same.hpp>
typedef remove_if<v_180, is_same<_1, int > >::type v_1_from_180;
BOOST_MPL_ASSERT(( is_same< v_1_from_180::type, v_1::type > ));
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.