17namespace jsonv::detail
26template <
typename TIterator,
27 typename TConstIterator = TIterator
32 typedef TIterator iterator;
33 typedef TConstIterator const_iterator;
34 typedef std::reverse_iterator<iterator> reverse_iterator;
35 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
36 typedef typename std::iterator_traits<iterator>::value_type value_type;
37 typedef typename std::iterator_traits<iterator>::reference reference;
38 typedef typename std::iterator_traits<iterator>::pointer pointer;
41 basic_view(iterator begin_, iterator end_) :
47 iterator begin() {
return _begin; }
49 const_iterator begin()
const {
return _begin; }
51 iterator end() {
return _end; }
53 const_iterator end()
const {
return _end; }
56 const_iterator cbegin()
const {
return _begin; }
58 const_iterator cend()
const {
return _end; }
61 reverse_iterator rbegin() {
return reverse_iterator(end()); };
63 const_reverse_iterator rbegin()
const {
return const_reverse_iterator(end()); }
65 reverse_iterator rend() {
return reverse_iterator(begin()); }
67 const_reverse_iterator rend()
const {
return reverse_iterator(begin()); }
70 const_reverse_iterator crbegin()
const {
return const_reverse_iterator(end()); }
72 const_reverse_iterator crend()
const {
return reverse_iterator(begin()); }
85 explicit basic_owner(T&& x) :
94template <
typename TContainer,
96 typename TConstIterator = TIterator
98class basic_owning_view :
99 private basic_owner<TContainer>,
100 public basic_view<TIterator, TConstIterator>
102 using basic_owner<TContainer>::_value;
105 template <
typename FBegin,
typename FEnd>
106 basic_owning_view(TContainer&& container, FBegin begin, FEnd end) :
107 basic_owner<TContainer>(
std::move(container)),
108 basic_view<TIterator, TConstIterator>(begin(_value), end(_value))
Copyright (c) 2014-2020 by Travis Gockel.
#define JSONV_NODISCARD
Warn if the caller discards the result of this function.