9 #ifndef BOOST_GEOMETRY_INDEX_INDEXABLE_HPP
10 #define BOOST_GEOMETRY_INDEX_INDEXABLE_HPP
12 #include <boost/mpl/assert.hpp>
14 #include <boost/geometry/index/detail/is_indexable.hpp>
16 namespace boost {
namespace geometry {
namespace index {
namespace detail {
28 template <typename Value, bool IsIndexable = is_indexable<Value>::value>
32 (detail::is_indexable<Value>::value),
33 NOT_VALID_INDEXABLE_TYPE,
60 template <
typename Indexable,
typename T2>
64 (detail::is_indexable<Indexable>::value),
65 NOT_VALID_INDEXABLE_TYPE,
91 template <
typename Indexable,
typename T1,
typename T2,
typename T3,
typename T4,
92 typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
93 struct indexable<boost::tuple<Indexable, T1, T2, T3, T4, T5, T6, T7, T8, T9>, false>
95 typedef boost::tuple<Indexable, T1, T2, T3, T4, T5, T6, T7, T8, T9> value_type;
98 (detail::is_indexable<Indexable>::value),
99 NOT_VALID_INDEXABLE_TYPE,
114 return boost::get<0>(v);
120 #if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
124 namespace boost {
namespace geometry {
namespace index {
namespace detail {
134 template <
typename Indexable,
typename ...Args>
137 typedef std::tuple<Indexable, Args...> value_type;
139 BOOST_MPL_ASSERT_MSG(
140 (detail::is_indexable<Indexable>::value),
141 NOT_VALID_INDEXABLE_TYPE,
156 return std::get<0>(v);
162 #endif // !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
164 namespace boost {
namespace geometry {
namespace index {
175 template <
typename Value>
196 #endif // BOOST_GEOMETRY_INDEX_INDEXABLE_HPP
The function object extracting Indexable from Value.
Definition: indexable.hpp:176
Indexable const & result_type
The type of result returned by function object.
Definition: indexable.hpp:70
boost::geometry::index::detail::indexable< boost::tuple< Indexable, T1, T2, T3, T4, T5, T6, T7, T8, T9 >, false >::operator() result_type operator()(value_type const &v) const
Return indexable extracted from the value.
Definition: indexable.hpp:112
The function object extracting Indexable from Value.
Definition: indexable.hpp:29
detail::indexable< Value >::result_type result_type
The type of result returned by function object. It should be const Indexable reference.
Definition: indexable.hpp:180
result_type operator()(Value const &v) const
Return indexable extracted from the value.
Definition: indexable.hpp:188
boost::geometry::index::detail::indexable< boost::tuple< Indexable, T1, T2, T3, T4, T5, T6, T7, T8, T9 >, false >::result_type Indexable const & result_type
The type of result returned by function object.
Definition: indexable.hpp:104
Value const & result_type
The type of result returned by function object.
Definition: indexable.hpp:38
result_type operator()(value_type const &v) const
Return indexable extracted from the value.
Definition: indexable.hpp:154
result_type operator()(Value const &v) const
Return indexable extracted from the value.
Definition: indexable.hpp:46
Indexable const & result_type
The type of result returned by function object.
Definition: indexable.hpp:146
result_type operator()(std::pair< Indexable, T2 > const &v) const
Return indexable extracted from the value.
Definition: indexable.hpp:78