87template <
typename... Types>
89:
public auto_base_bundle<TIMEMORY_API, component_list<>, auto_list<Types...>>
102 template <
typename... Args>
112 static constexpr std::size_t
size() {
return poly_base::size(); }
123template <
typename... Types>
124template <
typename... Args>
129template <
typename... Types>
133 os << poly_base::m_temporary;
141template <
typename... Types>
145 return get(_obj.get_component());
148template <
typename... Types>
160#if !defined(TIMEMORY_VARIADIC_BLANK_AUTO_LIST)
161# define TIMEMORY_VARIADIC_BLANK_AUTO_LIST(tag, ...) \
162 using _TIM_TYPEDEF(__LINE__) = ::tim::auto_list<__VA_ARGS__>; \
163 TIMEMORY_BLANK_MARKER(_TIM_TYPEDEF(__LINE__), tag);
166#if !defined(TIMEMORY_VARIADIC_BASIC_AUTO_LIST)
167# define TIMEMORY_VARIADIC_BASIC_AUTO_LIST(tag, ...) \
168 using _TIM_TYPEDEF(__LINE__) = ::tim::auto_list<__VA_ARGS__>; \
169 TIMEMORY_BASIC_MARKER(_TIM_TYPEDEF(__LINE__), tag);
172#if !defined(TIMEMORY_VARIADIC_AUTO_LIST)
173# define TIMEMORY_VARIADIC_AUTO_LIST(tag, ...) \
174 using _TIM_TYPEDEF(__LINE__) = ::tim::auto_list<__VA_ARGS__>; \
175 TIMEMORY_MARKER(_TIM_TYPEDEF(__LINE__), tag);
186template <std::size_t N,
typename... Types>
190 return get<N>(obj.data());
195template <std::size_t N,
typename... Types>
199 return get<N>(obj.data());
204template <std::size_t N,
typename... Types>
210 return get<N>(std::forward<obj_type>(obj).data());
This is a variadic component wrapper where all components are optional at runtime....
typename base_type::component_type component_type
auto_list(const auto_list &)=default
auto_list< Types... > this_type
auto_list & operator=(const auto_list &)=default
convert_t< typename component_type::type, auto_list<> > type
friend std::ostream & operator<<(std::ostream &os, const this_type &obj)
static constexpr std::size_t size()
auto_list(Args &&... args)
auto_list(auto_list &&)=default
auto_list & operator=(auto_list &&)=default
this_type & print(std::ostream &os, bool _endl=false) const
This is a variadic component wrapper where all components are optional at runtime....
component_list< Types... > component_type
std::tuple_element< N, std::tuple< Types... > >::type & get(tim::auto_bundle< Tag, Types... > &obj)
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.