Boost C++ Libraries: Ticket #9546: Compiling Boost.Log fails due to undeclared types in format_parser.cpp (a.o.) https://svn.boost.org/trac10/ticket/9546 <p> Building Boost.Log of current develop branch (i.e. trunk) fails due to undeclared types in format_parser.cpp (amongst others) with references to Boost.Spirit. </p> <p> I'm using the following command for building with GCC 4.8: </p> <pre class="wiki">./b2 --prefix=$HOME/src/boost/dist/dev --stagedir=$HOME/src/boost/stage/dev --build-dir=/tmp/boost --layout=versioned -j8 -d+2 -d+4 -q cxxflags=-std=c++11 variant=debug link=static runtime-link=static threading=single -a --reconfigure stage </pre><p> The first error I encounter is the following. For the full build log for Boost.Log and subsequent errors see attached file. </p> <pre class="wiki">gcc.compile.c++ /tmp/boost/boost/bin.v2/libs/log/build/gcc-4.8/debug/link-static/log-api-unix/runtime-link-static/format_parser.o "g++-4.8" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -fno-strict-aliasing -ftemplate-depth-1024 -std=c++11 -DBOOST_ALL_NO_LIB=1 -DBOOST_FILESYSTEM_STATIC_LINK=1 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_NO_THREADS -DBOOST_LOG_USE_AVX2 -DBOOST_LOG_USE_NATIVE_SYSLOG -DBOOST_LOG_USE_SSSE3 -DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DDATE_TIME_INLINE -I"." -c -o "/tmp/boost/boost/bin.v2/libs/log/build/gcc-4.8/debug/link-static/log-api-unix/runtime-link-static/format_parser.o" "libs/log/src/format_parser.cpp" In file included from ./boost/spirit/home/support/string_traits.hpp:16:0, from ./boost/spirit/home/support/nonterminal/expand_arg.hpp:20, from ./boost/spirit/home/support/context.hpp:18, from ./boost/spirit/home/qi/domain.hpp:18, from ./boost/spirit/home/qi/detail/enable_lit.hpp:13, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/spirit/home/support/container.hpp:74:65: error: ‘BOOST_SPIRIT_IS_CONTAINER’ was not declared in this scope : mpl::bool_&lt;BOOST_PP_REPEAT(BOOST_VARIANT_LIMIT_TYPES ^ ./boost/spirit/home/support/container.hpp:74:92: error: ‘_’ was not declared in this scope : mpl::bool_&lt;BOOST_PP_REPEAT(BOOST_VARIANT_LIMIT_TYPES ^ ./boost/spirit/home/support/container.hpp:74:92: note: suggested alternatives: In file included from ./boost/mpl/aux_/include_preprocessed.hpp:37:0, from ./boost/mpl/placeholders.hpp:43, from ./boost/mpl/apply.hpp:24, from ./boost/mpl/aux_/fold_impl.hpp:19, from ./boost/mpl/fold.hpp:20, from ./boost/fusion/sequence/intrinsic/detail/segmented_size.hpp:12, from ./boost/fusion/sequence/intrinsic/size.hpp:16, from ./boost/fusion/view/joint_view/joint_view.hpp:15, from ./boost/fusion/algorithm/transformation/push_back.hpp:11, from ./boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp:19, from ./boost/fusion/view/iterator_range/detail/segments_impl.hpp:13, from ./boost/fusion/view/iterator_range/iterator_range.hpp:21, from ./boost/fusion/view/iterator_range.hpp:10, from ./boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp:12, from ./boost/fusion/sequence/intrinsic/begin.hpp:17, from ./boost/fusion/iterator/segmented_iterator.hpp:12, from ./boost/fusion/sequence/intrinsic/detail/segmented_end.hpp:11, from ./boost/fusion/sequence/intrinsic/end.hpp:17, from ./boost/fusion/sequence/intrinsic/back.hpp:11, from ./boost/fusion/sequence/intrinsic.hpp:11, from ./boost/fusion/include/intrinsic.hpp:10, from ./boost/proto/fusion.hpp:22, from ./boost/proto/core.hpp:21, from ./boost/proto/proto.hpp:12, from ./boost/spirit/home/support/meta_compiler.hpp:19, from ./boost/spirit/home/qi/domain.hpp:15, from ./boost/spirit/home/qi/detail/enable_lit.hpp:13, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:14:19: note: ‘mpl_::_’ typedef arg&lt; -1 &gt; _; ^ ./boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:14:19: note: ‘mpl_::_’ In file included from ./boost/proto/core.hpp:22:0, from ./boost/proto/proto.hpp:12, from ./boost/spirit/home/support/meta_compiler.hpp:19, from ./boost/spirit/home/qi/domain.hpp:15, from ./boost/spirit/home/qi/detail/enable_lit.hpp:13, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/proto/matches.hpp:563:12: note: ‘boost::proto::_’ struct _ : transform&lt;_&gt; ^ In file included from ./boost/mpl/aux_/include_preprocessed.hpp:37:0, from ./boost/mpl/placeholders.hpp:43, from ./boost/mpl/apply.hpp:24, from ./boost/mpl/aux_/fold_impl.hpp:19, from ./boost/mpl/fold.hpp:20, from ./boost/fusion/sequence/intrinsic/detail/segmented_size.hpp:12, from ./boost/fusion/sequence/intrinsic/size.hpp:16, from ./boost/fusion/view/joint_view/joint_view.hpp:15, from ./boost/fusion/algorithm/transformation/push_back.hpp:11, from ./boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp:19, from ./boost/fusion/view/iterator_range/detail/segments_impl.hpp:13, from ./boost/fusion/view/iterator_range/iterator_range.hpp:21, from ./boost/fusion/view/iterator_range.hpp:10, from ./boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp:12, from ./boost/fusion/sequence/intrinsic/begin.hpp:17, from ./boost/fusion/iterator/segmented_iterator.hpp:12, from ./boost/fusion/sequence/intrinsic/detail/segmented_end.hpp:11, from ./boost/fusion/sequence/intrinsic/end.hpp:17, from ./boost/fusion/sequence/intrinsic/back.hpp:11, from ./boost/fusion/sequence/intrinsic.hpp:11, from ./boost/fusion/include/intrinsic.hpp:10, from ./boost/proto/fusion.hpp:22, from ./boost/proto/core.hpp:21, from ./boost/proto/proto.hpp:12, from ./boost/spirit/home/support/meta_compiler.hpp:19, from ./boost/spirit/home/qi/domain.hpp:15, from ./boost/spirit/home/qi/detail/enable_lit.hpp:13, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:14:19: note: ‘mpl_::_’ typedef arg&lt; -1 &gt; _; ^ In file included from ./boost/spirit/home/support/string_traits.hpp:16:0, from ./boost/spirit/home/support/nonterminal/expand_arg.hpp:20, from ./boost/spirit/home/support/context.hpp:18, from ./boost/spirit/home/qi/domain.hpp:18, from ./boost/spirit/home/qi/detail/enable_lit.hpp:13, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/spirit/home/support/container.hpp:74:93: error: there are no arguments to ‘BOOST_PP_REPEAT_1_BOOST_VARIANT_LIMIT_TYPES’ that depend on a template parameter, so a declaration of ‘BOOST_PP_REPEAT_1_BOOST_VARIANT_LIMIT_TYPES’ must be available [-fpermissive] : mpl::bool_&lt;BOOST_PP_REPEAT(BOOST_VARIANT_LIMIT_TYPES ^ ./boost/spirit/home/support/container.hpp:74:93: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) ./boost/spirit/home/support/container.hpp:74:15: error: parse error in template argument list : mpl::bool_&lt;BOOST_PP_REPEAT(BOOST_VARIANT_LIMIT_TYPES ^ In file included from ./boost/spirit/home/support/attributes.hpp:20:0, from ./boost/spirit/home/qi/detail/attributes.hpp:12, from ./boost/spirit/home/qi/auxiliary/lazy.hpp:17, from ./boost/spirit/home/qi/detail/enable_lit.hpp:16, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/spirit/home/support/detail/as_variant.hpp:39:29: error: wrong number of template arguments (0, should be 1 or more) typedef variant&lt;&gt; type; ^ In file included from ./boost/variant/variant.hpp:28:0, from ./boost/spirit/home/support/info.hpp:14, from ./boost/spirit/home/qi/domain.hpp:16, from ./boost/spirit/home/qi/detail/enable_lit.hpp:13, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/variant/variant_fwd.hpp:288:48: error: provided for ‘template&lt;class T0, class ... TN&gt; class boost::variant’ template &lt; BOOST_VARIANT_AUX_DECLARE_PARAMS &gt; class variant; ^ In file included from ./boost/preprocessor/iteration/detail/iter/reverse1.hpp:1294:0, from ./boost/preprocessor/iteration/detail/iter/forward1.hpp:43, from ./boost/spirit/home/support/detail/as_variant.hpp:57, from ./boost/spirit/home/support/attributes.hpp:20, from ./boost/spirit/home/qi/detail/attributes.hpp:12, from ./boost/spirit/home/qi/auxiliary/lazy.hpp:17, from ./boost/spirit/home/qi/detail/enable_lit.hpp:16, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/spirit/home/support/detail/as_variant.hpp:91:12: error: redefinition of ‘struct boost::spirit::detail::as_variant_impl&lt;0&gt;’ struct as_variant_impl&lt;N&gt; ^ In file included from ./boost/spirit/home/support/attributes.hpp:20:0, from ./boost/spirit/home/qi/detail/attributes.hpp:12, from ./boost/spirit/home/qi/auxiliary/lazy.hpp:17, from ./boost/spirit/home/qi/detail/enable_lit.hpp:16, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/spirit/home/support/detail/as_variant.hpp:34:12: error: previous definition of ‘struct boost::spirit::detail::as_variant_impl&lt;0&gt;’ struct as_variant_impl&lt;0&gt; ^ In file included from ./boost/spirit/home/qi/detail/attributes.hpp:12:0, from ./boost/spirit/home/qi/auxiliary/lazy.hpp:17, from ./boost/spirit/home/qi/detail/enable_lit.hpp:16, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/spirit/home/support/attributes.hpp:218:64: error: ‘BOOST_SPIRIT_IS_WEAK_SUBSTITUTE’ was not declared in this scope : mpl::bool_&lt;BOOST_PP_REPEAT(BOOST_VARIANT_LIMIT_TYPES ^ ./boost/spirit/home/support/attributes.hpp:218:97: error: ‘_’ was not declared in this scope : mpl::bool_&lt;BOOST_PP_REPEAT(BOOST_VARIANT_LIMIT_TYPES ^ ./boost/spirit/home/support/attributes.hpp:218:97: note: suggested alternatives: In file included from ./boost/mpl/aux_/include_preprocessed.hpp:37:0, from ./boost/mpl/placeholders.hpp:43, from ./boost/mpl/apply.hpp:24, from ./boost/mpl/aux_/fold_impl.hpp:19, from ./boost/mpl/fold.hpp:20, from ./boost/fusion/sequence/intrinsic/detail/segmented_size.hpp:12, from ./boost/fusion/sequence/intrinsic/size.hpp:16, from ./boost/fusion/view/joint_view/joint_view.hpp:15, from ./boost/fusion/algorithm/transformation/push_back.hpp:11, from ./boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp:19, from ./boost/fusion/view/iterator_range/detail/segments_impl.hpp:13, from ./boost/fusion/view/iterator_range/iterator_range.hpp:21, from ./boost/fusion/view/iterator_range.hpp:10, from ./boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp:12, from ./boost/fusion/sequence/intrinsic/begin.hpp:17, from ./boost/fusion/iterator/segmented_iterator.hpp:12, from ./boost/fusion/sequence/intrinsic/detail/segmented_end.hpp:11, from ./boost/fusion/sequence/intrinsic/end.hpp:17, from ./boost/fusion/sequence/intrinsic/back.hpp:11, from ./boost/fusion/sequence/intrinsic.hpp:11, from ./boost/fusion/include/intrinsic.hpp:10, from ./boost/proto/fusion.hpp:22, from ./boost/proto/core.hpp:21, from ./boost/proto/proto.hpp:12, from ./boost/spirit/home/support/meta_compiler.hpp:19, from ./boost/spirit/home/qi/domain.hpp:15, from ./boost/spirit/home/qi/detail/enable_lit.hpp:13, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:14:19: note: ‘mpl_::_’ typedef arg&lt; -1 &gt; _; ^ ./boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:14:19: note: ‘mpl_::_’ In file included from ./boost/proto/core.hpp:22:0, from ./boost/proto/proto.hpp:12, from ./boost/spirit/home/support/meta_compiler.hpp:19, from ./boost/spirit/home/qi/domain.hpp:15, from ./boost/spirit/home/qi/detail/enable_lit.hpp:13, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/proto/matches.hpp:563:12: note: ‘boost::proto::_’ struct _ : transform&lt;_&gt; ^ In file included from ./boost/mpl/aux_/include_preprocessed.hpp:37:0, from ./boost/mpl/placeholders.hpp:43, from ./boost/mpl/apply.hpp:24, from ./boost/mpl/aux_/fold_impl.hpp:19, from ./boost/mpl/fold.hpp:20, from ./boost/fusion/sequence/intrinsic/detail/segmented_size.hpp:12, from ./boost/fusion/sequence/intrinsic/size.hpp:16, from ./boost/fusion/view/joint_view/joint_view.hpp:15, from ./boost/fusion/algorithm/transformation/push_back.hpp:11, from ./boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp:19, from ./boost/fusion/view/iterator_range/detail/segments_impl.hpp:13, from ./boost/fusion/view/iterator_range/iterator_range.hpp:21, from ./boost/fusion/view/iterator_range.hpp:10, from ./boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp:12, from ./boost/fusion/sequence/intrinsic/begin.hpp:17, from ./boost/fusion/iterator/segmented_iterator.hpp:12, from ./boost/fusion/sequence/intrinsic/detail/segmented_end.hpp:11, from ./boost/fusion/sequence/intrinsic/end.hpp:17, from ./boost/fusion/sequence/intrinsic/back.hpp:11, from ./boost/fusion/sequence/intrinsic.hpp:11, from ./boost/fusion/include/intrinsic.hpp:10, from ./boost/proto/fusion.hpp:22, from ./boost/proto/core.hpp:21, from ./boost/proto/proto.hpp:12, from ./boost/spirit/home/support/meta_compiler.hpp:19, from ./boost/spirit/home/qi/domain.hpp:15, from ./boost/spirit/home/qi/detail/enable_lit.hpp:13, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:14:19: note: ‘mpl_::_’ typedef arg&lt; -1 &gt; _; ^ In file included from ./boost/spirit/home/qi/detail/attributes.hpp:12:0, from ./boost/spirit/home/qi/auxiliary/lazy.hpp:17, from ./boost/spirit/home/qi/detail/enable_lit.hpp:16, from ./boost/spirit/home/qi/numeric/uint.hpp:17, from ./boost/spirit/include/qi_uint.hpp:16, from libs/log/src/format_parser.cpp:22: ./boost/spirit/home/support/attributes.hpp:218:98: error: there are no arguments to ‘BOOST_PP_REPEAT_1_BOOST_VARIANT_LIMIT_TYPES’ that depend on a template parameter, so a declaration of ‘BOOST_PP_REPEAT_1_BOOST_VARIANT_LIMIT_TYPES’ must be available [-fpermissive] : mpl::bool_&lt;BOOST_PP_REPEAT(BOOST_VARIANT_LIMIT_TYPES ^ ./boost/spirit/home/support/attributes.hpp:218:14: error: parse error in template argument list : mpl::bool_&lt;BOOST_PP_REPEAT(BOOST_VARIANT_LIMIT_TYPES ^ 0.000016 sec system; 0.000396 sec user </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/9546 Trac 1.4.3 Torbjörn Klatt <opensource@…> Mon, 06 Jan 2014 13:55:25 GMT attachment set https://svn.boost.org/trac10/ticket/9546 https://svn.boost.org/trac10/ticket/9546 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">build_liblog.log.gz</span> </li> </ul> <p> build log for Boost.Log (gzipped) </p> Ticket Andrey Semashev Tue, 07 Jan 2014 09:26:15 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/9546#comment:1 https://svn.boost.org/trac10/ticket/9546#comment:1 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">worksforme</span> </li> </ul> <p> It compiles fine for me (the develop branch revision is e01f82a3dfdd5b1a17aecd776525a994dad3cf02). The master branch also builds ok. The BOOST_SPIRIT_IS_CONTAINER macro is defined in boost/spirit/home/support/container.hpp, I don't see how it could be missing. My guess is that you have inconsistent local copy. </p> Ticket