19 #include <boost/config.hpp>
20 #include <boost/property_map/property_map.hpp>
21 #include <boost/type_traits.hpp>
22 #include <boost/utility/result_of.hpp>
23 #include <boost/mpl/and.hpp>
24 #include <boost/mpl/not.hpp>
29 template<typename Func, typename Key, typename Ret = typename boost::result_of<const Func(const Key&)>::type>
34 typedef typename boost::remove_cv<typename boost::remove_reference<Ret>::type>::type
value_type;
36 typedef typename boost::mpl::if_<
38 boost::is_reference<Ret>,
39 boost::mpl::not_<boost::is_const<Ret> >
41 boost::lvalue_property_map_tag,
42 boost::readable_property_map_tag>::type
55 template<
typename Key,
typename Func>
61 template<
typename Key,
typename Ret,
typename Func>
62 DtFunctionPropertyMap<Func, Key, Ret>