56 TIMEMORY_DEFAULT_OBJECT(
mark)
58 template <
typename... Args>
61 sfinae(obj, 0, std::forward<Args>(args)...);
64 template <
typename... Args>
67 return sfinae(obj, 0, std::forward<Args>(args)...);
72 template <
typename Up,
typename... Args>
73 auto sfinae(Up& obj,
int, Args&&... args)
74 ->
decltype(obj.mark(std::forward<Args>(args)...))
76 return obj.mark(std::forward<Args>(args)...);
80 template <
typename Up,
typename... Args>
81 void sfinae(Up&,
long, Args&&...)
102 template <
typename... Args>
107 template <
typename Up,
typename... Args>
108 auto sfinae(Up& obj,
int,
int, Args&&...
args)
109 ->
decltype(obj.mark_begin(std::forward<Args>(
args)...))
111 return obj.mark_begin(std::forward<Args>(
args)...);
115 template <
typename Up,
typename... Args>
116 auto sfinae(Up& obj,
int,
long, Args&&...) ->
decltype(obj.mark_begin())
118 return obj.mark_begin();
122 template <
typename Up,
typename... Args>
123 void sfinae(Up&,
long,
long, Args&&...)
137template <
typename Tp>
144 template <
typename... Args>
149 template <
typename Up,
typename... Args>
150 auto sfinae(Up& obj,
int,
int, Args&&...
args)
151 ->
decltype(obj.mark_end(std::forward<Args>(
args)...))
153 return obj.mark_end(std::forward<Args>(
args)...);
157 template <
typename Up,
typename... Args>
158 auto sfinae(Up& obj,
int,
long, Args&&...) ->
decltype(obj.mark_end())
160 return obj.mark_end();
164 template <
typename Up,
typename... Args>
165 void sfinae(Up&,
long,
long, Args&&...)
171template <
typename Tp>
172template <
typename... Args>
175 sfinae(obj, 0, 0, std::forward<Args>(args)...);
180template <
typename Tp>
181template <
typename... Args>
184 sfinae(obj, 0, 0, std::forward<Args>(args)...);
void mark_begin(TupleT< Tp... > &obj, Args &&... args)
void mark_end(TupleT< Tp... > &obj, Args &&... args)
The declaration for the types for operations without definitions.
Include the macros for operations.
Declare the operations types.
This operation class is used for asynchronous routines such as cuda_event and nvtx_marker which are p...
TIMEMORY_DELETED_OBJECT(mark_begin) template< typename... Args > explicit mark_begin(type &obj
This operation class is used for asynchronous routines such as cuda_event and nvtx_marker which are p...
TIMEMORY_DELETED_OBJECT(mark_end) template< typename... Args > explicit mark_end(type &obj
This operation class is used for marking some event (usually in some external profiler)
auto operator()(type &obj, Args &&... args)
mark(type &obj, Args &&... args)