[#BloombergLP-bdlt-Calendar]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlt.adoc[bdlt]::Calendar
:relfileprefix: ../../
:mrdocs:

This class implements a runtime&hyphen;efficient, value&hyphen;semantic repository of weekend and holiday information over a _valid_ _range_ of dates&period; This valid range, `&lsqb;firstDate() &period;&period; lastDate()&rsqb;`, spans the first and last dates of a calendar&apos;s accessible contents&period; A calendar can be &quot;populated&quot; with weekend and holiday information via a suite of &quot;add&quot; methods&period; Any subset of days of the week may be specified as weekend (i&period;e&period;, recurring non&hyphen;business) days starting from a specified date by adding a weekend&hyphen;days transition&semi; holidays within the valid range are specified individually&period; When adding a holiday, an arbitrary integer &quot;holiday code&quot; may be associated with that date&period; Additional holiday codes for that date may subsequently be added&period; Both the holidays and the set of unique holiday codes associated with each holiday date are maintained (internally) in order of increasing value&period; Note that the behavior of requesting _any_ calendar information for a supplied date whose value is outside the current _valid_ _range_ for that calendar (unless otherwise noted, e&period;g&period;, `isWeekendDay`) is undefined&period;

== Synopsis

Declared in `&lt;bdlt&lowbar;calendar&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class Calendar;
----

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlt/Calendar/BusinessDayConstIterator.adoc[`BusinessDayConstIterator`] 
| Constant iterator over business days in this calendar&period;
| xref:BloombergLP/bdlt/Calendar/BusinessDayConstReverseIterator.adoc[`BusinessDayConstReverseIterator`] 
| Constant reverse iterator over business days in this calendar&period;
| xref:BloombergLP/bdlt/Calendar/HolidayCodeConstIterator.adoc[`HolidayCodeConstIterator`] 
| Constant iterator over holiday codes in this calendar&period;
| xref:BloombergLP/bdlt/Calendar/HolidayCodeConstReverseIterator.adoc[`HolidayCodeConstReverseIterator`] 
| Constant reverse iterator over holiday codes in this calendar&period;
| xref:BloombergLP/bdlt/Calendar/HolidayConstIterator.adoc[`HolidayConstIterator`] 
| Constant iterator over holidays in this calendar&period;
| xref:BloombergLP/bdlt/Calendar/HolidayConstReverseIterator.adoc[`HolidayConstReverseIterator`] 
| Constant reverse iterator over holidays in this calendar&period;
| xref:BloombergLP/bdlt/Calendar/WeekendDaysTransition-0b.adoc[`WeekendDaysTransition`] 
| Transition describing a change in weekend days&period;
| xref:BloombergLP/bdlt/Calendar/WeekendDaysTransitionConstIterator.adoc[`WeekendDaysTransitionConstIterator`] 
| Constant iterator over weekend&hyphen;days transitions in this calendar&period;
| xref:BloombergLP/bdlt/Calendar/WeekendDaysTransitionConstReverseIterator.adoc[`WeekendDaysTransitionConstReverseIterator`] 
| Constant reverse iterator over weekend&hyphen;days transitions&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlt/Calendar/2constructor-07.adoc[`Calendar`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bdlt/Calendar/2destructor.adoc[`&#126;Calendar`] [.small]#[destructor]#
| Destroy this object&period;
| xref:BloombergLP/bdlt/Calendar/operator_assign-08.adoc[`operator&equals;`] 
| Assignment operators
| xref:BloombergLP/bdlt/Calendar/addDay.adoc[`addDay`] 
| Extend the valid range (if necessary) of this calendar to include the specified `date` value&period;
| xref:BloombergLP/bdlt/Calendar/addHoliday.adoc[`addHoliday`] 
| Mark the specified `date` as a holiday (i&period;e&period;, a non&hyphen;business day) in this calendar&period; Extend the valid range of this calendar if necessary&period; If `date` is already marked as a holiday, this method has no effect&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period;
| xref:BloombergLP/bdlt/Calendar/addHolidayCode.adoc[`addHolidayCode`] 
| Mark the specified `date` as a holiday (i&period;e&period;, a non&hyphen;business day) in this calendar and add the specified `holidayCode` (if not already present) to the ordered set of codes associated with `date`&period; Extend the valid range of this calendar if necessary&period; If `holidayCode` is already a code for `date`, this method has no effect&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period; Note that this method may be called repeatedly with the same value for `date` to build up a set of holiday codes for that date&period;
| xref:BloombergLP/bdlt/Calendar/addHolidayCodeIfInRange.adoc[`addHolidayCodeIfInRange`] 
| Mark the specified `date` as a holiday (i&period;e&period;, a non&hyphen;business day) in this calendar and add the specified `holidayCode` (if not already present) to the set of codes associated with `date`, if `date` is within the valid range of this calendar&period; Return 0 if `date` is in range, and a non&hyphen;zero value otherwise&period; If `holidayCode` is already a code for `date`, or if `date` is not in the valid range, this method has no effect&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period; Note that this method may, at the expense of verifying `isInRange(date)` for each invocation, be called repeatedly with the same value for `date` to build up a set of holiday codes for that date&period;
| xref:BloombergLP/bdlt/Calendar/addHolidayIfInRange.adoc[`addHolidayIfInRange`] 
| Mark the specified `date` as a holiday (i&period;e&period;, a non&hyphen;business day) in this calendar if `date` is within the valid range&period; Return 0 if `date` is in range, and a non&hyphen;zero value otherwise&period; This method has no effect if `date` is already marked as a holiday or is not in the valid range&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period;
| xref:BloombergLP/bdlt/Calendar/addWeekendDay.adoc[`addWeekendDay`] 
| Add the specified `weekendDay` to the set of weekend days associated with the weekend&hyphen;days transition at January 1, 0001 maintained by this calendar&period; Create a transition at January 1, 0001 if one does not exist&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period; The behavior is undefined unless no weekend&hyphen;days transitions were added to this calendar via the `addWeekendDaysTransition` method&period;
| xref:BloombergLP/bdlt/Calendar/addWeekendDays.adoc[`addWeekendDays`] 
| Add the specified `weekendDays` to the set of weekend days associated with the weekend&hyphen;days transition at January 1, 0001 maintained by this calendar&period; Create a transition at January 1, 0001 if one does not exist&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period; The behavior is undefined unless no weekend&hyphen;days transitions were added to this calendar via the `addWeekendDaysTransition` method&period;
| xref:BloombergLP/bdlt/Calendar/addWeekendDaysTransition.adoc[`addWeekendDaysTransition`] 
| Add to this calendar a weekend&hyphen;days transition on the specified `startDate` having the specified `weekendDays` set&period; If a weekend&hyphen;days transition already exists on `startDate`, replace the set of weekend days of that transition with `weekendDays`&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period; Note that this method does not extend the valid range of the calendar&period;
| xref:BloombergLP/bdlt/Calendar/allocator.adoc[`allocator`] 
| Return the allocator used by this object to supply memory&period;
| xref:BloombergLP/bdlt/Calendar/bdexStreamIn.adoc[`bdexStreamIn`] 
| Assign to this object the value read from the specified input `stream` using the specified `version` format and return a reference to the modifiable `stream`&period; If `stream` is initially invalid, this operation has no effect&period; If `stream` becomes invalid during this operation or if `version` is not supported, this object is unaltered&period; Note that no version is read from `stream`&period; See the `bslx` package&hyphen;level documentation for more information on BDEX streaming of value&hyphen;semantic types and containers&period;
| xref:BloombergLP/bdlt/Calendar/bdexStreamOut.adoc[`bdexStreamOut`] 
| Write this value to the specified output `stream` using the specified `version` format and return a reference to the modifiable `stream`&period; If `version` is not supported, `stream` is unmodified&period; Note that `version` is not written to `stream`&period; See the `bslx` package&hyphen;level documentation for more information on BDEX streaming of value&hyphen;semantic types and containers&period;
| xref:BloombergLP/bdlt/Calendar/beginBusinessDays-04.adoc[`beginBusinessDays`] 
| `beginBusinessDays` overloads
| xref:BloombergLP/bdlt/Calendar/beginHolidayCodes-0f.adoc[`beginHolidayCodes`] 
| `beginHolidayCodes` overloads
| xref:BloombergLP/bdlt/Calendar/beginHolidays-08.adoc[`beginHolidays`] 
| `beginHolidays` overloads
| xref:BloombergLP/bdlt/Calendar/beginWeekendDaysTransitions.adoc[`beginWeekendDaysTransitions`] 
| Return an iterator providing non&hyphen;modifiable access to the first weekend&hyphen;days transition in the chronological sequence of weekend&hyphen;days transitions maintained by this calendar&period; If this calendar has no weekend&hyphen;days transitions, the returned iterator has the same value as that returned by `endWeekendDaysTransitions()`&period;
| xref:BloombergLP/bdlt/Calendar/endBusinessDays-0c.adoc[`endBusinessDays`] 
| `endBusinessDays` overloads
| xref:BloombergLP/bdlt/Calendar/endHolidayCodes-09b.adoc[`endHolidayCodes`] 
| `endHolidayCodes` overloads
| xref:BloombergLP/bdlt/Calendar/endHolidays-0f.adoc[`endHolidays`] 
| `endHolidays` overloads
| xref:BloombergLP/bdlt/Calendar/endWeekendDaysTransitions.adoc[`endWeekendDaysTransitions`] 
| Return an iterator providing non&hyphen;modifiable access to the past&hyphen;the&hyphen;end weekend&hyphen;days transition in the chronological sequence of weekend&hyphen;days transitions maintained by this calendar&period;
| xref:BloombergLP/bdlt/Calendar/firstDate.adoc[`firstDate`] 
| Return a reference providing non&hyphen;modifiable access to the earliest date in the valid range of this calendar&period; The behavior is undefined unless this calendar is non&hyphen;empty &hyphen;&hyphen; i&period;e&period;, unless `1 &lt;&equals; length()`&period;
| xref:BloombergLP/bdlt/Calendar/getNextBusinessDay-04.adoc[`getNextBusinessDay`] 
| `getNextBusinessDay` overloads
| xref:BloombergLP/bdlt/Calendar/holiday.adoc[`holiday`] 
| Return the holiday at the specified `index` in this calendar&period; For all `index` values from 0 to `numHolidays() &hyphen; 1` (inclusive), a unique holiday is returned&period; The mapping of `index` to holiday is invalidated when the set of holidays is modified by an invocation of `addHoliday`, `addHolidayIfInRange`, `intersectBusinessDays`, `intersectNonBusinessDays`, `removeAll`, `removeHoliday`, `setValidRange`, `unionBusinessDays`, or `unionNonBusinessDays`&period; The behavior is undefined unless `0 &lt;&equals; index &lt; numHolidays()`&period;
| xref:BloombergLP/bdlt/Calendar/holidayCode.adoc[`holidayCode`] 
| Return, for the holiday at the specified `date` in this calendar, the holiday code at the specified `index`&period; For all `index` values from 0 to `numHolidayCodes(date) &hyphen; 1` (inclusive), a unique holiday code is returned&period; The mapping of `index` to holiday code is invalidated when the set of holidays or holiday codes is modified by an invocation of `addHoliday`, `addHolidayCode`, `addHolidayCodeIfInRange`, `addHolidayIfInRange`, `intersectBusinessDays`, `intersectNonBusinessDays`, `removeAll`, `removeHoliday`, `removeHolidayCode`, `setValidRange`, `unionBusinessDays`, or `unionNonBusinessDays`&period; The behavior is undefined unless `date` is a holiday in this calendar and `0 &lt;&equals; index &lt; numHolidayCodes(date)`&period; Note that this method facilitates testing and generally should not be used by clients&semi; in particular, using this method to iterate over the holiday codes for `date` is less efficient than using a `HolidayCodeConstIterator`&period;
| xref:BloombergLP/bdlt/Calendar/intersectBusinessDays-01.adoc[`intersectBusinessDays`] 
| `intersectBusinessDays` overloads
| xref:BloombergLP/bdlt/Calendar/intersectNonBusinessDays-0b.adoc[`intersectNonBusinessDays`] 
| `intersectNonBusinessDays` overloads
| xref:BloombergLP/bdlt/Calendar/isBusinessDay.adoc[`isBusinessDay`] 
| Return `true` if the specified `date` is a business day (i&period;e&period;, not a holiday or weekend day) in this calendar, and `false` otherwise&period; The behavior is undefined unless `date` is within the valid range of this calendar&period;
| xref:BloombergLP/bdlt/Calendar/isHoliday.adoc[`isHoliday`] 
| Return `true` if the specified `date` is a holiday in this calendar, and `false` otherwise&period; The behavior is undefined unless `date` is within the valid range of this calendar&period;
| xref:BloombergLP/bdlt/Calendar/isInRange.adoc[`isInRange`] 
| Return `true` if the specified `date` is within the valid range of this calendar (i&period;e&period;, `firstDate() &lt;&equals; date &lt;&equals; lastDate()`), and `false` otherwise&period; Note that the valid range for a `Calendar` is empty if its length is 0&period;
| xref:BloombergLP/bdlt/Calendar/isNonBusinessDay.adoc[`isNonBusinessDay`] 
| Return `true` if the specified `date` is not a business day (i&period;e&period;, is either a holiday or weekend day) in this calendar, and `false` otherwise&period; The behavior is undefined unless `date` is within the valid range of this calendar&period; Note that&colon; &grave; !isBusinessDay(date) &grave; returns the same result&period;
| xref:BloombergLP/bdlt/Calendar/isWeekendDay-082.adoc[`isWeekendDay`] 
| `isWeekendDay` overloads
| xref:BloombergLP/bdlt/Calendar/lastDate.adoc[`lastDate`] 
| Return a reference providing non&hyphen;modifiable access to the latest date in the valid range of this calendar&period; The behavior is undefined unless this calendar is non&hyphen;empty &hyphen;&hyphen; i&period;e&period;, unless `1 &lt;&equals; length()`&period;
| xref:BloombergLP/bdlt/Calendar/length.adoc[`length`] 
| Return the number of days in the valid range of this calendar, which is defined to be 0 if this calendar is empty, and `lastDate() &hyphen; firstDate() &plus; 1` otherwise&period;
| xref:BloombergLP/bdlt/Calendar/numBusinessDays-04.adoc[`numBusinessDays`] 
| `numBusinessDays` overloads
| xref:BloombergLP/bdlt/Calendar/numHolidayCodes.adoc[`numHolidayCodes`] 
| Return the number of (unique) holiday codes associated with the specified `date` in this calendar if `date` is a holiday in this calendar, and 0 otherwise&period; The behavior is undefined unless `date` is within the valid range of this calendar&period;
| xref:BloombergLP/bdlt/Calendar/numHolidayCodesTotal.adoc[`numHolidayCodesTotal`] 
| Return the total number of holiday codes for all holidays in this calendar&period; Note that this function is used primarily in conjunction with `reserveHolidayCodeCapacity`&period;
| xref:BloombergLP/bdlt/Calendar/numHolidays.adoc[`numHolidays`] 
| Return the number of days in the valid range of this calendar that are individually marked as holidays, irrespective of whether or not the date is also considered a weekend day&period;
| xref:BloombergLP/bdlt/Calendar/numNonBusinessDays.adoc[`numNonBusinessDays`] 
| Return the number of days in the valid range of this calendar that are _not_ considered business days &hyphen;&hyphen; i&period;e&period;, are either holidays, weekend days, or both&period; Note that `numNonBusinessDays() &equals;&equals; length() &hyphen; numBusinessDays()`&period;
| xref:BloombergLP/bdlt/Calendar/numWeekendDaysInRange.adoc[`numWeekendDaysInRange`] 
| Return the number of days in the valid range of this calendar that are considered weekend days, irrespective of any designated holidays&period;
| xref:BloombergLP/bdlt/Calendar/numWeekendDaysTransitions.adoc[`numWeekendDaysTransitions`] 
| Return the number of weekend&hyphen;days transitions maintained by this calendar&period;
| xref:BloombergLP/bdlt/Calendar/packedCalendar.adoc[`packedCalendar`] 
| Return a reference providing non&hyphen;modifiable access to the underlying `PackedCalendar`, which represents the same (mathematical) value as this calendar&period;
| xref:BloombergLP/bdlt/Calendar/print.adoc[`print`] 
| Format this object to the specified output `stream` at the (absolute value of) the optionally specified indentation `level` and return a reference to the modifiable `stream`&period; If `level` is specified, optionally specify `spacesPerLevel`, the number of spaces per indentation level for this and all of its nested objects&period; If `level` is negative, suppress indentation of the first line&period; If `spacesPerLevel` is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by `level`)&period; If `stream` is not valid on entry, this operation has no effect&period;
| xref:BloombergLP/bdlt/Calendar/rbeginBusinessDays-00.adoc[`rbeginBusinessDays`] 
| `rbeginBusinessDays` overloads
| xref:BloombergLP/bdlt/Calendar/rbeginHolidayCodes-097.adoc[`rbeginHolidayCodes`] 
| `rbeginHolidayCodes` overloads
| xref:BloombergLP/bdlt/Calendar/rbeginHolidays-08.adoc[`rbeginHolidays`] 
| `rbeginHolidays` overloads
| xref:BloombergLP/bdlt/Calendar/rbeginWeekendDaysTransitions.adoc[`rbeginWeekendDaysTransitions`] 
| Return an iterator providing non&hyphen;modifiable access to the last weekend&hyphen;days transition in the chronological sequence of weekend&hyphen;days transitions maintained by this calendar&period; If this calendar has no weekend&hyphen;days transitions, the returned iterator has the same value as that returned by `rendWeekendDaysTransitions()`&period;
| xref:BloombergLP/bdlt/Calendar/removeAll.adoc[`removeAll`] 
| Remove all information from this calendar, leaving it with its default constructed &quot;empty&quot; value&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period;
| xref:BloombergLP/bdlt/Calendar/removeHoliday.adoc[`removeHoliday`] 
| Remove from this calendar the holiday having the specified `date` if such a holiday exists&period; This operation has no effect if `date` is not a holiday in this calendar&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period; Note that this method is defined for all `date` values, not just those that fall within the valid range, and may be invoked even on an empty calendar (i&period;e&period;, having `0 &equals;&equals; length()`)&period;
| xref:BloombergLP/bdlt/Calendar/removeHolidayCode.adoc[`removeHolidayCode`] 
| Remove from this calendar the specified `holidayCode` for the holiday having the specified `date` if such a holiday having `holidayCode` exists&period; This operation has no effect if `date` is not a holiday in this calendar, or if the holiday at `date` does not have `holidayCode` associated with it&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period; Note that this method is defined for all `date` values, not just those that fall within the valid range, and may be invoked even on an empty calendar (i&period;e&period;, having `0 &equals;&equals; length()`)&period;
| xref:BloombergLP/bdlt/Calendar/rendBusinessDays-08.adoc[`rendBusinessDays`] 
| `rendBusinessDays` overloads
| xref:BloombergLP/bdlt/Calendar/rendHolidayCodes-01.adoc[`rendHolidayCodes`] 
| `rendHolidayCodes` overloads
| xref:BloombergLP/bdlt/Calendar/rendHolidays-07.adoc[`rendHolidays`] 
| `rendHolidays` overloads
| xref:BloombergLP/bdlt/Calendar/rendWeekendDaysTransitions.adoc[`rendWeekendDaysTransitions`] 
| Return an iterator providing non&hyphen;modifiable access to the element one before the first weekend&hyphen;days transition in the chronological sequence of weekend&hyphen;days transitions maintained by this calendar&period;
| xref:BloombergLP/bdlt/Calendar/reserveHolidayCapacity.adoc[`reserveHolidayCapacity`] 
| Reserve enough space to store at least the specified `numHolidays` within this calendar&period; This method has no effect if `numHolidays &lt;&equals; numHolidays()`&period;
| xref:BloombergLP/bdlt/Calendar/reserveHolidayCodeCapacity.adoc[`reserveHolidayCodeCapacity`] 
| Reserve enough space to store at least the specified `numHolidayCodes` within this calendar assuming no additional holidays are added to this calendar&period; This method has no effect if `numHolidayCodes &lt;&equals; numHolidayCodesTotal()`&period;
| xref:BloombergLP/bdlt/Calendar/setValidRange.adoc[`setValidRange`] 
| Set the range of this calendar using the specified `firstDate` and `lastDate` as, respectively, the first date and the last date of the calendar&period; Any holiday that is outside the new range and its holiday codes are removed&period; See &lcub;Iterator Invalidation&rcub; for information regarding which iterators are affected by the use of this method&period; The behavior is undefined unless `firstDate &lt;&equals; lastDate`&period;
| xref:BloombergLP/bdlt/Calendar/swap.adoc[`swap`] 
| Efficiently exchange the value of this object with the value of the specified `other` object&period; This method provides the no&hyphen;throw exception&hyphen;safety guarantee&period; The behavior is undefined unless this object was created with the same allocator as `other`&period;
| xref:BloombergLP/bdlt/Calendar/unionBusinessDays-0e.adoc[`unionBusinessDays`] 
| `unionBusinessDays` overloads
| xref:BloombergLP/bdlt/Calendar/unionNonBusinessDays-05.adoc[`unionNonBusinessDays`] 
| `unionNonBusinessDays` overloads
| xref:BloombergLP/bdlt/Calendar/weekendDaysTransition-07.adoc[`weekendDaysTransition`] 
| Return the weekend&hyphen;days transition at the specified `index` in this calendar&period; For all `index` values from 0 to `numWeekendDaysTransitions() &hyphen; 1` (inclusive), a unique weekend&hyphen;days transition is returned&period; The mapping of `index` to weekend&hyphen;days transition is invalidated when the set of weekend&hyphen;days transitions is modified by an invocation of `addWeekendDay`, `addWeekendDays`, `addWeekendDaysTransition`, `intersectBusinessDays`, `intersectNonBusinessDays`, `removeAll`, `unionBusinessDays`, or `unionNonBusinessDays`&period; The behavior is undefined unless `0 &lt;&equals; index &lt; numWeekendDaysTransitions()`&period;
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlt/Calendar/maxSupportedBdexVersion-08.adoc[`maxSupportedBdexVersion`] 
| `maxSupportedBdexVersion` overloads
|===


