mirror of
				https://github.com/boostorg/iterator.git
				synced 2025-11-04 02:11:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			29 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. 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)
 | 
						|
 | 
						|
::
 | 
						|
 | 
						|
  template <class Dereferenceable>
 | 
						|
  struct indirect_reference
 | 
						|
  {
 | 
						|
      typedef /* see below */ type;
 | 
						|
  };
 | 
						|
 | 
						|
:Requires: For an object ``x`` of type ``Dereferenceable``, ``*x``
 | 
						|
  is well-formed.  If ``++x`` is ill-formed it shall neither be
 | 
						|
  ambiguous nor shall it violate access control, and
 | 
						|
  ``pointee<Dereferenceable>::type&`` shall be well-formed.
 | 
						|
  Otherwise ``iterator_traits<Dereferenceable>::reference`` shall
 | 
						|
  be well formed.  [Note: These requirements need not apply to
 | 
						|
  explicit or partial specializations of ``indirect_reference``]
 | 
						|
 | 
						|
``type`` is determined according to the following algorithm, where
 | 
						|
``x`` is an object of type ``Dereferenceable``::
 | 
						|
 | 
						|
  if ( ++x is ill-formed )
 | 
						|
      return ``pointee<Dereferenceable>::type&``
 | 
						|
  else
 | 
						|
      std::iterator_traits<Dereferenceable>::reference
 | 
						|
 | 
						|
   |