53template <
template <
typename...>
class CompT,
typename... C>
63 sfinae(b, obj, 0, std::forward<Arg>(arg));
68 template <
typename Up,
typename Arg>
69 auto sfinae(
bool& b, Up& obj,
int, Arg&& arg)
70 ->
decltype(obj.assemble(arg.template get_component<C>()...), void())
72 b = obj.assemble(arg.template get_component<C>()...);
75 template <
typename Up,
typename Arg>
76 void sfinae(
bool&, Up&,
long, Arg&&)
96 using derived_t =
typename std::tuple_element<Idx, derived_tuple_t>::type;
99 template <
typename... Args>
102 template <typename Arg, size_t N = std::tuple_size<derived_tuple_t>::value,
109 sfinae(obj, 0, 0, std::forward<Arg>(arg));
112 template <
template <
typename...>
class BundleT,
typename... Args>
116 constexpr auto N = std::tuple_size<derived_tuple_t>::value;
119 sfinae(obj, 0, 0, arg);
124 template <
typename Up,
size_t... Idx,
typename... Args>
128 fold_assemble<derived_t<Idx>>(b, obj, std::forward<Args>(args)...));
133 template <
typename Up,
typename... Args>
134 auto sfinae(Up& obj,
int,
int, Args&&... args)
135 ->
decltype(obj.assemble(std::forward<Args>(args)...), void())
137 obj.assemble(std::forward<Args>(args)...);
141 template <
typename Up,
typename... Args>
142 auto sfinae(Up& obj,
int,
long, Args&&...) ->
decltype(obj.assemble(), void())
148 template <
typename Up,
typename... Args>
149 void sfinae(Up&,
long,
long, Args&&...)
157template <
typename Tp>
158template <
typename... Args>
161 sfinae(obj, 0, 0, std::forward<Args>(args)...);
typename std::enable_if< B, T >::type enable_if_t
std::make_integer_sequence< size_t, Num > make_index_sequence
Alias template make_index_sequence.
std::integer_sequence< size_t, Idx... > index_sequence
Alias template index_sequence.
The declaration for the types for operations without definitions.
Include the macros for operations.
Declare the operations types.
assemble(type &obj, Arg &&arg)
assemble(type &obj, BundleT< Args... > &arg)
assemble(type &obj, Args &&... args)
(assemble) private typename std::tuple_element< Idx, derived_tuple_t >::type derived_t
TIMEMORY_DELETED_OBJECT(fold_assemble) template< typename Up
std::tuple< type_list<> > type
#define TIMEMORY_DELETED_OBJECT(NAME)
#define TIMEMORY_FOLD_EXPRESSION(...)
typename typename typename