#ifndef __CDS_INTRUSIVE_TSIGAS_CYCLE_QUEUE_H
#define __CDS_INTRUSIVE_TSIGAS_CYCLE_QUEUE_H
-#include <cds/intrusive/base.h>
+#include <functional> // ref
+#include <cds/intrusive/details/base.h>
#include <cds/cxx11_atomic.h>
#include <cds/details/bounded_container.h>
#include <cds/opt/buffer.h>
-#include <cds/ref.h>
namespace cds { namespace intrusive {
dynamic_queue dynQueue( 1024 );
\endcode
*/
- template <typename T, CDS_DECL_OPTIONS7>
+ template <typename T, typename... Options>
class TsigasCycleQueue: public cds::bounded_container
{
//@cond
public:
//@cond
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7>::type
- ,CDS_OPTIONS7
+ typename cds::opt::find_type_traits< default_options, Options...>::type
+ ,Options...
>::type options;
//@endcond
public:
/// Rebind template arguments
- template <typename T2, CDS_DECL_OTHER_OPTIONS7>
+ template <typename T2, typename... Options2>
struct rebind {
- typedef TsigasCycleQueue< T2, CDS_OTHER_OPTIONS7> other ; ///< Rebinding result
+ typedef TsigasCycleQueue< T2, Options2...> other ; ///< Rebinding result
};
public:
void operator ()( T * val );
};
\endcode
- You can pass \p disposer by reference using \p boost::ref.
+ You can pass \p disposer by reference using \p std::ref.
The disposer will be called immediately for each item.
*/
template <typename Disposer>
{
value_type * pv;
while ( (pv = pop()) != nullptr ) {
- unref(f)( pv );
+ f( pv );
}
}