MCPcopy Create free account
hub / github.com/cameron314/concurrentqueue / array

Class array

benchmarks/boost/array.hpp:60–199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58
59 template<class T, std::size_t N>
60 class array {
61 public:
62 T elems[N]; // fixed-size array of elements of type T
63
64 public:
65 // type definitions
66 typedef T value_type;
67 typedef T* iterator;
68 typedef const T* const_iterator;
69 typedef T& reference;
70 typedef const T& const_reference;
71 typedef std::size_t size_type;
72 typedef std::ptrdiff_t difference_type;
73
74 // iterator support
75 iterator begin() { return elems; }
76 const_iterator begin() const { return elems; }
77 const_iterator cbegin() const { return elems; }
78
79 iterator end() { return elems+N; }
80 const_iterator end() const { return elems+N; }
81 const_iterator cend() const { return elems+N; }
82
83 // reverse iterator support
84#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
85 typedef std::reverse_iterator<iterator> reverse_iterator;
86 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
87#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
88 // workaround for broken reverse_iterator in VC7
89 typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
90 reference, iterator, reference> > reverse_iterator;
91 typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
92 const_reference, iterator, reference> > const_reverse_iterator;
93#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
94 typedef std::reverse_iterator<iterator, std::random_access_iterator_tag,
95 value_type, reference, iterator, difference_type> reverse_iterator;
96 typedef std::reverse_iterator<const_iterator, std::random_access_iterator_tag,
97 value_type, const_reference, const_iterator, difference_type> const_reverse_iterator;
98#else
99 // workaround for broken reverse_iterator implementations
100 typedef std::reverse_iterator<iterator,T> reverse_iterator;
101 typedef std::reverse_iterator<const_iterator,T> const_reverse_iterator;
102#endif
103
104 reverse_iterator rbegin() { return reverse_iterator(end()); }
105 const_reverse_iterator rbegin() const {
106 return const_reverse_iterator(end());
107 }
108 const_reverse_iterator crbegin() const {
109 return const_reverse_iterator(end());
110 }
111
112 reverse_iterator rend() { return reverse_iterator(begin()); }
113 const_reverse_iterator rend() const {
114 return const_reverse_iterator(begin());
115 }
116 const_reverse_iterator crend() const {
117 return const_reverse_iterator(begin());

Callers

nothing calls this directly

Calls 3

beginClass · 0.50
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected