On Sunday 15 June 2014 21:18:12 Jürgen Hunold wrote:
Am Sonntag, 15. Juni 2014, 20:23:43 schrieb Andrey Semashev:
On Sun, Jun 15, 2014 at 8:03 PM, Jürgen Hunold
wrote: My own code broke with an identical message sometime last week. Any ideas?
I think there's a missing #include
in boost/accumulators/accumulators_fwd.hpp. There is another use of BOOST_PP_CAT in boost/accumulators/numeric/detail/function_n.hpp but it has the #include. I don't see how this could be related to boost/accumulators/framework/accumulators/reference_accumulator.hpp though. As there are no changes in accumulators I've trace the bug back to
preprocessor. Bisecting the error leads to:
c66ea5871fd44274f681f02323c4d46bdf394c7c is the first bad commit commit c66ea5871fd44274f681f02323c4d46bdf394c7c Author: Edward Diener
Date: Wed Apr 30 16:06:49 2014 -0400 Addition of is_empty tests and changes to rem processing as a workaround to VC++ problem.
the culprit might be this change, which moves cat.hpp out of scope for msvc:
diff --git a/include/boost/preprocessor/facilities/is_empty.hpp b/include/boost/preprocessor/facilities/is_empty.hpp index b1094d8..e7f821f 100644 --- a/include/boost/preprocessor/facilities/is_empty.hpp +++ b/include/boost/preprocessor/facilities/is_empty.hpp @@ -22,10 +22,13 @@ # else # # include
-# include +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() # include # include +# else +# include # include +# endif # # /* BOOST_PP_IS_EMPTY */ # The question remains: Who fixes this where?
As far as I can see, is_empty.hpp does not use BOOST_PP_CAT when it doesn't include it, so the header is correct. Accumulators should include cat.hpp whenever it uses BOOST_PP_CAT, so at least accumulators_fwd.hpp has a bug.