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,