diff options
author | Chanho Park <chanho61.park@samsung.com> | 2014-12-11 18:55:56 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-12-11 18:55:56 +0900 |
commit | 08c1e93fa36a49f49325a07fe91ff92c964c2b6c (patch) | |
tree | 7a7053ceb8874b28ec4b868d4c49b500008a102e /boost/fusion/container/map/detail/at_impl.hpp | |
parent | bb4dd8289b351fae6b55e303f189127a394a1edd (diff) | |
download | boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.tar.gz boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.tar.bz2 boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.zip |
Imported Upstream version 1.57.0upstream/1.57.0
Diffstat (limited to 'boost/fusion/container/map/detail/at_impl.hpp')
-rw-r--r-- | boost/fusion/container/map/detail/at_impl.hpp | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/boost/fusion/container/map/detail/at_impl.hpp b/boost/fusion/container/map/detail/at_impl.hpp index 025c1724a1..c2a565ebe0 100644 --- a/boost/fusion/container/map/detail/at_impl.hpp +++ b/boost/fusion/container/map/detail/at_impl.hpp @@ -1,17 +1,14 @@ /*============================================================================= - 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_AT_IMPL_HPP) -#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP +#if !defined(BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821) +#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/access.hpp> -#include <boost/type_traits/is_const.hpp> -#include <boost/mpl/at.hpp> -#include <boost/mpl/int.hpp> namespace boost { namespace fusion { @@ -26,36 +23,38 @@ namespace boost { namespace fusion struct at_impl<map_tag> { template <typename Sequence, typename N> - struct apply + struct apply { - typedef typename - mpl::at<typename Sequence::storage_type::types, N>::type - element; - typedef typename detail::ref_result<element>::type type; - + typedef mpl::int_<N::value> index; + typedef + decltype(std::declval<Sequence>().get(index())) + type; + + BOOST_FUSION_GPU_ENABLED static type call(Sequence& m) { - return m.get_data().at_impl(N()); + return m.get(index()); } }; template <typename Sequence, typename N> struct apply<Sequence const, N> { - typedef typename - mpl::at<typename Sequence::storage_type::types, N>::type - element; - typedef typename detail::cref_result<element>::type type; - + typedef mpl::int_<N::value> index; + typedef + decltype(std::declval<Sequence const>().get(index())) + type; + + BOOST_FUSION_GPU_ENABLED static type call(Sequence const& m) { - return m.get_data().at_impl(N()); + return m.get(index()); } }; }; } }} -#endif //BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP +#endif |