
Hi Ovanes,
I need to define a map with int_<1...150>->Type1...150 pairs.
Im source file I define:
#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS #define BOOST_MPL_LIMIT_MAP_SIZE 150
#include <boost/mpl/map.hpp>
A word of caution: redefining BOOST_MPL_LIMIT_MAP_SIZE is not recommended. Doing so globally will make you pay for what you probably don't use (unless all present and future 'map' usages in your project demand the 150-elements limit), and doing so within a translation unit will lead to an ODR violation. If you need to construct a sequence beyond the default size, use its numbered form (http://www.boost.org/libs/mpl/doc/refmanual/variadic-sequence.html).
When compiling I get an error in the file: ...\boost\include\boost-1_33_1\boost\mpl\map.hpp on line: 36 fatal error C1083: Cannot open include file: 'boost/mpl/map/map150.hpp': No such file or directory
Development environment is Visual C++ 8 Express Edition
The help states:
[...] What the BOOST_MPL_LIMIT_MAP_SIZE docs don't say is that there is a default upper limit of 50 elements for the macro's value: #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS #define BOOST_MPL_LIMIT_MAP_SIZE 50 #include <boost/mpl/map.hpp> // compiles This upper limit is overridable as well, but since touching BOOST_MPL_LIMIT_MAP_SIZE is not recommended anyway, I'll instead demonstrate how to bump the number of map's numbered forms up to 150. The simpliest way would be just this: #include <boost/mpl/map/map50.hpp> #include <boost/preprocessor/iterate.hpp> namespace boost { namespace mpl { # define BOOST_PP_ITERATION_PARAMS_1 \ (3,(51, 150, <boost/mpl/map/aux_/numbered.hpp>)) # include BOOST_PP_ITERATE() }} // use map150<....> with the caveat that the extra 100 map templates are generated on the fly using the preprocessor, which isn't ideal from the compilation time standpoint. Alternatively, you can pre-generate these extra templates once and for all using the '$BOOST_ROOT/libs/mpl/preprocessed/preprocess_map.py' script and the existing numbered map files in the '$BOOST_ROOT/boost/mpl/map/' and '$BOOST_ROOT/libs/mpl/preprocessed/map/' subdirectories as an example. HTH, -- Aleksey Gurtovoy MetaCommunications Engineering