61template <
typename... Types>
63:
public auto_base_bundle<TIMEMORY_API, component_tuple<>, auto_tuple<Types...>>
76 template <
typename... Args>
86 static constexpr std::size_t
size() {
return poly_base::size(); }
97template <
typename... Types>
98template <
typename... Args>
103template <
typename... Types>
107 os << poly_base::m_temporary;
115template <
typename... Types>
119 return get(_obj.get_component());
122template <
typename... Types>
135#if !defined(TIMEMORY_VARIADIC_BLANK_AUTO_TUPLE)
136# define TIMEMORY_VARIADIC_BLANK_AUTO_TUPLE(tag, ...) \
137 using _TIM_TYPEDEF(__LINE__) = ::tim::auto_tuple<__VA_ARGS__>; \
138 TIMEMORY_BLANK_MARKER(_TIM_TYPEDEF(__LINE__), tag);
141#if !defined(TIMEMORY_VARIADIC_BASIC_AUTO_TUPLE)
142# define TIMEMORY_VARIADIC_BASIC_AUTO_TUPLE(tag, ...) \
143 using _TIM_TYPEDEF(__LINE__) = ::tim::auto_tuple<__VA_ARGS__>; \
144 TIMEMORY_BASIC_MARKER(_TIM_TYPEDEF(__LINE__), tag);
147#if !defined(TIMEMORY_VARIADIC_AUTO_TUPLE)
148# define TIMEMORY_VARIADIC_AUTO_TUPLE(tag, ...) \
149 using _TIM_TYPEDEF(__LINE__) = ::tim::auto_tuple<__VA_ARGS__>; \
150 TIMEMORY_MARKER(_TIM_TYPEDEF(__LINE__), tag);
164template <std::size_t N,
typename... Types>
165typename std::tuple_element<N, std::tuple<Types...>>::type&
168 return get<N>(obj.data());
173template <std::size_t N,
typename... Types>
174const typename std::tuple_element<N, std::tuple<Types...>>::type&
177 return get<N>(obj.data());
182template <std::size_t N,
typename... Types>
188 return get<N>(std::forward<obj_type>(obj).data());
This is a variadic component wrapper where all components are allocated on the stack and cannot be di...
convert_t< mpl::available_t< concat< Types... > >, auto_tuple<> > type
auto_tuple(Args &&... args)
friend std::ostream & operator<<(std::ostream &os, const this_type &obj)
auto_tuple & operator=(const auto_tuple &)=default
auto_tuple< Types... > this_type
auto_tuple & operator=(auto_tuple &&)=default
auto_tuple(auto_tuple &&)=default
auto_tuple(const auto_tuple &)=default
this_type & print(std::ostream &os, bool _endl=false) const
static constexpr std::size_t size()
typename base_type::component_type component_type
This is a variadic component wrapper where all components are allocated on the stack and cannot be di...
component_tuple< Types... > component_type
std::tuple_element< N, std::tuple< Types... > >::type & get(tim::auto_bundle< Tag, Types... > &obj)
impl::filter_false< trait::is_available, T > available_t
typename impl::concat< Types... >::type concat
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.