
On 04/18/12 10:52, Larry Evans wrote:
On 04/15/12 04:57, Florian Goujeon wrote:
Hi Boosters,
I'd like to know if anybody were working on a C++11 version (using variadic
templates) of Boost.Variant.
I currently use the 'classic' version in my project, but since I need
more-than-20-type variants, the compilation take a lot of time (extending the
number of types that variant can support forces you to disable the use of
precompiled headers). Plus, I'll need to use 70 type variants (MPL lists are
physically limited to 50 types). [snip] There's this:
http://svn.boost.org/svn/boost/sandbox/variadic_templates/boost/composite_st...
which uses variadic templates; hence, doesn't have the limitations you mentioned about the number of bounded types. [snip] OOPS. I failed to remember that container_one_of_maybe does use the
On 04/15/12 12:39, Larry Evans wrote: proposed switch library, which includes:
http://svn.boost.org/svn/boost/sandbox/switch/boost/control/switch.hpp
which does have these code lines:
#ifndef BOOST_SWITCH_LIMIT #define BOOST_SWITCH_LIMIT 50 #endif
#if BOOST_SWITCH_LIMIT > BOOST_PP_LIMIT_REPEAT #error BOOST_SWITCH_LIMIT exceeds Boost.Preprocessor limit #endif #if BOOST_SWITCH_LIMIT > BOOST_PP_LIMIT_ITERATION #error BOOST_SWITCH_LIMIT exceeds Boost.Preprocessor limit #endif
which means container_one_of_maybe *does* have the limitations you were trying to avoid.
Sorry for noise.
I believe container_one_of_maybe could be modified to use the "static array of function pointers" method mentioned in another post to this thread, which was written by Paul Fultz:
http://article.gmane.org/gmane.comp.lib.boost.devel/230073
The only reason that method was not tried in container_one_of_maybe was for reasons cited in my reply to Paul's post.
-regards, Larry
There's now an alternate implementation which uses the static array of function pointers and therefore does not suffer the limitation imposed by the BOOST_PP_LIMIT_* macros. You can switch between the two implementations by #define'ing or #undef the macro: LAYOUT_DOMAIN_CONTAINER_PACK This is used here: http://svn.boost.org/svn/boost/sandbox/variadic_templates/boost/composite_st... When defined, the static array of function pointer is used; otherwise the switch_ method is used. It has been tested using: http://svn.boost.org/svn/boost/sandbox/variadic_templates/libs/composite_sto... HTH. -regards, Larry