In file included from /usr/include/boost/fusion/container/map/map_fwd.hpp:24:0, from /usr/include/boost/fusion/container/map/map.hpp:10, from /usr/include/boost/fusion/container/map.hpp:10, from /usr/include/boost/fusion/include/map.hpp:10, from fusion_map.cpp:2: /usr/include/boost/fusion/container/map/detail/map_impl.hpp: In instantiation of ‘struct boost::fusion::detail::map_impl<2, boost::fusion::pair, boost::fusion::pair, std::allocator > > >’: /usr/include/boost/fusion/container/map/detail/map_impl.hpp:51:12: recursively required from ‘struct boost::fusion::detail::map_impl<1, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, std::allocator > > >’ /usr/include/boost/fusion/container/map/detail/map_impl.hpp:51:12: required from ‘struct boost::fusion::detail::map_impl<0, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, std::allocator > > >’ /usr/include/boost/fusion/container/map/map.hpp:45:12: required from ‘struct boost::fusion::map, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, std::allocator > > >’ fusion_map.cpp:23:12: required from here /usr/include/boost/fusion/container/map/detail/map_impl.hpp:111:20: error: function returning an array value_type get_val(mpl::identity); ^ /usr/include/boost/fusion/container/map/detail/map_impl.hpp:113:20: error: function returning an array value_type get_val(mpl::identity) const; ^ fusion_map.cpp: In function ‘int main()’: fusion_map.cpp:23:36: error: no matching function for call to ‘boost::fusion::map, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, std::allocator > > >::map()’ test_t test{1, 2, {}, {"hello"}}; ^ fusion_map.cpp:23:36: note: candidates are: In file included from /usr/include/boost/fusion/container/map.hpp:10:0, from /usr/include/boost/fusion/include/map.hpp:10, from fusion_map.cpp:2: /usr/include/boost/fusion/container/map/map.hpp:88:9: note: boost::fusion::map::map(First&&, T_&& ...) [with First = int; T_ = {}; T = {boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, std::allocator > >}] map(First&& first, T_&&... rest) ^ /usr/include/boost/fusion/container/map/map.hpp:88:9: note: candidate expects 1 argument, 4 provided /usr/include/boost/fusion/container/map/map.hpp:83:9: note: boost::fusion::map::map(const First&, const T_& ...) [with First = int; T_ = {}; T = {boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, std::allocator > >}] map(First const& first, T_ const&... rest) ^ /usr/include/boost/fusion/container/map/map.hpp:83:9: note: candidate expects 1 argument, 4 provided /usr/include/boost/fusion/container/map/map.hpp:77:9: note: template boost::fusion::map::map(Sequence&&, typename boost::enable_if >::type*) map(Sequence&& seq ^ /usr/include/boost/fusion/container/map/map.hpp:77:9: note: template argument deduction/substitution failed: fusion_map.cpp:23:36: note: mismatched types ‘typename boost::enable_if, void>::type*’ and ‘int’ test_t test{1, 2, {}, {"hello"}}; ^ In file included from /usr/include/boost/fusion/container/map.hpp:10:0, from /usr/include/boost/fusion/include/map.hpp:10, from fusion_map.cpp:2: /usr/include/boost/fusion/container/map/map.hpp:71:9: note: template boost::fusion::map::map(Sequence&, typename boost::enable_if >::type*) map(Sequence& seq ^ /usr/include/boost/fusion/container/map/map.hpp:71:9: note: template argument deduction/substitution failed: fusion_map.cpp:23:36: note: mismatched types ‘typename boost::enable_if, void>::type*’ and ‘int’ test_t test{1, 2, {}, {"hello"}}; ^ In file included from /usr/include/boost/fusion/container/map.hpp:10:0, from /usr/include/boost/fusion/include/map.hpp:10, from fusion_map.cpp:2: /usr/include/boost/fusion/container/map/map.hpp:65:9: note: template boost::fusion::map::map(const Sequence&, typename boost::enable_if >::type*) map(Sequence const& seq ^ /usr/include/boost/fusion/container/map/map.hpp:65:9: note: template argument deduction/substitution failed: fusion_map.cpp:23:36: note: mismatched types ‘typename boost::enable_if, void>::type*’ and ‘int’ test_t test{1, 2, {}, {"hello"}}; ^ In file included from /usr/include/boost/fusion/container/map.hpp:10:0, from /usr/include/boost/fusion/include/map.hpp:10, from fusion_map.cpp:2: /usr/include/boost/fusion/container/map/map.hpp:60:9: note: boost::fusion::map::map(boost::fusion::map&&) [with T = {boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, std::allocator > >}] map(map&& seq) ^ /usr/include/boost/fusion/container/map/map.hpp:60:9: note: candidate expects 1 argument, 4 provided /usr/include/boost/fusion/container/map/map.hpp:56:9: note: boost::fusion::map::map(const boost::fusion::map&) [with T = {boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, std::allocator > >}] map(map const& seq) ^ /usr/include/boost/fusion/container/map/map.hpp:56:9: note: candidate expects 1 argument, 4 provided /usr/include/boost/fusion/container/map/map.hpp:54:9: note: boost::fusion::map::map() [with T = {boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, boost::fusion::pair, std::allocator > >}] map() {} ^ /usr/include/boost/fusion/container/map/map.hpp:54:9: note: candidate expects 0 arguments, 4 provided