11#ifndef INCLUDED_BSLSTL_PRIORITYQUEUE_CPP03
12#define INCLUDED_BSLSTL_PRIORITYQUEUE_CPP03
63#ifdef COMPILING_BSLSTL_PRIORITYQUEUE_H
81 class CONTAINER = vector<VALUE>,
82 class COMPARATOR = std::less<typename CONTAINER::value_type> >
85#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_BASELINE_LIBRARY
95 typedef BloombergLP::bslmf::MovableRefUtil MoveUtil;
101 template <
class INPUT_ITER,
class SENTINEL>
102 void privatePushRange(INPUT_ITER first, SENTINEL last);
108 typedef typename CONTAINER::value_type
value_type;
109 typedef typename CONTAINER::reference
reference;
111 typedef typename CONTAINER::size_type
size_type;
127 BloombergLP::bslma::UsesBslmaAllocator,
128 BloombergLP::bslma::UsesBslmaAllocator<container_type>::value);
148 priority_queue(
const COMPARATOR& comparator,
const CONTAINER& container);
155 const COMPARATOR& comparator,
156 BloombergLP::bslmf::MovableRef<CONTAINER> container);
165 template <
class INPUT_ITERATOR>
174 template <
class INPUT_ITERATOR>
177 const COMPARATOR& comparator,
178 const CONTAINER& container);
186 template <
class INPUT_ITERATOR>
188 INPUT_ITERATOR first,
190 const COMPARATOR& comparator,
191 BloombergLP::bslmf::MovableRef<CONTAINER> container);
201 priority_queue(BloombergLP::bslmf::MovableRef<priority_queue> original);
211 template <
class ALLOCATOR>
216 ALLOCATOR>::type * = 0);
225 template <
class ALLOCATOR>
227 const ALLOCATOR& basicAllocator,
230 ALLOCATOR>::type * = 0);
238 template <
class ALLOCATOR>
240 const CONTAINER& container,
241 const ALLOCATOR& basicAllocator,
244 ALLOCATOR>::type * = 0);
252 template <
class ALLOCATOR>
254 BloombergLP::bslmf::MovableRef<CONTAINER> container,
255 const ALLOCATOR& basicAllocator,
258 ALLOCATOR>::type * = 0);
267 template <
class ALLOCATOR>
269 const ALLOCATOR& basicAllocator,
272 ALLOCATOR>::type * = 0);
281 template <
class ALLOCATOR>
283 BloombergLP::bslmf::MovableRef<priority_queue> original,
284 const ALLOCATOR& basicAllocator,
287 ALLOCATOR>::type * = 0);
300 template <
class t_RANGE>
305 const COMPARATOR& comparator = COMPARATOR());
306 template <
class t_RANGE,
class t_ALLOCATOR>
310 const COMPARATOR& comparator,
311 const t_ALLOCATOR& allocator,
314 t_ALLOCATOR>::type * = 0);
315 template <
class t_RANGE,
class t_ALLOCATOR>
319 const t_ALLOCATOR& allocator,
322 t_ALLOCATOR>::type * = 0);
335 BloombergLP::bslmf::MovableRef<priority_queue>
rhs)
344 void push(BloombergLP::bslmf::MovableRef<value_type> value);
351 template <
class t_RANGE>
355#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
358#ifndef BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT
359#define BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT 10
361#ifndef BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A
362#define BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT
364#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 0
368#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 1
369 template <
class Args_01>
373#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 2
374 template <
class Args_01,
380#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 3
381 template <
class Args_01,
389#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 4
390 template <
class Args_01,
400#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 5
401 template <
class Args_01,
413#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 6
414 template <
class Args_01,
428#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 7
429 template <
class Args_01,
445#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 8
446 template <
class Args_01,
464#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 9
465 template <
class Args_01,
485#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_A >= 10
486 template <
class Args_01,
511 template <
class... Args>
527 bsl::is_nothrow_swappable<CONTAINER>::value &&
528 bsl::is_nothrow_swappable<COMPARATOR>::value);
548#ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
556 class = bsl::enable_if_t<!bsl::IsStdAllocator_v<CONTAINER>>
558priority_queue(COMPARATOR, CONTAINER)
559 -> priority_queue<typename CONTAINER::value_type, CONTAINER, COMPARATOR>;
569 class = bsl::enable_if_t<bsl::uses_allocator_v<CONTAINER, ALLOCATOR>>
571priority_queue(COMPARATOR, CONTAINER, ALLOCATOR)
572 -> priority_queue<typename CONTAINER::value_type, CONTAINER, COMPARATOR>;
577 class INPUT_ITERATOR,
579 typename BloombergLP::bslstl::IteratorUtil::IterVal_t<INPUT_ITERATOR>
581priority_queue(INPUT_ITERATOR, INPUT_ITERATOR)
582 -> priority_queue<VALUE>;
589 class INPUT_ITERATOR,
593 typename BloombergLP::bslstl::IteratorUtil::IterVal_t<INPUT_ITERATOR>
595priority_queue(INPUT_ITERATOR, INPUT_ITERATOR, COMPARATOR, CONTAINER)
596 -> priority_queue<VALUE, CONTAINER, COMPARATOR>;
598#if defined(BSLS_LIBRARYFEATURES_HAS_CPP20_RANGES)
601template <ranges::input_range t_RANGE,
603 std::less<ranges::range_value_t<t_RANGE>>,
604 class t_TYPE = ranges::range_value_t<t_RANGE>,
605 class = enable_if_t<!IsStdAllocator_v<t_COMPARATOR>>>
606priority_queue(from_range_t, t_RANGE&&, t_COMPARATOR = t_COMPARATOR())
607-> priority_queue<t_TYPE, vector<t_TYPE>, t_COMPARATOR>;
614template <ranges::input_range t_RANGE,
617 class t_TYPE = ranges::range_value_t<t_RANGE>>
618requires (!IsStdAllocator_v<t_COMPARATOR> && IsStdAllocator_v<t_ALLOCATOR>)
619priority_queue(from_range_t, t_RANGE&&, t_COMPARATOR, t_ALLOCATOR)
620-> priority_queue<t_TYPE, vector<t_TYPE, t_ALLOCATOR>, t_COMPARATOR>;
626template <ranges::input_range t_RANGE,
628 class t_TYPE = ranges::range_value_t<t_RANGE>,
629 class = enable_if_t<IsStdAllocator_v<t_ALLOCATOR>>>
630priority_queue(from_range_t, t_RANGE&&, t_ALLOCATOR)
631-> priority_queue<t_TYPE, vector<t_TYPE, t_ALLOCATOR>>;
639template <
class VALUE,
class CONTAINER,
class COMPARATOR>
640void swap(priority_queue<VALUE, CONTAINER, COMPARATOR>& a,
641 priority_queue<VALUE, CONTAINER, COMPARATOR>& b)
653template <
class VALUE,
class CONTAINER,
class COMPARATOR>
659template <
class VALUE,
class CONTAINER,
class COMPARATOR>
662 const COMPARATOR& comparator)
667template <
class VALUE,
class CONTAINER,
class COMPARATOR>
669priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
670 const COMPARATOR& comparator,
671 const CONTAINER& container)
675 std::make_heap(c.begin(), c.end(), comp);
678template <
class VALUE,
class CONTAINER,
class COMPARATOR>
680priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
681 const COMPARATOR& comparator,
682 BloombergLP::bslmf::MovableRef<CONTAINER> container)
683: c(MoveUtil::move(container))
686 std::make_heap(c.begin(), c.end(), comp);
689template <
class VALUE,
class CONTAINER,
class COMPARATOR>
690template <
class INPUT_ITERATOR>
692priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
693 INPUT_ITERATOR first,
696 c.insert(c.end(), first, last);
697 std::make_heap(c.begin(), c.end(), comp);
700template <
class VALUE,
class CONTAINER,
class COMPARATOR>
701template <
class INPUT_ITERATOR>
703priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
704 INPUT_ITERATOR first,
706 const COMPARATOR& comparator,
707 const CONTAINER& container)
711 c.insert(c.end(), first, last);
712 std::make_heap(c.begin(), c.end(), comp);
715template <
class VALUE,
class CONTAINER,
class COMPARATOR>
716template <
class INPUT_ITERATOR>
718priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
719 INPUT_ITERATOR first,
721 const COMPARATOR& comparator,
722 BloombergLP::bslmf::MovableRef<CONTAINER> container)
723: c(MoveUtil::move(container))
726 c.insert(c.end(), first, last);
727 std::make_heap(c.begin(), c.end(), comp);
730template <
class VALUE,
class CONTAINER,
class COMPARATOR>
732priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
733 const priority_queue& original)
739template <
class VALUE,
class CONTAINER,
class COMPARATOR>
741priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
742 BloombergLP::bslmf::MovableRef<priority_queue> original)
743: c(MoveUtil::move(MoveUtil::access(original).c))
744, comp(MoveUtil::access(original).comp)
748template <
class VALUE,
class CONTAINER,
class COMPARATOR>
749template <
class ALLOCATOR>
751priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
752 const ALLOCATOR& basicAllocator,
761template <
class VALUE,
class CONTAINER,
class COMPARATOR>
762template <
class ALLOCATOR>
764priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
765 const COMPARATOR& comparator,
766 const ALLOCATOR& basicAllocator,
775template <
class VALUE,
class CONTAINER,
class COMPARATOR>
776template <
class ALLOCATOR>
778priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
779 const COMPARATOR& comparator,
780 const CONTAINER& container,
781 const ALLOCATOR& basicAllocator,
785: c(container, basicAllocator)
788 std::make_heap(c.begin(), c.end(), comp);
791template <
class VALUE,
class CONTAINER,
class COMPARATOR>
792template <
class ALLOCATOR>
794priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
795 const COMPARATOR& comparator,
796 BloombergLP::bslmf::MovableRef<CONTAINER> container,
797 const ALLOCATOR& basicAllocator,
801: c(MoveUtil::move(container), basicAllocator)
804 std::make_heap(c.begin(), c.end(), comp);
807template <
class VALUE,
class CONTAINER,
class COMPARATOR>
808template <
class ALLOCATOR>
810priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
811 const priority_queue& original,
812 const ALLOCATOR& basicAllocator,
816: c(original.c, basicAllocator)
821template <
class VALUE,
class CONTAINER,
class COMPARATOR>
822template <
class ALLOCATOR>
824priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
825 BloombergLP::bslmf::MovableRef<priority_queue> original,
826 const ALLOCATOR& basicAllocator,
830: c(MoveUtil::move(MoveUtil::access(original).c), basicAllocator)
831, comp(MoveUtil::access(original).comp)
835template <
class VALUE,
class CONTAINER,
class COMPARATOR>
836template <
class t_RANGE>
839priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
842 const COMPARATOR& comparator)
843#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_TO_CONTAINER
844: c(ranges::to<CONTAINER>(std::forward<t_RANGE>(range)))
850 std::make_heap(c.begin(), c.end(), comp);
853template <
class VALUE,
class CONTAINER,
class COMPARATOR>
854template <
class t_RANGE,
class t_ALLOCATOR>
857priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
860 const COMPARATOR& comparator,
861 const t_ALLOCATOR& allocator,
864 t_ALLOCATOR>::type *)
865#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_TO_CONTAINER
866: c(ranges::to<CONTAINER>(std::forward<t_RANGE>(range), allocator))
872 std::make_heap(c.begin(), c.end(), comp);
875template <
class VALUE,
class CONTAINER,
class COMPARATOR>
876template <
class t_RANGE,
class t_ALLOCATOR>
879priority_queue<VALUE, CONTAINER, COMPARATOR>::priority_queue(
882 const t_ALLOCATOR& allocator,
885 t_ALLOCATOR>::type *)
886#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_TO_CONTAINER
887: c(ranges::to<CONTAINER>(std::forward<t_RANGE>(range), allocator))
892 std::make_heap(c.begin(), c.end(), comp);
896template <
class VALUE,
class CONTAINER,
class COMPARATOR>
897template <
class INPUT_ITER,
class SENTINEL>
899void priority_queue<VALUE, CONTAINER, COMPARATOR>::privatePushRange(
903 while (first != last) {
910template <
class VALUE,
class CONTAINER,
class COMPARATOR>
912priority_queue<VALUE, CONTAINER, COMPARATOR>&
913priority_queue<VALUE, CONTAINER, COMPARATOR>::operator=(
914 const priority_queue& rhs)
921template <
class VALUE,
class CONTAINER,
class COMPARATOR>
923priority_queue<VALUE, CONTAINER, COMPARATOR>&
924priority_queue<VALUE, CONTAINER, COMPARATOR>::operator=(
925 BloombergLP::bslmf::MovableRef<priority_queue> rhs)
928 c = MoveUtil::move(MoveUtil::access(rhs).c);
929 comp = MoveUtil::access(rhs).comp;
933template <
class VALUE,
class CONTAINER,
class COMPARATOR>
935void priority_queue<VALUE, CONTAINER, COMPARATOR>::push(
936 const value_type& value)
939 std::push_heap(c.begin(), c.end(), comp);
942template <
class VALUE,
class CONTAINER,
class COMPARATOR>
944void priority_queue<VALUE, CONTAINER, COMPARATOR>::push(
945 BloombergLP::bslmf::MovableRef<value_type> value)
947 c.push_back(MoveUtil::move(value));
948 std::push_heap(c.begin(), c.end(), comp);
951template <
class VALUE,
class CONTAINER,
class COMPARATOR>
952template <
class t_RANGE>
954void priority_queue<VALUE, CONTAINER, COMPARATOR>::push_range(
957#if defined(BSLS_LIBRARYFEATURES_HAS_CPP20_RANGES)
958 if constexpr (
requires{ c.append_range(std::forward<t_RANGE>(range)); }) {
959 c.append_range(std::forward<t_RANGE>(range));
962 ranges::copy(range, back_inserter(c));
967 std::make_heap(c.begin(), c.end(), comp);
970#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
973#ifndef BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT
974#define BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT 10
976#ifndef BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B
977#define BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT
979#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 0
980template <
class VALUE,
class CONTAINER,
class COMPARATOR>
982void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
986 std::push_heap(c.begin(), c.end(), comp);
990#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 1
991template <
class VALUE,
class CONTAINER,
class COMPARATOR>
992template <
class Args_01>
994void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
998 std::push_heap(c.begin(), c.end(), comp);
1002#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 2
1003template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1004template <
class Args_01,
1007void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1013 std::push_heap(c.begin(), c.end(), comp);
1017#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 3
1018template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1019template <
class Args_01,
1023void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1031 std::push_heap(c.begin(), c.end(), comp);
1035#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 4
1036template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1037template <
class Args_01,
1042void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1052 std::push_heap(c.begin(), c.end(), comp);
1056#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 5
1057template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1058template <
class Args_01,
1064void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1076 std::push_heap(c.begin(), c.end(), comp);
1080#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 6
1081template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1082template <
class Args_01,
1089void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1103 std::push_heap(c.begin(), c.end(), comp);
1107#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 7
1108template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1109template <
class Args_01,
1117void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1133 std::push_heap(c.begin(), c.end(), comp);
1137#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 8
1138template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1139template <
class Args_01,
1148void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1166 std::push_heap(c.begin(), c.end(), comp);
1170#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 9
1171template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1172template <
class Args_01,
1182void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1202 std::push_heap(c.begin(), c.end(), comp);
1206#if BSLSTL_PRIORITYQUEUE_VARIADIC_LIMIT_B >= 10
1207template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1208template <
class Args_01,
1219void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1241 std::push_heap(c.begin(), c.end(), comp);
1248template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1249template <
class... Args>
1251void priority_queue<VALUE, CONTAINER, COMPARATOR>::emplace(
1255 std::push_heap(c.begin(), c.end(), comp);
1260template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1262void priority_queue<VALUE, CONTAINER, COMPARATOR>::pop()
1264 std::pop_heap(c.begin(), c.end(), comp);
1268template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1270void priority_queue<VALUE, CONTAINER, COMPARATOR>::swap(priority_queue& other)
1272 bsl::is_nothrow_swappable<CONTAINER>::value &&
1273 bsl::is_nothrow_swappable<COMPARATOR>::value)
1275 BloombergLP::bslalg::SwapUtil::swap(&c, &other.c);
1276 BloombergLP::bslalg::SwapUtil::swap(&comp, &other.comp);
1280template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1282bool priority_queue<VALUE, CONTAINER, COMPARATOR>::empty()
const
1287template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1289typename priority_queue<VALUE, CONTAINER, COMPARATOR>::size_type
1290priority_queue<VALUE, CONTAINER, COMPARATOR>::size()
const
1295template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1297typename priority_queue<VALUE, CONTAINER, COMPARATOR>::const_reference
1298priority_queue<VALUE, CONTAINER, COMPARATOR>::top()
const
1304template <
class VALUE,
class CONTAINER,
class COMPARATOR>
1305void swap(priority_queue<VALUE, CONTAINER, COMPARATOR>& a,
1306 priority_queue<VALUE, CONTAINER, COMPARATOR>& b)
1315# error Not valid except when included from bslstl_priorityqueue.h
#define BSLMF_NESTED_TRAIT_DECLARATION_IF(t_TYPE, t_TRAIT, t_COND)
Definition bslmf_nestedtraitdeclaration.h:243
size_type size() const
Definition bslstl_priorityqueue.h:1222
void emplace(Args &&... args)
Definition bslstl_priorityqueue.h:1185
void pop()
Definition bslstl_priorityqueue.h:1194
void swap(priority_queue &other) BSLS_KEYWORD_NOEXCEPT_SPECIFICATION(bsl bool empty() const
Definition bslstl_priorityqueue.h:745
COMPARATOR value_compare
Definition bslstl_priorityqueue.h:470
CONTAINER::reference reference
Definition bslstl_priorityqueue.h:472
COMPARATOR comp
Definition bslstl_priorityqueue.h:482
CONTAINER::size_type size_type
Definition bslstl_priorityqueue.h:474
priority_queue()
Definition bslstl_priorityqueue.h:866
void push_range(BSLS_COMPILERFEATURES_FORWARD_REF(t_RANGE) range)
Definition bslstl_priorityqueue.h:1165
CONTAINER::const_reference const_reference
Definition bslstl_priorityqueue.h:473
CONTAINER c
Definition bslstl_priorityqueue.h:478
CONTAINER::value_type value_type
Definition bslstl_priorityqueue.h:471
void push(const value_type &value)
Definition bslstl_priorityqueue.h:1146
const_reference top() const
Definition bslstl_priorityqueue.h:1230
CONTAINER container_type
Definition bslstl_priorityqueue.h:469
priority_queue & operator=(const priority_queue &rhs)
Definition bslstl_priorityqueue.h:1124
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:231
static const t_TYPE value
Definition bslmf_integralconstant.h:267
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2343
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
#define BSLS_KEYWORD_NOEXCEPT_SPECIFICATION(...)
Definition bsls_keyword.h:676
#define BSLSTL_PRIORITY_QUEUE_REQUIRES_CONTAINER_COMPATIBLE_RANGE(R, T)
Definition bslstl_priorityqueue.h:412
void swap(OptionValue &a, OptionValue &b)
Definition bdlat_valuetypefunctions.h:939
ALLOCATOR const STRING_VIEW_LIKE_TYPE & rhs
Definition bslstl_string.h:3918
T::iterator begin(T &container)
Definition bslstl_iterator.h:1593
T::iterator end(T &container)
Definition bslstl_iterator.h:1621
Definition bslmf_usesallocator.h:165