Realistic 3D camera system
3D camera system components
handler_type.hpp
Go to the documentation of this file.
1 //
2 // handler_type.hpp
3 // ~~~~~~~~~~~~~~~~
4 //
5 // Copyright (c) 2003-2015 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_HANDLER_TYPE_HPP
12 #define ASIO_HANDLER_TYPE_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 
21 
22 namespace asio {
23 
25 
33 template <typename Handler, typename Signature>
35 {
37  typedef Handler type;
38 };
39 
40 #if !defined(GENERATING_DOCUMENTATION)
41 
42 template <typename Handler, typename Signature>
43 struct handler_type<const Handler, Signature>
44  : handler_type<Handler, Signature> {};
45 
46 template <typename Handler, typename Signature>
47 struct handler_type<volatile Handler, Signature>
48  : handler_type<Handler, Signature> {};
49 
50 template <typename Handler, typename Signature>
51 struct handler_type<const volatile Handler, Signature>
52  : handler_type<Handler, Signature> {};
53 
54 template <typename Handler, typename Signature>
55 struct handler_type<const Handler&, Signature>
57 
58 template <typename Handler, typename Signature>
59 struct handler_type<volatile Handler&, Signature>
61 
62 template <typename Handler, typename Signature>
63 struct handler_type<const volatile Handler&, Signature>
65 
66 template <typename Handler, typename Signature>
67 struct handler_type<Handler&, Signature>
69 
70 #if defined(ASIO_HAS_MOVE)
71 template <typename Handler, typename Signature>
72 struct handler_type<Handler&&, Signature>
74 #endif // defined(ASIO_HAS_MOVE)
75 
76 template <typename ReturnType, typename Signature>
77 struct handler_type<ReturnType(), Signature>
78  : handler_type<ReturnType(*)(), Signature> {};
79 
80 template <typename ReturnType, typename Arg1, typename Signature>
81 struct handler_type<ReturnType(Arg1), Signature>
82  : handler_type<ReturnType(*)(Arg1), Signature> {};
83 
84 template <typename ReturnType, typename Arg1, typename Arg2, typename Signature>
85 struct handler_type<ReturnType(Arg1, Arg2), Signature>
86  : handler_type<ReturnType(*)(Arg1, Arg2), Signature> {};
87 
88 template <typename ReturnType, typename Arg1, typename Arg2, typename Arg3,
89  typename Signature>
90 struct handler_type<ReturnType(Arg1, Arg2, Arg3), Signature>
91  : handler_type<ReturnType(*)(Arg1, Arg2, Arg3), Signature> {};
92 
93 template <typename ReturnType, typename Arg1, typename Arg2, typename Arg3,
94  typename Arg4, typename Signature>
95 struct handler_type<ReturnType(Arg1, Arg2, Arg3, Arg4), Signature>
96  : handler_type<ReturnType(*)(Arg1, Arg2, Arg3, Arg4), Signature> {};
97 
98 template <typename ReturnType, typename Arg1, typename Arg2, typename Arg3,
99  typename Arg4, typename Arg5, typename Signature>
100 struct handler_type<ReturnType(Arg1, Arg2, Arg3, Arg4, Arg5), Signature>
101  : handler_type<ReturnType(*)(Arg1, Arg2, Arg3, Arg4, Arg5), Signature> {};
102 
103 #endif // !defined(GENERATING_DOCUMENTATION)
104 
105 } // namespace asio
106 
108 
109 #define ASIO_HANDLER_TYPE(h, sig) \
110  typename handler_type<h, sig>::type
111 
112 #endif // ASIO_HANDLER_TYPE_HPP
Handler type
The handler type for the specific signature.
Default handler type traits provided for all handlers.