Boost logo

Boost :

Subject: [boost] [fusion] trouble building boost fusion with Intel compiler on Windows and Linux
From: Blower, Melanie (melanie.blower_at_[hidden])
Date: 2016-11-04 10:27:01


Hello,

We are having trouble building boost_fusion version 1.61 with Intel compiler (version 17.0) on Linux, and on Windows with vs2015 (and other versions of visual studio).

The problem can be fixed if I made this change to boost/fusion/container/vector/detail/config.hpp :

// Sometimes, MSVC 12 shows compile error with std::size_t of template parameter
.
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1800)) \
        || BOOST_INTEL /* add this line */
# if defined(BOOST_FUSION_HAS_VARIADIC_VECTOR)
# undef BOOST_FUSION_HAS_VARIADIC_VECTOR
# endif
#endif

Symptom on Windows:
ile ..\..\..\bin.v2\libs\fusion\test\fold.test\cc848a939769f1f7cf08091b8a228ddb\algorithm\fold.obj.rsp
"algorithm\fold.cpp" -Fo"..\..\..\bin.v2\libs\fusion\test\fold.test\cc848a939769f1f7cf08091b8a228ddb\algorithm\fold.obj" -TP /Z7 /Od /Ob0 /W3 /GR /MDd /Zc:forScope /Zc:wchar_t /nologo /Qwn5 /Qwd985 -Qoption,c,--arg_dep_lookup /Qvc14 -Qpchi- /wd4675 /EHs -c
-DBOOST_ALL_NO_LIB=1
"-I..\..\.."
compile-c-c++ ..\..\..\bin.v2\libs\fusion\test\fold.test\cc848a939769f1f7cf08091b8a228ddb\algorithm\fold.obj

    icl @"..\..\..\bin.v2\libs\fusion\test\fold.test\cc848a939769f1f7cf08091b8a228ddb\algorithm\fold.obj.rsp"

fold.cpp
../../../boost/fusion/container/vector/vector.hpp(71): error: namespace "boost::fusion::vector_detail::result_of" has no member "value_at_c"
              : boost::is_convertible<Sequence, typename result_of::value_at_c<This, 0>::type>
                                                                    ^
          detected during:
            instantiation of class "boost::fusion::vector_detail::is_convertible_to_first<Sequence, This, <unnamed>> [with Sequence=int, This=boost::fusion::vector<int>, <unnamed>=1]" at line 305
            instantiation of "boost::fusion::vector<T...>::vector(U &&...) [with T=<int>, U=<int>]" at line 159 of "algorithm\fold.cpp"

Symptom on Linux:
The original failure on Linux (zip.test in boost_fusion)

    "icpc" -c -xc++ -O0 -g -w1 -inline-level=0 -fPIC -m64 -DBOOST_ALL_NO_LIB=1 -I"../../.." -c -o "../../../bin.v2/libs/fusion/test/zip.test/intl-lnx/dbg/algorithm/zip.o" "algorithm/zip.cpp"

../../../boost/fusion/container/vector/vector.hpp(230): error: pack "U" does not have the same number of elements as "I"
                  : store<I, T>(std::forward<U>(var))...
                                             ^
          detected during:
            instantiation of "boost::fusion::vector_detail::vector_data<boost::fusion::detail::index_sequence<I...>, T...>::vector_data(boost::fusion::vector_detail::each_elem, U &&...) [with I=<0UL, 1UL>, T=<boost::fusion::vector_iterator<const boost::fusion::vector<int, int>, 0>, boost::fusion::vector_iterator<const boost::fusion::vector<char, char>, 0>>, U=<const boost::fusion::transform_view<const boost::fusion::vector<const boost::fusion::vector<int, int> &, const
                      boost::fusion::vector<char, char> &>, boost::fusion::detail::poly_begin, boost::fusion::void_> &>]" at line 306
            instantiation of "boost::fusion::vector<T...>::vector(U &&...) [with T=<boost::fusion::vector_iterator<const boost::fusion::vector<int, int>, 0>, boost::fusion::vector_iterator<const boost::fusion::vector<char, char>, 0>>, U=<const boost::fusion::transform_view<const boost::fusion::vector<const boost::fusion::vector<int, int> &, const boost::fusion::vector<char, char> &>, boost::fusion::detail::poly_begin, boost::fusion::void_> &>]" at line 41 of
                      "../../../boost/fusion/view/zip_view/zip_view_iterator.hpp"

Thanks and regards,
Melanie Blower (I work for Intel on the Intel C++ compiler)


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk