Opened 8 years ago

Last modified 7 years ago

#11200 new Bugs

Error when compiling log_setup by compiler Intel C++ 14.0

Reported by: phprus@… Owned by: Thomas Heller
Milestone: To Be Determined Component: phoenix
Version: Boost 1.58.0 Severity: Problem
Keywords: Cc: Andrey.Semashev@…

Description

In case of compilation of log_setup library there is the following error:

intel-linux.compile.c++ /home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt/default_formatter_factory.o

    "/opt/intel/composer_xe_2013_sp1.0.080/bin/intel64/icpc" -c -xc++ -w1 -inline-level=2 -O3 -ip -pthread -fPIC -m64      -fPIC -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc -fno-builtin-calloc -fno-builtin-cfree -fno-builtin-memalign -fno-builtin-posix_memalign -fno-builtin-valloc -fno-builtin-pvalloc  -no-intel-extensions  -fvisibility=hidden -fvisibility-inlines-hidden   -ipo   -std=gnu++98  -wd177,780,2196,1782,193,304,981,1418,411,734,279 -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_LOG_DYN_LINK=1 -DBOOST_LOG_SETUP_BUILDING_THE_LIB=1 -DBOOST_LOG_SETUP_DLL -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_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DNDEBUG -D_GNU_SOURCE=1 -D_XOPEN_SOURCE=600 -I"."   -c -o "/home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt/default_formatter_factory.o" "libs/log/src/default_formatter_factory.cpp"

