diff options
Diffstat (limited to 'boost/preprocessor/list/to_array.hpp')
-rw-r--r-- | boost/preprocessor/list/to_array.hpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/boost/preprocessor/list/to_array.hpp b/boost/preprocessor/list/to_array.hpp index 83f8a63c62..20829b9052 100644 --- a/boost/preprocessor/list/to_array.hpp +++ b/boost/preprocessor/list/to_array.hpp @@ -1,6 +1,7 @@ # /* ************************************************************************** # * * -# * (C) Copyright Edward Diener 2011. +# * (C) Copyright Paul Mensonides 2011. +# * (C) Copyright Edward Diener 2011,2014. # * Distributed under the Boost Software License, Version 1.0. (See # * accompanying file LICENSE_1_0.txt or copy at # * http://www.boost.org/LICENSE_1_0.txt) @@ -19,10 +20,27 @@ # include <boost/preprocessor/list/adt.hpp> # include <boost/preprocessor/tuple/elem.hpp> # include <boost/preprocessor/tuple/rem.hpp> +# if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC && (_MSC_VER <= 1400) +# include <boost/preprocessor/control/iif.hpp> +# endif # # /* BOOST_PP_LIST_TO_ARRAY */ # +# if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC && (_MSC_VER <= 1400) +# define BOOST_PP_LIST_TO_ARRAY(list) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_LIST_IS_NIL(list), \ + BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_EMPTY, \ + BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_DO \ + ) \ + (list) \ +/**/ +# define BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_EMPTY(list) (0,()) +# define BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_DO(list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE, list) +# else # define BOOST_PP_LIST_TO_ARRAY(list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE, list) +# endif # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() # define BOOST_PP_LIST_TO_ARRAY_I(w, list) \ @@ -118,6 +136,20 @@ # # /* BOOST_PP_LIST_TO_ARRAY_D */ # +# if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC && (_MSC_VER <= 1400) +# define BOOST_PP_LIST_TO_ARRAY_D(d, list) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_LIST_IS_NIL(list), \ + BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_EMPTY, \ + BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_DO \ + ) \ + (d, list) \ +/**/ +# define BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_EMPTY(d, list) (0,()) +# define BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_DO(d, list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE_ ## d, list) +# else # define BOOST_PP_LIST_TO_ARRAY_D(d, list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE_ ## d, list) +# endif # # endif /* BOOST_PREPROCESSOR_LIST_TO_ARRAY_HPP */ |