2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								<?xml version="1.0" encoding="utf-8" ?>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< html  xmlns = "http://www.w3.org/1999/xhtml"  xml:lang = "en"  lang = "en" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< head >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< meta  http-equiv = "Content-Type"  content = "text/html; charset=utf-8"  / >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< meta  name = "generator"  content = "Docutils 0.5: http://docutils.sourceforge.net/"  / >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< title > Transform Iterator< / title >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< meta  name = "author"  content = "David Abrahams, Jeremy Siek, Thomas Witt"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< meta  name = "organization"  content = "Boost Consulting, Indiana University Open Systems Lab, University of Hanover Institute for Transport Railway Operation and Construction"  / >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< meta  name = "date"  content = "2006-09-11"  / >  
						 
					
						
							
								
									
										
										
										
											2004-11-02 14:31:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< meta  name = "copyright"  content = "Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003."  / >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< link  rel = "stylesheet"  href = "../../../rst.css"  type = "text/css"  / >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / head >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< body >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< div  class = "document"  id = "transform-iterator" >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< h1  class = "title" > Transform Iterator< / h1 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  class = "docinfo"  frame = "void"  rules = "none" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "docinfo-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "docinfo-content"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tr > < th  class = "docinfo-name" > Author:< / th >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< td > David Abrahams, Jeremy Siek, Thomas Witt< / td > < / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tr > < th  class = "docinfo-name" > Contact:< / th >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< td > < a  class = "first reference external"  href = "mailto:dave@boost-consulting.com" > dave@ boost-consulting.com< / a > , < a  class = "reference external"  href = "mailto:jsiek@osl.iu.edu" > jsiek@ osl.iu.edu< / a > , < a  class = "last reference external"  href = "mailto:witt@ive.uni-hannover.de" > witt@ ive.uni-hannover.de< / a > < / td > < / tr >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< tr > < th  class = "docinfo-name" > Organization:< / th >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< td > < a  class = "first reference external"  href = "http://www.boost-consulting.com" > Boost Consulting< / a > , Indiana University < a  class = "reference external"  href = "http://www.osl.iu.edu" > Open Systems 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Lab< / a > , University of Hanover < a  class = "last reference external"  href = "http://www.ive.uni-hannover.de" > Institute for Transport
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								Railway Operation and Construction< / a > < / td > < / tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tr > < th  class = "docinfo-name" > Date:< / th >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< td > 2006-09-11< / td > < / tr >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< tr > < th  class = "docinfo-name" > Copyright:< / th >  
						 
					
						
							
								
									
										
										
										
											2004-11-02 14:31:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< td > Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003.< / td > < / tr >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2006-09-11 22:27:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<!--  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)  -->  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2006-09-11 22:27:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > abstract:< / th > < td  class = "field-body" > <!--  Copyright David Abrahams 2006. 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)  -->  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The transform iterator adapts an iterator by modifying the
							 
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > operator*< / span > < / tt >  to apply a function object to the result of 
						 
					
						
							
								
									
										
										
										
											2004-01-13 02:58:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								dereferencing the iterator and returning the result.< / td > 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< div  class = "contents topic"  id = "table-of-contents" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p  class = "topic-title first" > Table of Contents< / p >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ul  class = "simple" >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< li > < a  class = "reference internal"  href = "#transform-iterator-synopsis"  id = "id2" > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  synopsis< / a > < / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > < a  class = "reference internal"  href = "#transform-iterator-requirements"  id = "id3" > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  requirements< / a > < / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > < a  class = "reference internal"  href = "#transform-iterator-models"  id = "id4" > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  models< / a > < / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > < a  class = "reference internal"  href = "#transform-iterator-operations"  id = "id5" > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  operations< / a > < / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > < a  class = "reference internal"  href = "#example"  id = "id6" > Example< / a > < / li >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / ul >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< div  class = "section"  id = "transform-iterator-synopsis" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h1 > < a  class = "toc-backref"  href = "#id2" > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  synopsis< / a > < / h1 >  
						 
					
						
							
								
									
										
										
										
											2006-09-11 22:27:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<!--  Copyright David Abrahams 2006. 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)  -->  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:30:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<!--  Version 1.3 of this document was accepted for TR1  -->  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< pre  class = "literal-block" >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:30:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								template < class UnaryFunction,
							 
						 
					
						
							
								
									
										
										
										
											2006-09-11 22:27:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          class Iterator,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          class Reference = use_default,
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          class Value = use_default> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class transform_iterator
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public:
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 20:26:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  typedef /* see below */ value_type;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typedef /* see below */ reference;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typedef /* see below */ pointer;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typedef iterator_traits< Iterator> ::difference_type difference_type;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typedef /* see below */ iterator_category;
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 20:18:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  transform_iterator();
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:30:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  transform_iterator(Iterator const&  x, UnaryFunction f);
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:30:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  template< class F2, class I2, class R2, class V2> 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  transform_iterator(
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:30:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        transform_iterator< F2, I2, R2, V2>  const&  t
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 18:38:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      , typename enable_if_convertible< I2, Iterator> ::type* = 0      // exposition only
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      , typename enable_if_convertible< F2, UnaryFunction> ::type* = 0 // exposition only
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  );
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:30:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  UnaryFunction functor() const;
							 
						 
					
						
							
								
									
										
										
										
											2004-01-19 18:52:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Iterator const&  base() const;
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 15:53:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  reference operator*() const;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  transform_iterator&  operator++();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  transform_iterator&  operator--();
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								private:
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 18:38:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Iterator m_iterator; // exposition only
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  UnaryFunction m_f;   // exposition only
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								};
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > If < tt  class = "docutils literal" > < span  class = "pre" > Reference< / span > < / tt >  is < tt  class = "docutils literal" > < span  class = "pre" > use_default< / span > < / tt >  then the < tt  class = "docutils literal" > < span  class = "pre" > reference< / span > < / tt >  member of 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  is 
						 
					
						
							
								
									
										
										
										
											2012-04-24 21:28:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > result_of< const UnaryFunction(iterator_traits< Iterator> ::reference)> ::type< / span > < / tt > . 
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Otherwise, < tt  class = "docutils literal" > < span  class = "pre" > reference< / span > < / tt >  is < tt  class = "docutils literal" > < span  class = "pre" > Reference< / span > < / tt > .< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > If < tt  class = "docutils literal" > < span  class = "pre" > Value< / span > < / tt >  is < tt  class = "docutils literal" > < span  class = "pre" > use_default< / span > < / tt >  then the < tt  class = "docutils literal" > < span  class = "pre" > value_type< / span > < / tt >  member is 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > remove_cv< remove_reference< reference> < / span >  < span  class = "pre" > > ::type< / span > < / tt > .  Otherwise, 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > value_type< / span > < / tt >  is < tt  class = "docutils literal" > < span  class = "pre" > Value< / span > < / tt > .< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > If < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt >  models Readable Lvalue Iterator and if < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								models Random Access Traversal Iterator, then < tt  class = "docutils literal" > < span  class = "pre" > iterator_category< / span > < / tt >  is
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								convertible to < tt  class = "docutils literal" > < span  class = "pre" > random_access_iterator_tag< / span > < / tt > . Otherwise, if
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt >  models Bidirectional Traversal Iterator, then 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > iterator_category< / span > < / tt >  is convertible to 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > bidirectional_iterator_tag< / span > < / tt > .  Otherwise < tt  class = "docutils literal" > < span  class = "pre" > iterator_category< / span > < / tt >  is 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								convertible to < tt  class = "docutils literal" > < span  class = "pre" > forward_iterator_tag< / span > < / tt > . If < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt >  does not
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								model Readable Lvalue Iterator then < tt  class = "docutils literal" > < span  class = "pre" > iterator_category< / span > < / tt >  is
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								convertible to < tt  class = "docutils literal" > < span  class = "pre" > input_iterator_tag< / span > < / tt > .< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 15:53:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< div  class = "section"  id = "transform-iterator-requirements" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h1 > < a  class = "toc-backref"  href = "#id3" > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  requirements< / a > < / h1 >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > The type < tt  class = "docutils literal" > < span  class = "pre" > UnaryFunction< / span > < / tt >  must be Assignable, Copy Constructible, and 
						 
					
						
							
								
									
										
										
										
											2012-04-24 21:28:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								the expression < tt  class = "docutils literal" > < span  class = "pre" > f(*i)< / span > < / tt >  must be valid where < tt  class = "docutils literal" > < span  class = "pre" > f< / span > < / tt >  is a const object of
							 
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								type < tt  class = "docutils literal" > < span  class = "pre" > UnaryFunction< / span > < / tt > , < tt  class = "docutils literal" > < span  class = "pre" > i< / span > < / tt >  is an object of type < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt > , and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								where the type of < tt  class = "docutils literal" > < span  class = "pre" > f(*i)< / span > < / tt >  must be
							 
						 
					
						
							
								
									
										
										
										
											2012-04-24 21:28:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > result_of< const UnaryFunction(iterator_traits< Iterator> ::reference)> ::type< / span > < / tt > .< / p >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > The argument < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt >  shall model Readable Iterator.< / p >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< div  class = "section"  id = "transform-iterator-models" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h1 > < a  class = "toc-backref"  href = "#id4" > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  models< / a > < / h1 >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > The resulting < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  models the most refined of the 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								following that is also modeled by < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt > .< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< blockquote >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< ul  class = "simple" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< li > Writable Lvalue Iterator if < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator::reference< / span > < / tt >  is a non-const reference.< / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Readable Lvalue Iterator if < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator::reference< / span > < / tt >  is a const reference.< / li >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< li > Readable Iterator otherwise.< / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / ul >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / blockquote >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > The < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  models the most refined standard traversal 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								concept that is modeled by the < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt >  argument.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > If < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  is a model of Readable Lvalue Iterator then 
						 
					
						
							
								
									
										
										
										
											2004-01-12 20:18:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it models the following original iterator concepts depending on what
							 
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								the < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt >  argument models.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  border = "1"  class = "docutils" >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 20:18:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< colgroup >  
						 
					
						
							
								
									
										
										
										
											2004-01-27 04:13:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< col  width = "47%"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  width = "53%"  / >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 20:18:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / colgroup >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< thead  valign = "bottom" >  
						 
					
						
							
								
									
										
										
										
											2006-09-11 22:27:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr > < th  class = "head" > If < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt >  models< / th >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< th  class = "head" > then < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  models< / th >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 20:18:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / thead >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tr > < td > Single Pass Iterator< / td >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< td > Input Iterator< / td >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tr > < td > Forward Traversal Iterator< / td >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< td > Forward Iterator< / td >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tr > < td > Bidirectional Traversal Iterator< / td >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< td > Bidirectional Iterator< / td >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tr > < td > Random Access Traversal Iterator< / td >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< td > Random Access Iterator< / td >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > If < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  models Writable Lvalue Iterator then it is a 
						 
					
						
							
								
									
										
										
										
											2004-01-12 20:18:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								mutable iterator (as defined in the old iterator requirements).< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< F1,< / span >  < span  class = "pre" > X,< / span >  < span  class = "pre" > R1,< / span >  < span  class = "pre" > V1> < / span > < / tt >  is interoperable with 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< F2,< / span >  < span  class = "pre" > Y,< / span >  < span  class = "pre" > R2,< / span >  < span  class = "pre" > V2> < / span > < / tt >  if and only if < tt  class = "docutils literal" > < span  class = "pre" > X< / span > < / tt >  is 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								interoperable with < tt  class = "docutils literal" > < span  class = "pre" > Y< / span > < / tt > .< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< div  class = "section"  id = "transform-iterator-operations" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h1 > < a  class = "toc-backref"  href = "#id5" > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  operations< / a > < / h1 >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 15:53:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > In addition to the operations required by the concepts modeled by 
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt > , < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  provides the following 
						 
					
						
							
								
									
										
										
										
											2004-01-12 15:53:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								operations.< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator();< / span > < / tt > < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > An instance of < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  with < tt  class = "docutils literal" > < span  class = "pre" > m_f< / span > < / tt >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								and < tt  class = "docutils literal" > < span  class = "pre" > m_iterator< / span > < / tt >  default constructed.< / td > 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator(Iterator< / span >  < span  class = "pre" > const& < / span >  < span  class = "pre" > x,< / span >  < span  class = "pre" > UnaryFunction< / span >  < span  class = "pre" > f);< / span > < / tt > < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > An instance of < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  with < tt  class = "docutils literal" > < span  class = "pre" > m_f< / span > < / tt >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								initialized to < tt  class = "docutils literal" > < span  class = "pre" > f< / span > < / tt >  and < tt  class = "docutils literal" > < span  class = "pre" > m_iterator< / span > < / tt >  initialized to < tt  class = "docutils literal" > < span  class = "pre" > x< / span > < / tt > .< / td > 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< pre  class = "literal-block" >  
						 
					
						
							
								
									
										
										
										
											2004-07-14 12:33:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								template< class F2, class I2, class R2, class V2> 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								transform_iterator(
							 
						 
					
						
							
								
									
										
										
										
											2004-07-14 12:33:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      transform_iterator< F2, I2, R2, V2>  const&  t
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    , typename enable_if_convertible< I2, Iterator> ::type* = 0      // exposition only
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    , typename enable_if_convertible< F2, UnaryFunction> ::type* = 0 // exposition only
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > An instance of < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< / span > < / tt >  with < tt  class = "docutils literal" > < span  class = "pre" > m_f< / span > < / tt >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								initialized to < tt  class = "docutils literal" > < span  class = "pre" > t.functor()< / span > < / tt >  and < tt  class = "docutils literal" > < span  class = "pre" > m_iterator< / span > < / tt >  initialized to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tt  class = "docutils literal" > < span  class = "pre" > t.base()< / span > < / tt > .< / td >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Requires:< / th > < td  class = "field-body" > < tt  class = "docutils literal" > < span  class = "pre" > OtherIterator< / span > < / tt >  is implicitly convertible to < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span > < / tt > .< / td >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > < tt  class = "docutils literal" > < span  class = "pre" > UnaryFunction< / span >  < span  class = "pre" > functor()< / span >  < span  class = "pre" > const;< / span > < / tt > < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > < tt  class = "docutils literal" > < span  class = "pre" > m_f< / span > < / tt > < / td >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > < tt  class = "docutils literal" > < span  class = "pre" > Iterator< / span >  < span  class = "pre" > const& < / span >  < span  class = "pre" > base()< / span >  < span  class = "pre" > const;< / span > < / tt > < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > < tt  class = "docutils literal" > < span  class = "pre" > m_iterator< / span > < / tt > < / td >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > < tt  class = "docutils literal" > < span  class = "pre" > reference< / span >  < span  class = "pre" > operator*()< / span >  < span  class = "pre" > const;< / span > < / tt > < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > < tt  class = "docutils literal" > < span  class = "pre" > m_f(*m_iterator)< / span > < / tt > < / td >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator& < / span >  < span  class = "pre" > operator++();< / span > < / tt > < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Effects:< / th > < td  class = "field-body" > < tt  class = "docutils literal" > < span  class = "pre" > ++m_iterator< / span > < / tt > < / td >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > < tt  class = "docutils literal" > < span  class = "pre" > *this< / span > < / tt > < / td >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator& < / span >  < span  class = "pre" > operator--();< / span > < / tt > < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 15:53:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Effects:< / th > < td  class = "field-body" > < tt  class = "docutils literal" > < span  class = "pre" > --m_iterator< / span > < / tt > < / td >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 15:53:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > < tt  class = "docutils literal" > < span  class = "pre" > *this< / span > < / tt > < / td >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 15:53:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2006-09-11 22:27:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<!--  Copyright David Abrahams 2006. 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)  -->  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< pre  class = "literal-block" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < class UnaryFunction, class Iterator> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								transform_iterator< UnaryFunction, Iterator> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								make_transform_iterator(Iterator it, UnaryFunction fun);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > An instance of < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< UnaryFunction,< / span >  < span  class = "pre" > Iterator> < / span > < / tt >  with < tt  class = "docutils literal" > < span  class = "pre" > m_f< / span > < / tt >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								initialized to < tt  class = "docutils literal" > < span  class = "pre" > f< / span > < / tt >  and < tt  class = "docutils literal" > < span  class = "pre" > m_iterator< / span > < / tt >  initialized to < tt  class = "docutils literal" > < span  class = "pre" > x< / span > < / tt > .< / td > 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< pre  class = "literal-block" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < class UnaryFunction, class Iterator> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								transform_iterator< UnaryFunction, Iterator> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								make_transform_iterator(Iterator it);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< table  class = "docutils field-list"  frame = "void"  rules = "none" >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< col  class = "field-name"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< col  class = "field-body"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< tbody  valign = "top" >  
						 
					
						
							
								
									
										
										
										
											2005-05-20 15:32:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< tr  class = "field" > < th  class = "field-name" > Returns:< / th > < td  class = "field-body" > An instance of < tt  class = "docutils literal" > < span  class = "pre" > transform_iterator< UnaryFunction,< / span >  < span  class = "pre" > Iterator> < / span > < / tt >  with < tt  class = "docutils literal" > < span  class = "pre" > m_f< / span > < / tt >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								default constructed and < tt  class = "docutils literal" > < span  class = "pre" > m_iterator< / span > < / tt >  initialized to < tt  class = "docutils literal" > < span  class = "pre" > x< / span > < / tt > .< / td > 
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / tr >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
									
										
										
										
											2006-09-11 22:27:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<!--  Copyright David Abrahams 2006. 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)  -->  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< div  class = "section"  id = "example" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h1 > < a  class = "toc-backref"  href = "#id6" > Example< / a > < / h1 >  
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > This is a simple example of using the transform_iterators class to 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								generate iterators that multiply (or add to) the value returned by
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								dereferencing the iterator. It would be cooler to use lambda library
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								in this example.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< pre  class = "literal-block" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int x[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int N = sizeof(x)/sizeof(int);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef boost::binder1st<  std::multiplies< int>  >  Function;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef boost::transform_iterator< Function, int*>  doubling_iterator;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								doubling_iterator i(x, boost::bind1st(std::multiplies< int> (), 2)),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  i_end(x + N, boost::bind1st(std::multiplies< int> (), 2));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								std::cout < <  " multiplying the array by 2:"  < <  std::endl;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								while (i != i_end)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  std::cout < <  *i++ < <  "  " ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								std::cout < <  std::endl;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								std::cout < <  " adding 4 to each element in the array:"  < <  std::endl;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								std::copy(boost::make_transform_iterator(x, boost::bind1st(std::plus< int> (), 4)),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          boost::make_transform_iterator(x + N, boost::bind1st(std::plus< int> (), 4)),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          std::ostream_iterator< int> (std::cout, "  " ));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								std::cout < <  std::endl;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > The output is:< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< pre  class = "literal-block" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								multiplying the array by 2:
							 
						 
					
						
							
								
									
										
										
										
											2006-09-11 22:27:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								2 4 6 8 10 12 14 16
							 
						 
					
						
							
								
									
										
										
										
											2004-01-12 01:51:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								adding 4 to each element in the array:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								5 6 7 8 9 10 11 12
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > The source code for this example can be found < a  class = "reference external"  href = "../example/transform_iterator_example.cpp" > here< / a > .< / p >  
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
									
										
										
										
											2007-07-06 19:47:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< div  class = "footer" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< hr  class = "footer"  / >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< a  class = "reference external"  href = "transform_iterator.rst" > View document source< / a > . 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Generated by < a  class = "reference external"  href = "http://docutils.sourceforge.net/" > Docutils< / a >  from < a  class = "reference external"  href = "http://docutils.sourceforge.net/rst.html" > reStructuredText< / a >  source.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-08-05 19:48:41 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / body >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / html >