// Copyright 2003 The Trustees of Indiana University. // Use, modification and distribution is subject to 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) // Shared container iterator adaptor // Author: Ronald Garcia // See http://boost.org/libs/utility/shared_container_iterator.html // for documentation. // // shared_iterator_test.cpp - Regression tests for shared_container_iterator. // #include "boost/shared_container_iterator.hpp" #include "boost/shared_ptr.hpp" #include #include struct resource { static int count; resource() { ++count; } resource(resource const&) { ++count; } ~resource() { --count; } }; int resource::count = 0; typedef std::vector resources_t; typedef boost::shared_container_iterator< resources_t > iterator; void set_range(iterator& i, iterator& end) { boost::shared_ptr< resources_t > objs(new resources_t()); for (int j = 0; j != 6; ++j) objs->push_back(resource()); i = iterator(objs->begin(),objs); end = iterator(objs->end(),objs); assert(resource::count == 6); } int main() { assert(resource::count == 0); { iterator i; { iterator end; set_range(i,end); assert(resource::count == 6); } assert(resource::count == 6); } assert(resource::count == 0); return 0; }