Turi Create  4.0
is_siterable.hpp
1 /* Copyright © 2017 Apple Inc. All rights reserved.
2  *
3  * Use of this source code is governed by a BSD-3-clause license that can
4  * be found in the LICENSE.txt file or at https://opensource.org/licenses/BSD-3-Clause
5  */
6 #ifndef TURI_UNITY_IS_SITERABLE_HPP
7 #define TURI_UNITY_IS_SITERABLE_HPP
8 
9 #include <iterator>
10 #include <type_traits>
11 #include <core/storage/sframe_data/siterable.hpp>
12 namespace turi {
13 namespace sframe_impl {
14 
15 
16 /**
17  * \ingroup sframe_physical
18  * is_siterable<T>::value is true if T inherits from siterable
19  */
20 template <typename T,
21  typename DecayedT = typename std::decay<T>::type,
22  typename Iterator = typename DecayedT::iterator>
23 struct is_siterable {
24  static constexpr bool value =
25  std::is_base_of<turi::siterable<Iterator>, DecayedT>::value;
26 };
27 
28 
29 template <typename T>
30 struct is_siterable<T,void,void> {
31  static constexpr bool value = false;
32 };
33 
34 
35 
36 } // sframe_impl
37 } // turicreate
38 
39 #endif