OSVR-Core
Compose.h
Go to the documentation of this file.
1 
14 // Copyright 2015 Sensics, Inc.
15 // TypePack is part of OSVR-Core.
16 //
17 // Incorporates code from "meta":
18 // Copyright Eric Niebler 2014-2015
19 //
20 // Use, modification and distribution is subject to the
21 // Boost Software License, Version 1.0. (See accompanying
22 // file LICENSE_1_0.txt or copy at
23 // http://www.boost.org/LICENSE_1_0.txt)
24 //
25 // Project home: https://github.com/ericniebler/meta
26 //
27 
28 #ifndef INCLUDED_Compose_h_GUID_D6907ED1_0D1C_4FAE_C5FB_3C1845DA7AA4
29 #define INCLUDED_Compose_h_GUID_D6907ED1_0D1C_4FAE_C5FB_3C1845DA7AA4
30 
31 // Internal Includes
32 #include "Apply.h"
33 
34 // Library/third-party includes
35 // - none
36 
37 // Standard includes
38 // - none
39 
40 namespace osvr {
41 namespace typepack {
42 
44  template <typename... Fs> struct compose {};
45 
46  template <typename F0> struct compose<F0> {
47  template <typename... Ts> using apply = typepack::apply<F0, Ts...>;
48  };
49 
50  template <typename F0, typename... Fs> struct compose<F0, Fs...> {
51  template <typename... Ts>
52  using apply =
53  typepack::apply<F0, typepack::apply<compose<Fs...>, Ts...>>;
54  };
55 } // namespace typepack
56 } // namespace osvr
57 #endif // INCLUDED_Compose_h_GUID_D6907ED1_0D1C_4FAE_C5FB_3C1845DA7AA4
Header.
The main namespace for all C++ elements of the framework, internal and external.
Definition: namespace_osvr.dox:3
typename F::template apply< Args... > apply
Apply an alias class.
Definition: Apply.h:44
Compose the Alias Classes Fs in the parameter pack Ts.
Definition: Compose.h:44