// Copyright (c) 2008 Hartmut Kaiser // // 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) #include #include struct queue_entry { typedef boost::intrusive::slist_member_hook< boost::intrusive::link_mode > hook_type; queue_entry(int id) : id_(id) {} int id_; hook_type slist_hook_; }; typedef boost::intrusive::member_hook< queue_entry, queue_entry::hook_type, &queue_entry::slist_hook_ > slist_option_type; typedef boost::intrusive::slist< queue_entry, slist_option_type, boost::intrusive::cache_last, boost::intrusive::constant_time_size > queue_type; int main() { queue_type queue1, queue2; queue_entry e1(0), e2(2), e3(3), e4(4); queue1.push_back(e1); queue1.push_back(e2); queue1.push_back(e3); queue1.push_back(e4); // queue2.swap(queue1); // this works queue1.swap(queue2); // this doesn't work BOOST_TEST(!queue2.empty()); return boost::report_errors(); }