1// (C) Copyright John Maddock 2001. 2// Use, modification and distribution are subject to the 3// Boost Software License, Version 1.0. (See accompanying file 4// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6// See http://www.boost.org/libs/config for the most recent version. 7 8// MACRO: BOOST_NO_STD_ITERATOR_TRAITS 9// TITLE: std::iterator_traits 10// DESCRIPTION: The compiler does not provide a standard 11// compliant implementation of std::iterator_traits. 12// Note that the compiler may still have a non-standard 13// implementation. 14 15#include <iterator> 16#include <stddef.h> 17 18namespace boost_no_std_iterator_traits{ 19 20struct UDT_iterator 21{ 22 typedef int value_type; 23 typedef ptrdiff_t difference_type; 24 typedef int* pointer; 25 typedef int& reference; 26 typedef std::input_iterator_tag iterator_category; 27}; 28 29struct UDT{}; 30 31 32int test() 33{ 34 std::iterator_traits<UDT_iterator>::value_type v = 0; 35 std::iterator_traits<UDT_iterator>::difference_type d = 0; 36 std::iterator_traits<UDT_iterator>::pointer p = &v; 37 std::iterator_traits<UDT_iterator>::reference r = v; 38 std::iterator_traits<UDT_iterator>::iterator_category cat; 39 40 std::iterator_traits<UDT*>::value_type v2; 41 std::iterator_traits<UDT*>::difference_type d2 = 0; 42 std::iterator_traits<UDT*>::pointer p2 = &v2; 43 std::iterator_traits<UDT*>::reference r2 = v2; 44 std::iterator_traits<UDT*>::iterator_category cat2; 45 46 std::iterator_traits<const UDT*>::value_type v3; 47 std::iterator_traits<const UDT*>::difference_type d3 = 0; 48 std::iterator_traits<const UDT*>::pointer p3 = &v3; 49 std::iterator_traits<const UDT*>::reference r3 = v3; 50 std::iterator_traits<const UDT*>::iterator_category cat3; 51 52 // 53 // suppress some warnings: 54 // 55 (void) &v; 56 (void) &d; 57 (void) &p; 58 (void) &r; 59 (void) &cat; 60 61 (void) &v2; 62 (void) &d2; 63 (void) &p2; 64 (void) &r2; 65 (void) &cat2; 66 67 (void) &v3; 68 (void) &d3; 69 (void) &p3; 70 (void) &r3; 71 (void) &cat3; 72 73 return 0; 74} 75 76} 77 78 79 80 81