./boost/proto/detail/preprocessed/make_expr_.hpp(73): error: class "boost::proto::transform<PrimitiveTransform, X>::result<boost::phoenix::phoenix_generator (boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2>>, 0L>, boost::log::v2_mt_posix::expressions::stream_type>, 2L>)> [with
          PrimitiveTransform=boost::proto::switch_<boost::phoenix::phoenix_generator, boost::proto::tag_of<boost::proto::_> ()>, X=void]" has no member "type"
          typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
                                                                                         ^
          detected during:
            instantiation of class "boost::proto::detail::make_expr_<Tag, Domain, A0, A1, void, void, void, void, void, void, void, void, void> [with Tag=boost::proto::tagns_::tag::assign, Domain=boost::phoenix::phoenix_domain, A0=boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2>>, 0L>, A1=boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,
                      boost::proto::argsns_::term<boost::phoenix::argument<2>>, 0L>>]" at line 184 of "./boost/proto/make_expr.hpp"
            instantiation of class "boost::proto::result_of::make_expr<Tag, Domain, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, Domain::proto_is_domain_> [with Tag=boost::proto::tagns_::tag::assign, Domain=boost::phoenix::phoenix_domain, A0=boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2>>, 0L>, A1=boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,
                      boost::proto::argsns_::term<boost::phoenix::argument<2>>, 0L>>, A2=void, A3=void, A4=void, A5=void, A6=void, A7=void, A8=void, A9=void]" at line 241 of "./boost/proto/detail/preprocessed/basic_expr.hpp"
            instantiation of class "boost::proto::exprns_::basic_expr<Tag, boost::proto::argsns_::list2<Arg0, Arg1>, 2L> [with Tag=boost::proto::tagns_::tag::assign, Arg0=boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2>>, 0L>, Arg1=boost::log::v2_mt_posix::expressions::stream_type]" at line 830 of "./boost/proto/matches.hpp"
            instantiation of class "boost::proto::switch_<Cases, boost::proto::tag_of<boost::proto::_> ()>::impl<Expr, State, Data> [with Cases=boost::phoenix::phoenix_generator, Expr=boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2>>, 0L>, boost::log::v2_mt_posix::expressions::stream_type>, 2L>,
                      State=boost::proto::envns_::empty_state={int}, Data=boost::proto::envns_::empty_env]" at line 238 of "./boost/proto/transform/impl.hpp"
            instantiation of class "boost::proto::detail::apply_transform<PrimitiveTransform (Expr)> [with PrimitiveTransform=boost::phoenix::phoenix_generator, Expr=boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2>>, 0L>, boost::log::v2_mt_posix::expressions::stream_type>, 2L>]" at line 255 of
                      "./boost/proto/transform/impl.hpp"
            [ 7 instantiation contexts not shown ]
            instantiation of class "boost::proto::detail::make_expr_<Tag, Domain, A0, A1, void, void, void, void, void, void, void, void, void> [with Tag=boost::proto::tagns_::tag::shift_left, Domain=boost::phoenix::phoenix_domain, A0=const boost::log::v2_mt_posix::expressions::stream_type &, A1=boost::log::v2_mt_posix::expressions::attribute_actor<boost::mpl::vector30<bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long,
                      unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list,
                      boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id>, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor> &]" at line 184 of "./boost/proto/make_expr.hpp"
            instantiation of class "boost::proto::result_of::make_expr<Tag, Domain, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, Domain::proto_is_domain_> [with Tag=boost::proto::tagns_::tag::shift_left, Domain=boost::phoenix::phoenix_domain, A0=const boost::log::v2_mt_posix::expressions::stream_type &, A1=boost::log::v2_mt_posix::expressions::attribute_actor<boost::mpl::vector30<bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long
                      long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list,
                      boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id>, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor> &, A2=void, A3=void, A4=void, A5=void, A6=void, A7=void, A8=void, A9=void]" at line 40 of "./boost/core/enable_if.hpp"
            instantiation of class "boost::lazy_enable_if_c<B, T> [with B=true, T=boost::proto::result_of::make_expr<boost::proto::tagns_::tag::shift_left, boost::phoenix::phoenix_domain, const boost::log::v2_mt_posix::expressions::stream_type &, boost::log::v2_mt_posix::expressions::attribute_actor<boost::mpl::vector30<bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double,
                      std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id,
                      boost::log::v2_mt_posix::aux::process::id>, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor> &, void, void, void, void, void, void, void, void, void>]" at line 70 of "./boost/proto/operators.hpp"
            instantiation of class "boost::proto::detail::enable_binary<Domain, Grammar, Trait, Tag, Left, Right> [with Domain=boost::phoenix::phoenix_domain, Grammar=boost::phoenix::meta_grammar, Trait=boost::mpl::or_<boost::proto::is_extension<const boost::log::v2_mt_posix::expressions::stream_type>, boost::proto::is_extension<boost::log::v2_mt_posix::expressions::attribute_actor<boost::mpl::vector30<bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int,
                      long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list,
                      boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id>, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor>>, boost::mpl::bool_<false>, boost::mpl::bool_<false>, boost::mpl::bool_<false>>, Tag=boost::proto::tagns_::tag::shift_left, Left=const boost::log::v2_mt_posix::expressions::stream_type &, Right=boost::log::v2_mt_posix::expressions::attribute_actor<boost::mpl::vector30<bool, char, wchar_t, signed char, unsigned char,
                      short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period,
                      boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id>, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor> &]" at line 89 of "./boost/proto/operators.hpp"
            instantiation of class "boost::proto::detail::enable_binary<boost::proto::domainns_::deduce_domain, boost::proto::detail::not_a_grammar, Trait, Tag, Left &, Right &> [with Trait=boost::mpl::or_<boost::proto::is_extension<const boost::log::v2_mt_posix::expressions::stream_type>, boost::proto::is_extension<boost::log::v2_mt_posix::expressions::attribute_actor<boost::mpl::vector30<bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned
                      long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list,
                      boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id>, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor>>, boost::mpl::bool_<false>, boost::mpl::bool_<false>, boost::mpl::bool_<false>>, Tag=boost::proto::tagns_::tag::shift_left, Left=const boost::log::v2_mt_posix::expressions::stream_type, Right=boost::log::v2_mt_posix::expressions::attribute_actor<boost::mpl::vector30<bool, char, wchar_t, signed char, unsigned char,
                      short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period,
                      boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id>, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor>]" at line 82 of "libs/log/src/default_formatter_factory.cpp"

compilation aborted for libs/log/src/default_formatter_factory.cpp (code 2)
...skipped <p/home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt>libboost_log_setup-il140-mt-1_58.so.1.58.0 for lack of <p/home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt>default_formatter_factory.o...
...skipped <p/home/phprus/devel/build/deps/i/lib64>libboost_log_setup-il140-mt-1_58.so.1.58.0 for lack of <p/home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt>libboost_log_setup-il140-mt-1_58.so.1.58.0...

Change History (2)

comment:1 by Andrey Semashev, 7 years ago

Cc: Andrey.Semashev@… added
Component: logphoenix
Owner: changed from Andrey Semashev to Thomas Heller

The problematic code is this:

expressions::stream << expressions::attr< supported_types::type >(name)

This is a Boost.Phoenix expression (the stream and attr placeholders are from Boost.Log but they are Boost.Phoenix terminals). Since the code compiles with other compilers this may be a compiler issue, but I can't be sure as I'm not familiar with Boost.Phoenix implementation. I'll pass the ticket to Boost.Phoenix team and hope they can provide some insight on what's happening here.

As for Boost.Log, I'll probably replace this expression with something simpler, just to reduce compile times. As a side effect this may also resolve the build failure.

comment:2 by matthieu.brucher@…, 7 years ago

Note: See TracTickets for help on using tickets.