19 #include <type_traits> 25 namespace dptr_detail {
35 template <
typename... Types>
42 template <
typename T,
typename... Types>
47 template <
typename T,
typename U,
typename... Types>
53 template <
typename... Types>
66 template <
typename T,
typename U,
typename... Types>
74 template <
typename... Types>
77 template <
typename T,
typename... Types>
82 "Not all types in pack are the same");
87 template <
typename V,
typename T>
94 template <
typename V,
typename T>
102 template <
typename V,
typename... Types>
111 template <
typename V,
typename... Types>
118 template <
size_t index,
typename V,
typename R,
typename... Types>
121 template <
typename V,
typename R,
typename T,
typename... Types>
124 return visitor(static_cast<T*>(ptr));
128 template <
size_t index,
typename V,
typename R,
typename T,
typename... Types>
131 return runtimeIndex == 1
132 ? visitor(static_cast<T*>(ptr))
134 runtimeIndex - 1, std::forward<V>(visitor),
ptr);
138 template <
size_t index,
typename V,
typename R,
typename... Types>
141 template <
typename V,
typename R,
typename T,
typename... Types>
144 return visitor(static_cast<const T*>(ptr));
148 template <
size_t index,
typename V,
typename R,
typename T,
typename... Types>
151 return runtimeIndex == 1
152 ? visitor(static_cast<const T*>(ptr))
154 runtimeIndex - 1, std::forward<V>(visitor),
ptr);
158 template <
typename V,
typename... Types>
165 template <typename V, typename... Types>
typename invoke_result< F, Args... >::type invoke_result_t
SameType< typename VisitorResult1< V, Types >::type... >::type type
—— Concurrent Priority Queue Implementation ——
R operator()(size_t runtimeIndex, V &&visitor, void *ptr) const
R operator()(size_t, V &&visitor, void *ptr) const
R operator()(size_t runtimeIndex, V &&visitor, void *ptr) const
invoke_result_t< V, T * > type
SameType< typename ConstVisitorResult1< V, Types >::type... >::type type
static const char *const value
R operator()(size_t, V &&visitor, void *ptr) const
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)
invoke_result_t< V, const T * > type