Clementine
is_applicable_property.hpp
1 //
2 // is_applicable_property.hpp
3 // ~~~~~~~~~~~~~~~~~~~~~~~~~~
4 //
5 // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6 //
7 // Distributed under the Boost Software License, Version 1.0. (See accompanying
8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 //
10 
11 #ifndef ASIO_IS_APPLICABLE_PROPERTY_HPP
12 #define ASIO_IS_APPLICABLE_PROPERTY_HPP
13 
14 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15 # pragma once
16 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17 
18 #include "asio/detail/config.hpp"
19 #include "asio/detail/type_traits.hpp"
20 
21 namespace asio {
22 namespace detail {
23 
24 template <typename T, typename Property, typename = void>
25 struct is_applicable_property_trait : false_type
26 {
27 };
28 
29 #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
30 
31 template <typename T, typename Property>
32 struct is_applicable_property_trait<T, Property,
33  typename void_type<
34  typename enable_if<
35  !!Property::template is_applicable_property_v<T>
36  >::type
37  >::type> : true_type
38 {
39 };
40 
41 #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
42 
43 } // namespace detail
44 
45 template <typename T, typename Property, typename = void>
48 {
49 };
50 
51 #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
52 
53 template <typename T, typename Property>
54 ASIO_CONSTEXPR const bool is_applicable_property_v
56 
57 #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
58 
59 } // namespace asio
60 
61 #endif // ASIO_IS_APPLICABLE_PROPERTY_HPP
Definition: is_applicable_property.hpp:25
Definition: chrono.h:284
Definition: is_applicable_property.hpp:46
Definition: any_io_executor.hpp:28