28 #ifndef INCLUDED_If_h_GUID_F34A2E21_4328_478B_E11B_2E8FBD606BF8
29 #define INCLUDED_If_h_GUID_F34A2E21_4328_478B_E11B_2E8FBD606BF8
39 #include <type_traits>
45 template <
typename...>
struct if_impl {};
47 template <
typename If>
48 struct if_impl<If> : std::enable_if<If::type::value> {};
50 template <
typename If,
typename Then>
51 struct if_impl<If, Then> : std::enable_if<If::type::value, Then> {};
53 template <
typename If,
typename Then,
typename Else>
54 struct if_impl<If, Then, Else>
55 : std::conditional<If::type::value, Then, Else> {};
61 template <
typename... Args>
using if_ =
t_<detail::if_impl<Args...>>;
64 template <
bool If,
typename... Args>
68 #endif // INCLUDED_If_h_GUID_F34A2E21_4328_478B_E11B_2E8FBD606BF8
The main namespace for all C++ elements of the framework, internal and external.
t_< detail::if_impl< Args...>> if_
typename T::type t_
A convenience alias template to extract the nested type within the supplied T.
t_< detail::if_impl< bool_< If >, Args...>> if_c
Select one type or another depending on a compile-time Boolean value.