forked from boostorg/intrusive
More changes for Boost 1.45
[SVN r64984]
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2007-2010
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/list.hpp>
|
||||
#include <boost/intrusive/slist.hpp>
|
||||
#include <boost/intrusive/set.hpp>
|
||||
#include <boost/intrusive/unordered_set.hpp>
|
||||
#include <boost/intrusive/avl_set.hpp>
|
||||
#include <boost/intrusive/sg_set.hpp>
|
||||
#include <boost/intrusive/splay_set.hpp>
|
||||
#include <boost/intrusive/treap_set.hpp>
|
||||
#include <cassert>
|
||||
|
||||
using namespace boost::intrusive;
|
||||
|
||||
typedef list_base_hook<> ListBaseHook;
|
||||
typedef slist_base_hook<> SListBaseHook;
|
||||
typedef set_base_hook<> SetBaseHook;
|
||||
typedef unordered_set_base_hook<> USetBaseHook;
|
||||
|
||||
class Foo;
|
||||
typedef unordered_set<Foo, base_hook<USetBaseHook> > USet;
|
||||
|
||||
class Foo : public ListBaseHook, public SListBaseHook, public SetBaseHook, public USetBaseHook
|
||||
{
|
||||
USet::bucket_type buckets[1];
|
||||
Foo(const Foo &);
|
||||
Foo & operator=(const Foo &);
|
||||
|
||||
public:
|
||||
Foo() : uset_children(USet::bucket_traits(buckets, 1))
|
||||
{}
|
||||
list <Foo, base_hook<ListBaseHook> > list_children;
|
||||
slist<Foo, base_hook<SListBaseHook> > slist_children;
|
||||
set <Foo, base_hook<SetBaseHook> > set_children;
|
||||
USet uset_children;
|
||||
};
|
||||
|
||||
void instantiate()
|
||||
{
|
||||
list< Foo, base_hook<ListBaseHook> > list_; list_.clear();
|
||||
slist< Foo, base_hook<SListBaseHook> > slist_; slist_.clear();
|
||||
set< Foo, base_hook<SetBaseHook> > set_; set_.clear();
|
||||
|
||||
USet::bucket_type buckets[1];
|
||||
USet unordered_set_(USet::bucket_traits(buckets, 1)); unordered_set_.clear();
|
||||
}
|
||||
int main()
|
||||
{
|
||||
instantiate();
|
||||
|
||||
//A small test with list
|
||||
{
|
||||
Foo f, f2;
|
||||
list< Foo, base_hook<ListBaseHook> > l;
|
||||
l.insert(l.begin(), f);
|
||||
l.begin()->list_children.insert(l.begin()->list_children.begin(), f2);
|
||||
assert(l.size() == l.begin()->list_children.size());
|
||||
l.begin()->list_children.clear();
|
||||
l.clear();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user