diff options
Diffstat (limited to 'boost/fusion/container/map/detail/value_at_impl.hpp')
-rw-r--r-- | boost/fusion/container/map/detail/value_at_impl.hpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/boost/fusion/container/map/detail/value_at_impl.hpp b/boost/fusion/container/map/detail/value_at_impl.hpp index 31d9b38383..f98c580068 100644 --- a/boost/fusion/container/map/detail/value_at_impl.hpp +++ b/boost/fusion/container/map/detail/value_at_impl.hpp @@ -1,13 +1,13 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2011 Brandon Kohn + Copyright (c) 2001-2013 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP) -#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP +#if !defined(BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_02042013_0821) +#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_02042013_0821 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/at.hpp> namespace boost { namespace fusion @@ -23,12 +23,16 @@ namespace boost { namespace fusion struct value_at_impl<map_tag> { template <typename Sequence, typename N> - struct apply + struct apply { - typedef typename mpl::at<typename Sequence::storage_type::types, N>::type type; + typedef mpl::int_<N::value> index; + typedef + decltype(std::declval<Sequence>().get_val(index())) + type; }; }; } }} -#endif //BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP +#endif + |