From 06c18a67f8425b2e5404b2ab66668751922d3297 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Mon, 18 May 2015 16:36:06 -0400 Subject: [PATCH] Fixed replace when replacing the last element of a 256 element sequence. --- include/boost/preprocessor/seq/replace.hpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/include/boost/preprocessor/seq/replace.hpp b/include/boost/preprocessor/seq/replace.hpp index d6107a7..0cf6b77 100644 --- a/include/boost/preprocessor/seq/replace.hpp +++ b/include/boost/preprocessor/seq/replace.hpp @@ -12,18 +12,34 @@ # ifndef BOOST_PREPROCESSOR_SEQ_REPLACE_HPP # define BOOST_PREPROCESSOR_SEQ_REPLACE_HPP # +# include # include # include +# include +# include # include # include +# include # # /* BOOST_PP_SEQ_REPLACE */ # # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() -# define BOOST_PP_SEQ_REPLACE(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq) +# define BOOST_PP_SEQ_REPLACE(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REPLACE_DETAIL_REST(seq, i) # else # define BOOST_PP_SEQ_REPLACE(seq, i, elem) BOOST_PP_SEQ_REPLACE_I(seq, i, elem) -# define BOOST_PP_SEQ_REPLACE_I(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq) +# define BOOST_PP_SEQ_REPLACE_I(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REPLACE_DETAIL_REST(seq, i) # endif # +# define BOOST_PP_SEQ_REPLACE_DETAIL_REST_EMPTY(seq, i) +# define BOOST_PP_SEQ_REPLACE_DETAIL_REST_VALID(seq, i) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq) +# define BOOST_PP_SEQ_REPLACE_DETAIL_REST(seq, i) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_EQUAL(i,BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq))), \ + BOOST_PP_SEQ_REPLACE_DETAIL_REST_EMPTY, \ + BOOST_PP_SEQ_REPLACE_DETAIL_REST_VALID \ + ) \ + (seq, i) \ +/**/ +# # endif