id summary reporter owner description type status milestone component version severity resolution keywords cc 12423 fusion::make_map breaks when passing references oleg00@… Joel de Guzman "When using variadic maps the following code doesn't compile: {{{ int i = 0; fusion::make_map(ref(i)); }}} Clang gives this error: error : no matching constructor for initialization of 'detail::map_impl<0, pair >' 1> : base_type(first, rest...) 1> ^ ~~~~~ There is a constructor in fusion::pair that can do the required conversion: {{{ template BOOST_FUSION_GPU_ENABLED pair(Second2&& val , typename boost::disable_if >::type* /* dummy */ = 0 , typename boost::enable_if >::type* /*dummy*/ = 0 ) : second(BOOST_FUSION_FWD_ELEM(Second, val)) {} }}} But it's not being invoked since there's no make_map function that takes rvalue refs. I was able to make this work by adding another make_map overload: {{{ template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline map< fusion::pair< Key , typename detail::as_fusion_element::type >...> make_map(T &&... arg) { typedef map< fusion::pair< Key , typename detail::as_fusion_element::type >...> result_type; return result_type(std::forward(arg)...); } }}} " Bugs new To Be Determined fusion Boost 1.61.0 Problem fusion make_map