== Friends

[cols="1,4"]
|===
| Name| Description
| `xref:BloombergLP/bdlt/hashAppend-02.adoc[BloombergLP::bdlt::hashAppend]`
| Pass the specified `object` to the specified `hashAlg`&period; This function integrates with the `bslh` modular hashing system and effectively provides a `bsl&colon;&colon;hash` specialization for `Calendar`&period;
| `xref:BloombergLP/bdlt/operator_not_eq-048.adoc[BloombergLP::bdlt::operator!&equals;]`
| Return `true` if the specified `lhs` and `rhs` calendars do not have the same value, and `false` otherwise&period; Two calendars do not have the same value if they do not have the same valid range (and are not both empty), do not have the same weekend days, do not have the same holidays, or, for at least one corresponding pair of holidays, do not have the same (ordered) set of associated holiday codes&period;
| `xref:BloombergLP/bdlt/operator_eq-04d.adoc[BloombergLP::bdlt::operator&equals;&equals;]`
| Return `true` if the specified `lhs` and `rhs` calendars have the same value, and `false` otherwise&period; Two calendars have the same value if they have the same valid range (or are both empty), the same weekend days, the same holidays, and each corresponding pair of holidays has the same (ordered) set of associated holiday codes&period;
|===

== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlt/swap-01b.adoc[`swap`]
| Exchange the values of the specified `a` and `b` objects&period; This function provides the no&hyphen;throw exception&hyphen;safety guarantee if the two objects were created with the same allocator and the basic guarantee otherwise&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
