2
3
4
5
6
7
8
9
10
11
12
14 #ifndef IPADDRESS_FIXED_VECTOR_HPP
15 #define IPADDRESS_FIXED_VECTOR_HPP
23 template <
typename It>
28 template <
typename It,
typename Tag>
30 typename std::iterator_traits<It>::difference_type count = 0;
31 for (
auto it = first; it != last; ++it) {
39 return get_distance(first, last,
typename std::iterator_traits<It>::iterator_category{});
45
46
47
48
49
50
51
55 using iterator_category = std::random_access_iterator_tag;
62
63
67
68
69
70
75
76
77
78
84
85
86
87
93
94
95
96
102
103
104
105
106
112
113
114
115
122
123
124
125
133
134
135
136
143
144
145
146
154
155
156
157
158
165
166
167
168
169
176
177
178
179
180
182 return fixed_vector_iterator(_ptr + n);
186
187
188
189
190
191
197
198
199
200
201
203 return fixed_vector_iterator(_ptr - n);
207
208
209
210
211
213 return _ptr - it._ptr;
217
218
219
220
221
223 return _ptr == it._ptr;
227
228
229
230
231
233 return !(*
this == it);
237 #ifdef IPADDRESS_HAS_SPACESHIP_OPERATOR
240
241
242
243
244
252
253
254
255
256
258 return _ptr < it._ptr;
262
263
264
265
266
268 return !(it < *
this);
272
273
274
275
276
282
283
284
285
286
288 return !(*
this < it);
298
299
300
301
302
303
304
305
306
310 using value_type = T;
313 using pointer = value_type*;
314 using const_pointer =
const value_type*;
315 using reference = value_type&;
316 using const_reference =
const value_type&;
319 using reverse_iterator = std::reverse_iterator<iterator>;
320 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
323
324
328
329
330
331
332
334 assert(n <= max_size());
339
340
341
342
343
344
350
351
352
353
354
355
356
363
364
365
366
367
372
373
374
375
376
377
379 assert(n <= max_size());
381 for (size_type i = 0; i < n; ++i) {
387
388
389
390
391
392
393
397 for (
auto it = first; it != last; ++it) {
398 assert(_size < max_size());
399 _data[_size++] = *it;
404
405
406
407
408
410 assign(init_list.begin(), init_list.end());
414
415
416
417
418
419
426
427
428
429
430
431
438
439
440
441
442
443
449
450
451
452
453
454
460
461
462
463
470
471
472
473
480
481
482
483
486 return _data[_size - 1];
490
491
492
493
496 return _data[_size - 1];
500
501
502
503
509
510
511
512
518
519
520
521
523 return iterator(_data);
527
528
529
530
532 return const_iterator(_data);
536
537
538
539
545
546
547
548
550 return reverse_iterator(end());
554
555
556
557
559 return const_reverse_iterator(end());
563
564
565
566
568 return const_reverse_iterator(
cend());
572
573
574
575
577 return iterator(_data + _size);
581
582
583
584
586 return const_iterator(_data + _size);
590
591
592
593
599
600
601
602
604 return reverse_iterator(begin());
608
609
610
611
613 return const_reverse_iterator(begin());
617
618
619
620
622 return const_reverse_iterator(
cbegin());
626
627
628
629
635
636
637
638
644
645
646
647
653
654
655
656
662
663
664
665
666
667
668
669
671 resize(n, value_type{});
675
676
677
678
679
680
681
682
683
688 assert(n < max_size());
689 for (size_type i = _size; i < n; ++i) {
697
698
699
700
701
702
703
704
706 assert(n < max_size());
710
711
712
713
714
715
720
721
722
723
724
725
726
728 return insert_n(pos, 1, value);
732
733
734
735
736
737
738
740 return insert_n(pos, 1, std::move(value));
744
745
746
747
748
749
750
751
753 return insert_n(pos, n, value);
757
758
759
760
761
762
763
764
765
766 template <
typename It>
768 return insert_iterators(pos, first, last);
772
773
774
775
776
777
778
780 return insert_iterators(pos, init_list.begin(), init_list.end());
784
785
786
787
788
789
790
791
792 template <
typename... Args>
794 return insert_n(pos, 1, value_type{std::forward<Args>(args)...});
798
799
800
801
802
803
804
805 template <
typename... Args>
807 assert(size() < max_size());
808 _data[_size++] = value_type{std::forward<Args>(args)...};
809 return _data[_size - 1];
813
814
815
816
817
818
819 template <
typename... Args>
821 if (size() < max_size()) {
822 _data[_size] = value_type{std::forward<Args>(args)...};
823 return &_data[_size++];
830
831
832
833
834
835
836
837 template <
typename... Args>
839 _data[_size++] = value_type{std::forward<Args>(args)...};
840 return _data[_size - 1];
844
845
846
847
848
849
851 assert(size() < max_size());
852 _data[_size++] = value;
853 return _data[_size - 1];
857
858
859
860
861
862
864 assert(size() < max_size());
865 _data[_size++] = std::move(value);
866 return _data[_size - 1];
870
871
872
873
874
876 if (size() < max_size()) {
877 _data[_size] = value;
878 return &_data[_size++];
885
886
887
888
889
891 if (size() < max_size()) {
892 _data[_size] = std::move(value);
893 return &_data[_size++];
900
901
902
903
904
905
907 _data[_size++] = value;
908 return _data[_size - 1];
912
913
914
915
916
917
919 _data[_size++] = std::move(value);
920 return _data[_size - 1];
924
925
926
927
934
935
936
937
943
944
945
946
947
948
950 return erase(pos, pos + 1);
954
955
956
957
958
959
961 assert(first >= begin() && last <= end() && first <= last);
962 const auto count = internal::distance(first, last);
963 const auto index = internal::distance(
cbegin(), first);
964 for (size_type i = index; i < _size - count; ++i) {
965 _data[i] = std::move(_data[i + count]);
968 return begin() + index;
972
973
974
975
977 const auto tmp_size = _size;
979 other._size = tmp_size;
980 auto size = _size < other._size ? other._size : _size;
981 for (size_type i = 0; i < size; ++i) {
982 const auto tmp_value = _data[i];
983 _data[i] = other._data[i];
984 other._data[i] = tmp_value;
990 assert(pos >= begin() && pos <= end());
992 assert(_size + n <= max_size());
994 for (size_type i = 0; i < n; ++i) {
995 _data[_size++] = value;
999 const auto index = internal::distance(
cbegin(), pos);
1000 assert(_size + n <= max_size());
1001 for (
auto i = difference_type(_size) - 1; i >= index; --i) {
1002 _data[i + difference_type(n)] = _data[i];
1004 for (
auto i = 0; i < difference_type(n); ++i) {
1005 _data[index + i] = value;
1008 return begin() + index;
1012 template <
typename It>
1014 assert(pos >= begin() && pos <= end() && first <= last);
1016 auto result = end();
1017 for (
auto it = first; it != last; ++it) {
1018 assert(_size < max_size());
1019 _data[_size++] = *it;
1023 const auto count = internal::distance(first, last);
1024 const auto index = internal::distance(
cbegin(), pos);
1025 assert(_size + count <= max_size());
1026 for (
auto i = difference_type(_size) - 1; i >= index; --i) {
1027 _data[i + count] = _data[i];
1029 for (
auto i = 0; i < count; ++i) {
1030 _data[index + i] = *first++;
1033 return begin() + index;
1037 value_type _data[N]{};
1044 using value_type = T;
1047 using pointer = value_type*;
1048 using const_pointer =
const value_type*;
1049 using reference = value_type&;
1050 using const_reference =
const value_type&;
1053 using reverse_iterator = std::reverse_iterator<iterator>;
1054 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
1059 assert(n == 0 &&
"fixed_vector<T, 0> cannot be constructed with a size.");
1063 assert(n == 0 &&
"fixed_vector<T, 0> cannot be constructed with a size and value.");
1068 assert(first == last &&
"fixed_vector<T, 0> cannot be constructed with a iterators.");
1072 assert(init_list.size() == 0 &&
"fixed_vector<T, 0> cannot be constructed with an initializer list.");
1076 assert(n == 0 &&
"fixed_vector<T, 0> cannot assign a size.");
1081 assert(first == last &&
"fixed_vector<T, 0> cannot assign from iterators.");
1085 assert(init_list.size() == 0 &&
"fixed_vector<T, 0> cannot assign from an initializer list.");
1089 assert(!
"fixed_vector<T, 0> cannot access elements.");
1094 assert(!
"fixed_vector<T, 0> cannot access elements.");
1099 assert(!
"fixed_vector<T, 0> cannot access elements.");
1104 assert(!
"fixed_vector<T, 0> cannot access elements.");
1109 assert(!
"fixed_vector<T, 0> cannot access elements.");
1114 assert(!
"fixed_vector<T, 0> cannot access elements.");
1119 assert(!
"fixed_vector<T, 0> cannot access elements.");
1124 assert(!
"fixed_vector<T, 0> cannot access elements.");
1137 return iterator(
nullptr);
1141 return const_iterator(
nullptr);
1145 return const_iterator(
nullptr);
1149 return reverse_iterator(end());
1153 return const_reverse_iterator(end());
1157 return const_reverse_iterator(cend());
1161 return iterator(
nullptr);
1165 return const_iterator(
nullptr);
1169 return const_iterator(
nullptr);
1173 return reverse_iterator(begin());
1177 return const_reverse_iterator(begin());
1181 return const_reverse_iterator(cbegin());
1201 assert(n == 0 &&
"fixed_vector<T, 0> cannot resize.");
1205 assert(n == 0 &&
"fixed_vector<T, 0> cannot resize.");
1209 assert(n == 0 &&
"fixed_vector<T, 0> cannot reserve.");
1216 assert(!
"fixed_vector<T, 0> cannot insert elements.");
1217 return iterator(
nullptr);
1221 assert(!
"fixed_vector<T, 0> cannot insert elements.");
1222 return iterator(
nullptr);
1226 assert(n == 0 &&
"fixed_vector<T, 0> cannot insert elements.");
1227 return iterator(
nullptr);
1230 template <
typename It>
1232 assert(first == last &&
"fixed_vector<T, 0> cannot insert elements.");
1233 return iterator(
nullptr);
1237 assert(init_list.size() == 0 &&
"fixed_vector<T, 0> cannot insert elements.");
1238 return iterator(
nullptr);
1241 template <
typename... Args>
1243 assert(!
"fixed_vector<T, 0> cannot emplace elements.");
1244 return iterator(
nullptr);
1247 template <
typename... Args>
1249 assert(!
"fixed_vector<T, 0> cannot emplace elements.");
1253 template <
typename... Args>
1258 template <
typename... Args>
1264 assert(!
"fixed_vector<T, 0> cannot push back elements.");
1269 assert(!
"fixed_vector<T, 0> cannot push back elements.");
1290 assert(!
"fixed_vector<T, 0> cannot pop back elements.");
1297 assert(!
"fixed_vector<T, 0> cannot erase elements.");
1298 return iterator(
nullptr);
1302 assert(first == last &&
"fixed_vector<T, 0> cannot erase elements.");
1303 return iterator(
nullptr);
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1325 if (lhs.size() != rhs.size()) {
1328 for (size_t i = 0; i < lhs.size(); ++i) {
1329 if (lhs[i] != rhs[i]) {
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1351 return !(lhs == rhs);
1354 #ifdef IPADDRESS_HAS_SPACESHIP_OPERATOR
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368 IPADDRESS_EXPORT
template <
typename T, size_t N1, size_t N2>
1369 IPADDRESS_NODISCARD IPADDRESS_CONSTEXPR IPADDRESS_FORCE_INLINE std::strong_ordering operator<=>(
const fixed_vector<T, N1>& lhs,
const fixed_vector<T, N2>& rhs) IPADDRESS_NOEXCEPT {
1370 auto size = lhs.size() < rhs.size() ? lhs.size() : rhs.size();
1371 for (size_t i = 0; i < size; ++i) {
1372 if (
auto cmp = lhs[i] <=> rhs[i]; cmp != std::strong_ordering::equivalent) {
1376 return lhs.size() <=> rhs.size();
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1395 auto size = lhs.size() < rhs.size() ? lhs.size() : rhs.size();
1396 for (size_t i = 0; i < size; ++i) {
1397 if (lhs[i] < rhs[i]) {
1399 }
else if (lhs[i] > rhs[i]) {
1403 return lhs.size() < rhs.size();
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1437 return !(rhs < lhs);
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1454 return !(lhs < rhs);
A fixed-size vector iterator class template.
Definition fixed-vector.hpp:53
constexpr inline bool operator<(const fixed_vector_iterator &it) const noexcept
Less than operator.
Definition fixed-vector.hpp:257
constexpr inline bool operator>(const fixed_vector_iterator &it) const noexcept
Greater than operator.
Definition fixed-vector.hpp:277
constexpr inline bool operator<=(const fixed_vector_iterator &it) const noexcept
Less than or equal to operator.
Definition fixed-vector.hpp:267
constexpr inline fixed_vector_iterator operator++(int) noexcept
Post-increment operator.
Definition fixed-vector.hpp:126
constexpr inline bool operator!=(const fixed_vector_iterator &it) const noexcept
Inequality operator.
Definition fixed-vector.hpp:232
constexpr inline fixed_vector_iterator & operator-=(difference_type n) noexcept
Subtraction assignment operator.
Definition fixed-vector.hpp:170
constexpr inline fixed_vector_iterator & operator--() noexcept
Pre-decrement operator.
Definition fixed-vector.hpp:137
constexpr inline fixed_vector_iterator operator--(int) noexcept
Post-decrement operator.
Definition fixed-vector.hpp:147
constexpr inline fixed_vector_iterator() noexcept=default
Default constructor.
constexpr inline fixed_vector_iterator & operator++() noexcept
Pre-increment operator.
Definition fixed-vector.hpp:116
constexpr inline bool operator>=(const fixed_vector_iterator &it) const noexcept
Greater than or equal to operator.
Definition fixed-vector.hpp:287
constexpr inline reference operator[](size_t n) const noexcept
Access operator.
Definition fixed-vector.hpp:107
friend constexpr inline fixed_vector_iterator operator+(difference_type n, const fixed_vector_iterator &it) noexcept
Addition operator.
Definition fixed-vector.hpp:192
constexpr inline fixed_vector_iterator(pointer ptr) noexcept
Constructs a fixed_vector_iterator from a pointer.
Definition fixed-vector.hpp:71
constexpr inline fixed_vector_iterator operator+(difference_type n) const noexcept
Addition operator.
Definition fixed-vector.hpp:181
constexpr inline bool operator==(const fixed_vector_iterator &it) const noexcept
Equality operator.
Definition fixed-vector.hpp:222
constexpr inline pointer operator->() const noexcept
Pointer access operator.
Definition fixed-vector.hpp:97
constexpr inline fixed_vector_iterator & operator+=(difference_type n) noexcept
Addition assignment operator.
Definition fixed-vector.hpp:159
constexpr inline fixed_vector_iterator operator-(difference_type n) const noexcept
Subtraction operator.
Definition fixed-vector.hpp:202
constexpr inline reference operator*() const noexcept
Dereference operator.
Definition fixed-vector.hpp:88
constexpr inline fixed_vector_iterator(const fixed_vector_iterator< U > &it) noexcept
Constructs a const-compatible fixed_vector_iterator from a non-const fixed_vector_iterator.
Definition fixed-vector.hpp:80
constexpr inline difference_type operator-(const fixed_vector_iterator &it) const noexcept
Subtraction operator.
Definition fixed-vector.hpp:212
A fixed-size vector class template.
Definition fixed-vector.hpp:308
constexpr inline reference push_back(value_type &&value) noexcept
Adds a new element at the end of the vector.
Definition fixed-vector.hpp:863
constexpr inline iterator end() noexcept
Returns an iterator to the element following the last element.
Definition fixed-vector.hpp:576
constexpr inline iterator insert(const_iterator pos, It first, It last) noexcept
Inserts range of elements at the specified position.
Definition fixed-vector.hpp:767
static constexpr inline size_type max_size() noexcept
Returns the maximum number of elements that the container can hold.
Definition fixed-vector.hpp:648
constexpr inline fixed_vector(It first, It last) noexcept
Constructs a fixed_vector from a range of elements.
Definition fixed-vector.hpp:358
constexpr inline iterator insert(const_iterator pos, size_type n, const_reference value) noexcept
Inserts copies of the given value at the specified position.
Definition fixed-vector.hpp:752
constexpr inline const_reverse_iterator crbegin() const noexcept
Returns a const reverse iterator to the first element.
Definition fixed-vector.hpp:567
constexpr inline const_reference at(size_type n) const noexcept
Accesses an element by index.
Definition fixed-vector.hpp:432
constexpr inline reference unchecked_push_back(value_type &&value) noexcept
Adds a new element at the end of the vector without checking the size.
Definition fixed-vector.hpp:918
constexpr inline reference operator[](size_type n) noexcept
Accesses an element by index.
Definition fixed-vector.hpp:444
constexpr inline pointer data() noexcept
Returns a pointer to the underlying array.
Definition fixed-vector.hpp:504
constexpr inline void clear() noexcept
Removes all elements from the vector.
Definition fixed-vector.hpp:938
constexpr inline reference front() noexcept
Accesses the first element in the vector.
Definition fixed-vector.hpp:464
constexpr inline void assign(std::initializer_list< value_type > init_list) noexcept
Replaces the contents with the elements in the specified initializer list.
Definition fixed-vector.hpp:409
constexpr inline const_iterator begin() const noexcept
Return const iterator to the first element.
Definition fixed-vector.hpp:531
constexpr inline reverse_iterator rbegin() noexcept
Returns an reverse iterator to the first element.
Definition fixed-vector.hpp:549
constexpr inline bool empty() const noexcept
Determines whether the container is empty.
Definition fixed-vector.hpp:630
constexpr inline const_reverse_iterator crend() const noexcept
Returns a const reverse iterator to the element following the last element.
Definition fixed-vector.hpp:621
constexpr inline iterator erase(const_iterator pos) noexcept
Removes the element at the specified position.
Definition fixed-vector.hpp:949
constexpr inline void swap(fixed_vector &other) noexcept
Swaps the contents of this vector with another vector.
Definition fixed-vector.hpp:976
constexpr inline const_reference front() const noexcept
Accesses the first element in the vector.
Definition fixed-vector.hpp:474
constexpr inline const_pointer data() const noexcept
Returns a const pointer to the underlying array (const version).
Definition fixed-vector.hpp:513
constexpr inline reference emplace_back(Args &&... args) noexcept
Inserts a new element at the end of the vector, constructed in-place with the given arguments.
Definition fixed-vector.hpp:806
constexpr inline iterator emplace(const_iterator pos, Args &&... args) noexcept
Inserts a new element at the specified position, constructed in-place with the given arguments.
Definition fixed-vector.hpp:793
constexpr inline size_type size() const noexcept
Returns the number of elements in the container.
Definition fixed-vector.hpp:639
constexpr inline pointer try_push_back(value_type &&value) noexcept
Adds a new element at the end of the vector.
Definition fixed-vector.hpp:890
constexpr inline void pop_back() noexcept
Removes the last element from the vector.
Definition fixed-vector.hpp:928
constexpr inline reference at(size_type n) noexcept
Accesses an element by index.
Definition fixed-vector.hpp:420
constexpr inline reference back() noexcept
Accesses the last element in the vector.
Definition fixed-vector.hpp:484
constexpr inline fixed_vector(size_type n) noexcept
Constructs a fixed_vector with the specified number of default-initialized elements.
Definition fixed-vector.hpp:333
constexpr inline const_reverse_iterator rend() const noexcept
Returns a const reverse iterator to the element following the last element.
Definition fixed-vector.hpp:612
constexpr inline const_iterator cend() const noexcept
Returns a const iterator to the element following the last element.
Definition fixed-vector.hpp:594
constexpr inline pointer try_emplace_back(Args &&... args) noexcept
Inserts a new element at the end of the vector, constructed in-place with the given arguments.
Definition fixed-vector.hpp:820
constexpr inline reference unchecked_emplace_back(Args &&... args) noexcept
Inserts a new element at the end of the vector, constructed in-place with the given arguments.
Definition fixed-vector.hpp:838
constexpr inline iterator insert(const_iterator pos, const_reference value) noexcept
Inserts copies of the given value at the specified position.
Definition fixed-vector.hpp:727
static constexpr inline void shrink_to_fit() noexcept
Shrinks the container to fit its current size.
Definition fixed-vector.hpp:716
constexpr inline reverse_iterator rend() noexcept
Returns a reverse iterator to the element following the last element.
Definition fixed-vector.hpp:603
constexpr inline const_iterator cbegin() const noexcept
Return const iterator to the first element.
Definition fixed-vector.hpp:540
constexpr inline void resize(size_type n) noexcept
Resizes the container to the specified size.
Definition fixed-vector.hpp:670
constexpr inline const_iterator end() const noexcept
Returns a const iterator to the element following the last element.
Definition fixed-vector.hpp:585
constexpr inline fixed_vector(size_type n, const_reference value) noexcept
Constructs a fixed_vector with the specified number of elements initialized to the given value.
Definition fixed-vector.hpp:345
constexpr inline pointer try_push_back(const_reference value) noexcept
Adds a new element at the end of the vector.
Definition fixed-vector.hpp:875
constexpr inline iterator begin() noexcept
Return iterator to the first element.
Definition fixed-vector.hpp:522
constexpr inline void assign(size_type n, const_reference value) noexcept
Replaces the contents with the specified number of copies of the given value.
Definition fixed-vector.hpp:378
constexpr inline const_reference operator[](size_type n) const noexcept
Accesses an element by index.
Definition fixed-vector.hpp:455
constexpr inline reference unchecked_push_back(const_reference value) noexcept
Adds a new element at the end of the vector without checking the size.
Definition fixed-vector.hpp:906
constexpr inline void resize(size_type n, const_reference value) noexcept
Resizes the container to the specified size and initializes new elements with the given value.
Definition fixed-vector.hpp:684
static constexpr inline size_type capacity() noexcept
Returns the maximum number of elements that the container can hold.
Definition fixed-vector.hpp:657
constexpr inline iterator insert(const_iterator pos, value_type &&value) noexcept
Moves the given value at the specified position.
Definition fixed-vector.hpp:739
constexpr inline void assign(It first, It last) noexcept
Replaces the contents with the elements in the specified range.
Definition fixed-vector.hpp:395
constexpr inline const_reverse_iterator rbegin() const noexcept
Returns a const iterator to the first element.
Definition fixed-vector.hpp:558
constexpr inline iterator erase(const_iterator first, const_iterator last) noexcept
Remove range of elements from the vector.
Definition fixed-vector.hpp:960
constexpr inline iterator insert(const_iterator pos, std::initializer_list< value_type > init_list) noexcept
Inserts initializer list of elements at the specified position.
Definition fixed-vector.hpp:779
constexpr inline fixed_vector() noexcept=default
Default constructor.
constexpr inline reference push_back(const_reference value) noexcept
Adds a new element at the end of the vector.
Definition fixed-vector.hpp:850
constexpr inline fixed_vector(std::initializer_list< value_type > init_list) noexcept
Constructs a fixed_vector from an initializer list.
Definition fixed-vector.hpp:368
static constexpr inline void reserve(size_type n) noexcept
Reserves space for the specified number of elements.
Definition fixed-vector.hpp:705
constexpr inline const_reference back() const noexcept
Accesses the last element in the vector.
Definition fixed-vector.hpp:494
#define IPADDRESS_EXPORT
Definition config.hpp:45
#define IPADDRESS_NODISCARD
Definition config.hpp:101
#define IPADDRESS_FORCE_INLINE
Definition config.hpp:115
#define IPADDRESS_NAMESPACE
Definition config.hpp:41
#define IPADDRESS_NOEXCEPT
Definition config.hpp:92
constexpr inline bool operator==(const fixed_vector< T, N1 > &lhs, const fixed_vector< T, N2 > &rhs) noexcept
Compares two fixed_vector objects for equality.
Definition fixed-vector.hpp:1324
constexpr inline bool operator!=(const fixed_vector< T, N1 > &lhs, const fixed_vector< T, N2 > &rhs) noexcept
Compares two fixed_vector objects for inequality.
Definition fixed-vector.hpp:1350
constexpr inline bool operator>(const fixed_vector< T, N1 > &lhs, const fixed_vector< T, N2 > &rhs) noexcept
Compares the contents of two fixed vector lexicographically.
Definition fixed-vector.hpp:1419
constexpr inline bool operator>=(const fixed_vector< T, N1 > &lhs, const fixed_vector< T, N2 > &rhs) noexcept
Compares the contents of two fixed vector lexicographically.
Definition fixed-vector.hpp:1453
constexpr inline bool operator<=(const fixed_vector< T, N1 > &lhs, const fixed_vector< T, N2 > &rhs) noexcept
Compares the contents of two fixed vector lexicographically.
Definition fixed-vector.hpp:1436
constexpr inline bool operator<(const fixed_vector< T, N1 > &lhs, const fixed_vector< T, N2 > &rhs) noexcept
Compares the contents of two fixed vector lexicographically.
Definition fixed-vector.hpp:1394