lookup_key.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 100 行
HPP
100 行
/*============================================================================= Copyright (c) 2001-2006 Joel de Guzman 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(FUSION_LOOKUP_KEY_07222005_1248)#define FUSION_LOOKUP_KEY_07222005_1248#include <boost/mpl/int.hpp>#include <boost/type_traits/add_const.hpp>#include <boost/type_traits/add_reference.hpp>#include <boost/fusion/support/detail/unknown_key.hpp>namespace boost { namespace fusion { struct void_; }}namespace boost { namespace fusion { namespace detail { template <typename T> struct map_data_type { typedef typename add_reference< typename T::second_type >::type type; }; template <> struct map_data_type<void_> { typedef void_& type; }; template <typename T> struct map_const_data_type { typedef typename add_reference< typename add_const< typename T::second_type >::type >::type type; }; template <> struct map_const_data_type<void_> { typedef void_ const& type; }; template <typename T> struct map_value_type { typedef typename T::second_type type; }; template <> struct map_value_type<void_> { typedef void_ type; }; template <typename T, int index> struct map_key_type { typedef typename T::first_type type; }; template <int index> struct map_key_type<void_, index> { typedef unknown_key<index> type; }; template <int index, typename RT, typename Key, typename Vector> struct map_lookup_key { static RT call(Vector& vec) { return vec.at_impl(mpl::int_<index>()).second; } }; template <int index, typename Vector> struct map_lookup_key<index, void_&, unknown_key<index>, Vector> { static void_& call(Vector& vec); // intentionally undefined };}}} #endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?