id summary reporter owner description type status milestone component version severity resolution keywords cc 11572 The generic fusion sequence convert to a deque fails with a compiler error Edward Diener Joel de Guzman "The following code, as deque_convert.cpp, which uses the generic boost::fusion::convert to convert to a boost::fusion::deque, fails with a compiler error: {{{ #include #include #include #include #include #include #include int main() { boost::fusion::deque t = boost::fusion::convert(boost::fusion::make_vector(123, ""Hola!!!"")); // Line 13 // boost::fusion::deque t = boost::fusion::convert(boost::fusion::make_deque(123, ""Hola!!!"")); // Line 14 BOOST_TEST(boost::fusion::at_c<0>(t) == 123); BOOST_TEST(boost::fusion::at_c<1>(t) == ""Hola!!!""); return boost::report_errors(); } }}} Compiling with mingw-64/gcc-5.1 on Windows: {{{ ""C:/Utilities/mingw-w64/i686-5.1.0-posix-dwarf-rt_v4-rev0/mingw32/bin/g++"" -ftemplate-depth-128 -Wno-unused-local-typedefs -ftrack-macro-expansion=0 -O0 -fno-inline -Wall -g -march=i686 -m32 -DBOOST_ALL_NO_LIB=1 -I""..\..\.."" -c -o ""..\..\..\bin.v2\libs\fusion\test\deque_convert.test\gcc-mingw-5.1\debug\sequence\deque_convert.o"" ""sequence\deque_convert.cpp"" In file included from ..\..\../boost/fusion/container/deque/convert.hpp:12:0, from ..\..\../boost/fusion/container/deque.hpp:14, from ..\..\../boost/fusion/include/deque.hpp:11, from sequence\deque_convert.cpp:2: ..\..\../boost/fusion/container/deque/detail/convert_impl.hpp: In instantiation of 'static boost::fusion::extension::convert_impl::apply::type boost::fusion::extension::convert_impl::apply::call(Sequence&) [with Sequence = const boost::fusion::vector2; boost::fusion::extension::convert_impl::apply::type = boost::fusion::deque]': ..\..\../boost/fusion/sequence/convert.hpp:48:25: required from 'typename boost::fusion::result_of::convert::type boost::fusion::convert(const Sequence&) [with Tag = boost::fusion::deque_tag; Sequence = boost::fusion::vector2; typename boost::fusion::result_of::convert::type = boost::fusion::deque]' sequence\deque_convert.cpp:11:139: required from here ..\..\../boost/fusion/container/deque/detail/convert_impl.hpp:44:37: error: 'call' is not a member of 'boost::fusion::extension::convert_impl::apply >::gen {aka boost::fusion::result_of::as_deque >}' return gen::call(seq); }}} Compiling with msvc-14.0 on Windows: {{{ file ..\..\..\bin.v2\libs\fusion\test\deque_convert.test\msvc-14.0\debug\threading-multi\sequence\deque_convert.obj.rsp ""sequence\deque_convert.cpp"" -Fo""..\..\..\bin.v2\libs\fusion\test\deque_convert.test\msvc-14.0\debug\threading-multi\sequence\deque_convert.obj"" -TP /Z7 /Od /Ob0 /W3 /GR /MDd /Zc:forScope /Zc:wchar_t /wd4675 /EHs -c -DBOOST_ALL_NO_LIB=1 ""-I..\..\.."" compile-c-c++ ..\..\..\bin.v2\libs\fusion\test\deque_convert.test\msvc-14.0\debug\threading-multi\sequence\deque_convert.obj call ""C:\Users\eldiener\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd"" >nul cl /Zm800 -nologo @""..\..\..\bin.v2\libs\fusion\test\deque_convert.test\msvc-14.0\debug\threading-multi\sequence\deque_convert.obj.rsp"" deque_convert.cpp Unknown compiler version - please run the configure tests and report the results C:\Programming\VersionControl\modular-boost\boost/fusion/container/deque/detail/convert_impl.hpp(44): error C2039: 'call': is not a member of 'boost::fusion::result_of::as_deque' with [ Sequence=const boost::fusion::vector2 ] C:\Programming\VersionControl\modular-boost\boost/fusion/container/deque/detail/convert_impl.hpp(43): note: while compiling class template member function 'boost::fusion::deque boost::fusion::extension::convert_impl::apply::call(Sequence &)' with [ Sequence=const boost::fusion::vector2 ] C:\Programming\VersionControl\modular-boost\boost/fusion/sequence/convert.hpp(48): note: see reference to function template instantiation 'boost::fusion::deque boost::fusion::extension::convert_impl::apply::call(Sequence &)' being compiled with [ Sequence=const boost::fusion::vector2 ] C:\Programming\VersionControl\modular-boost\boost/fusion/sequence/convert.hpp(29): note: see reference to class template instantiation 'boost::fusion::extension::convert_impl::apply' being compiled with [ Sequence=const boost::fusion::vector2 ] sequence\deque_convert.cpp(11): note: see reference to class template instantiation 'boost::fusion::result_of::convert>' being compiled with [ T=int ] }}} Compiling with clang-3.8: {{{ ""C:/Programming/VersionControl/bninja_installed_clang/bin/clang++"" -c -x c++ -D__MINGW_FORCE_SYS_INTRINS -Wno-unused-local-typedef -Wno-dll-attribute-on-redeclaration -O0 -g -fno-inline -Wall -g -march=i686 -m32 -DBOOST_ALL_NO_LIB=1 -I""..\..\.."" -o ""..\..\..\bin.v2\libs\fusion\test\deque_convert.test\clang-linux-3.8\debug\sequence\deque_convert.obj"" ""sequence\deque_convert.cpp"" In file included from sequence\deque_convert.cpp:2: In file included from ..\..\..\boost/fusion/include/deque.hpp:11: In file included from ..\..\..\boost/fusion/container/deque.hpp:14: In file included from ..\..\..\boost/fusion/container/deque/convert.hpp:12: ..\..\..\boost/fusion/container/deque/detail/convert_impl.hpp:44:33: error: no member named 'call' in 'boost::fusion::result_of::as_deque >' return gen::call(seq); ~~~~~^ ..\..\..\boost/fusion/sequence/convert.hpp:48:21: note: in instantiation of member function 'boost::fusion::extension::convert_impl::apply >::call' requested here return gen::call(seq); ^ sequence\deque_convert.cpp:11:63: note: in instantiation of function template specialization 'boost::fusion::convert >' requested here boost::fusion::deque t = boost::fusion::convert(boost::fusion::make_vector(123, ""Hola!!!"")); // Line 13 }}} In the source file commenting out line 13 and uncommenting line 14 produces the same error. I do not believe any conversion to a boost::fusion::deque, using the generic boost::fusion::convert functionality, will work. I discovered this bug testing out a PR for the iterator library where a suggested change has been implemented so that the zip_iterator in the iterator library can use fusion sequences, and through the fusion adapter, std::tuple, as the tuple type for the tupleiterator of a zip_iterator. " Bugs closed Boost 1.60.0 fusion Boost Release Branch Problem fixed