// Copyright David Abrahams 2004. 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) #include "node_iterator1.hpp" #include <string> #include <memory> #include <iostream> #include <algorithm> #include <functional> int main() { #if defined(BOOST_NO_CXX11_SMART_PTR) std::auto_ptr<node<int> > nodes(new node<int>(42)); #else std::unique_ptr<node<int> > nodes(new node<int>(42)); #endif nodes->append(new node<std::string>(" is greater than ")); nodes->append(new node<int>(13)); std::copy( node_iterator(nodes.get()), node_iterator() , std::ostream_iterator<node_base>(std::cout, " ") ); std::cout << std::endl; std::for_each( node_iterator(nodes.get()), node_iterator() , std::mem_fun_ref(&node_base::double_me) ); std::copy( node_iterator(nodes.get()), node_iterator() , std::ostream_iterator<node_base>(std::cout, "/") ); std::cout << std::endl; }