96template <
typename Tag,
typename... Types>
98:
public auto_base_bundle<Tag, component_bundle<Tag>, auto_bundle<Tag, Types...>>
111 template <
typename... Args>
121 static constexpr std::size_t
size() {
return poly_base::size(); }
124 this_type&
print(std::ostream&
os,
bool _endl =
false)
const;
132template <
typename Tag,
typename... Types>
133template <
typename... Args>
138template <
typename Tag,
typename... Types>
142 os << poly_base::m_temporary;
150template <
typename Tag,
typename... Types>
154 return get(_obj.get_component());
159template <
typename Tag,
typename... Types>
172#if !defined(TIMEMORY_VARIADIC_BLANK_AUTO_BUNDLE)
173# define TIMEMORY_VARIADIC_BLANK_AUTO_BUNDLE(tag, ...) \
174 using _TIM_TYPEDEF(__LINE__) = ::tim::auto_bundle<__VA_ARGS__>; \
175 TIMEMORY_BLANK_MARKER(_TIM_TYPEDEF(__LINE__), tag);
178#if !defined(TIMEMORY_VARIADIC_BASIC_AUTO_BUNDLE)
179# define TIMEMORY_VARIADIC_BASIC_AUTO_BUNDLE(tag, ...) \
180 using _TIM_TYPEDEF(__LINE__) = ::tim::auto_bundle<__VA_ARGS__>; \
181 TIMEMORY_BASIC_MARKER(_TIM_TYPEDEF(__LINE__), tag);
184#if !defined(TIMEMORY_VARIADIC_AUTO_BUNDLE)
185# define TIMEMORY_VARIADIC_AUTO_BUNDLE(tag, ...) \
186 using _TIM_TYPEDEF(__LINE__) = ::tim::auto_bundle<__VA_ARGS__>; \
187 TIMEMORY_MARKER(_TIM_TYPEDEF(__LINE__), tag);
201template <std::size_t N,
typename Tag,
typename... Types>
202typename std::tuple_element<N, std::tuple<Types...>>::type&
205 return get<N>(obj.data());
210template <std::size_t N,
typename Tag,
typename... Types>
211const typename std::tuple_element<N, std::tuple<Types...>>::type&
214 return get<N>(obj.data());
219template <std::size_t N,
typename Tag,
typename... Types>
225 return get<N>(std::forward<obj_type>(obj).data());
auto_bundle & operator=(const auto_bundle &)=default
friend std::ostream & operator<<(std::ostream &os, const this_type &obj)
typename base_type::component_type component_type
convert_t< typename component_type::type, auto_bundle< Tag > > type
this_type & print(std::ostream &os, bool _endl=false) const
auto_bundle(const auto_bundle &)=default
static constexpr std::size_t size()
auto_bundle(auto_bundle &&)=default
auto_bundle & operator=(auto_bundle &&)=default
std::tuple_element< N, std::tuple< Types... > >::type & get(tim::auto_bundle< Tag, Types... > &obj)
void print(std::ostream &os, Args &&... args)
auto get_labeled(const auto_bundle< Tag, Types... > &_obj)
const std::string std::ostream * os
auto get(const auto_bundle< Tag, Types... > &_obj)
typename impl::convert< T, U >::type convert_t
Static polymorphic base class for automatic start/stop bundlers.
This is a variadic component wrapper which combines the features of tim::component_tuple<T....
This is a variadic component wrapper which combines the features of tim::auto_tuple<T....