]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/math/tools/detail/is_const_iterable.hpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / boost / math / tools / detail / is_const_iterable.hpp
CommitLineData
92f5a8d4
TL
1// (C) Copyright John Maddock 2018.
2// Use, modification and distribution are subject to the
3// Boost Software License, Version 1.0. (See accompanying file
4// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#ifndef BOOST_MATH_TOOLS_IS_CONST_ITERABLE_HPP
7#define BOOST_MATH_TOOLS_IS_CONST_ITERABLE_HPP
8
f67539c2
TL
9#include <boost/math/tools/cxx03_warn.hpp>
10
92f5a8d4
TL
11#define BOOST_MATH_HAS_IS_CONST_ITERABLE
12
1e59de90 13#include <boost/math/tools/is_detected.hpp>
92f5a8d4
TL
14#include <utility>
15
16namespace boost {
17 namespace math {
18 namespace tools {
19 namespace detail {
20
21 template<class T>
22 using begin_t = decltype(std::declval<const T&>().begin());
23 template<class T>
24 using end_t = decltype(std::declval<const T&>().end());
25 template<class T>
26 using const_iterator_t = typename T::const_iterator;
27
28 template <class T>
29 struct is_const_iterable
1e59de90
TL
30 : public std::integral_constant<bool,
31 is_detected<begin_t, T>::value
32 && is_detected<end_t, T>::value
33 && is_detected<const_iterator_t, T>::value
92f5a8d4
TL
34 > {};
35
36} } } }
37
92f5a8d4 38#endif // BOOST_MATH_TOOLS_IS_CONST_ITERABLE_HPP