STL/stl/inc
Adam Bucior f01ecbbe8e
<compare>,<functional> Concept-constrained comparisons (#385)
Includes:
* concepts `three_way_comparable` and `three_way_comparable_with`,
* type trait `std::compare_three_way_result` (with `_t` alias), and
* function object `compare_three_way`.

in `<compare>`, and:

* function objects `ranges::equal_to` and `ranges::less` (in `<xutility>` for
  easy algorithm access), `ranges::not_equal_to`, `ranges::less_equal`,
  `ranges::greater`, and `ranges::greater_equal` (in `<functional>`),
* slight refactoring of concept definitions in `<concepts>` to avoid redundant
  requirements for the single-type comparison concepts `equality_comparable`,
  `totally_ordered`, and `three_way_comparable`,
* heavy refactoring of the trait `common_comparison_category` (and `_t` alias)
  in `<compare>` to requires only `n + c` template instantiations instead of `cn`
  template instantiations,
* ======== ABI BREAK =========== remove the `_Is_unordered` member from
  `std::partial_ordering` in `<compare>` since (a) it's true if and only if the
  stored value has a particular value, and (b) Clang expects all of the
  comparison category types to have size 1,
* reorder all `is_transparent` alias declarations in the STL to be after the
  corresponding `operator()` to agree with synopsis order.

Also adds a new test `P0896R4_P1614R2_comparisons` that exercises the above.

The ABI BREAK sounds scary - as it should - but note that:
* this is a `/std:c++latest` feature, which is subject to change,
* objects of comparison category type aren't typically stored,
* only MSVC has released `<compare>` so far, so it's not widely used.
Altogether, it's extremely unlikely that anyone has encoded this in ABI.
2020-02-18 17:38:40 -08:00
..
cvt P0935R0 Eradicating Unnecessarily Explicit Default Constructors (#415) 2020-01-24 12:01:10 -08:00
experimental Marked _Doraise() functions as override (#302) 2019-11-15 17:20:06 -08:00
__msvc_all_public_headers.hpp Reduce memory consumption of system_category().message() (#457) 2020-02-07 00:25:31 -08:00
__msvc_system_error_abi.hpp Reduce memory consumption of system_category().message() (#457) 2020-02-07 00:25:31 -08:00
algorithm <compare>,<functional> Concept-constrained comparisons (#385) 2020-02-18 17:38:40 -08:00
any Use consistent phrasing of required standard mode (#252) 2019-11-05 13:12:34 -08:00
array Consistently use "int = 0" SFINAE (#226) 2019-11-01 18:15:37 -07:00
atomic Finish Fixing Atomic Initialization (P0883R2) (#390) 2020-01-23 22:50:22 -08:00
bit Add P0553R4 and P0556R3 to <bit> (with D1956 rename) (#310) 2019-11-18 23:27:19 -08:00
bitset P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
cassert Initial commit. 2019-09-04 15:57:56 -07:00
ccomplex Initial commit. 2019-09-04 15:57:56 -07:00
cctype Initial commit. 2019-09-04 15:57:56 -07:00
cerrno Initial commit. 2019-09-04 15:57:56 -07:00
cfenv Initial commit. 2019-09-04 15:57:56 -07:00
cfloat Initial commit. 2019-09-04 15:57:56 -07:00
charconv Fix #332: LWG-3266 to_chars(bool) should be deleted 2019-12-04 20:21:54 -08:00
chrono Consistently use "int = 0" SFINAE (#226) 2019-11-01 18:15:37 -07:00
cinttypes Initial commit. 2019-09-04 15:57:56 -07:00
ciso646 Initial commit. 2019-09-04 15:57:56 -07:00
climits Initial commit. 2019-09-04 15:57:56 -07:00
clocale Initial commit. 2019-09-04 15:57:56 -07:00
cmath Fix #192: <cmath>: Fuse <xtgmath.h> (#374) 2019-12-11 16:28:07 -08:00
codecvt Enable clang-format AlignConsecutiveMacros. (#269) 2019-11-07 14:43:51 -08:00
compare <compare>,<functional> Concept-constrained comparisons (#385) 2020-02-18 17:38:40 -08:00
complex Fix formula in complex asinh, acosh and acos. (#401) 2020-02-05 22:55:14 -08:00
concepts <compare>,<functional> Concept-constrained comparisons (#385) 2020-02-18 17:38:40 -08:00
condition_variable Update comments to follow custom autolink syntax (#168) 2019-10-11 13:43:06 -07:00
csetjmp Initial commit. 2019-09-04 15:57:56 -07:00
csignal Initial commit. 2019-09-04 15:57:56 -07:00
cstdalign Initial commit. 2019-09-04 15:57:56 -07:00
cstdarg Initial commit. 2019-09-04 15:57:56 -07:00
cstdbool Initial commit. 2019-09-04 15:57:56 -07:00
cstddef Initial commit. 2019-09-04 15:57:56 -07:00
cstdint Initial commit. 2019-09-04 15:57:56 -07:00
cstdio Initial commit. 2019-09-04 15:57:56 -07:00
cstdlib Initial commit. 2019-09-04 15:57:56 -07:00
cstring Initial commit. 2019-09-04 15:57:56 -07:00
ctgmath Initial commit. 2019-09-04 15:57:56 -07:00
ctime Initial commit. 2019-09-04 15:57:56 -07:00
cuchar Initial commit. 2019-09-04 15:57:56 -07:00
cwchar Update comments to follow custom autolink syntax (#168) 2019-10-11 13:43:06 -07:00
cwctype Initial commit. 2019-09-04 15:57:56 -07:00
deque Consistently use "int = 0" SFINAE (#226) 2019-11-01 18:15:37 -07:00
exception P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
execution Fix #463 by avoiding iterator subscripting. (#464) 2020-01-28 14:35:35 -08:00
filesystem [range.iter.ops], default_sentinel, and unreachable_sentinel (#329) 2019-12-02 15:32:14 -08:00
forward_list Reduce stack space consumption of list<T>::insert (#366) 2019-12-11 12:58:44 -08:00
fstream Initial commit. 2019-09-04 15:57:56 -07:00
functional <compare>,<functional> Concept-constrained comparisons (#385) 2020-02-18 17:38:40 -08:00
future Use _STD addressof(_Val), update _MSVC_STL_UPDATE (#358) 2019-12-06 19:38:33 -08:00
hash_map Fix #249: Change <hash_map> to consistently use int = 0 SFINAE (#328) 2019-12-07 01:11:26 -08:00
hash_set Ranges <range> machinery 2019-09-09 15:31:26 -07:00
initializer_list Initial commit. 2019-09-04 15:57:56 -07:00
iomanip Initial commit. 2019-09-04 15:57:56 -07:00
ios Initial commit. 2019-09-04 15:57:56 -07:00
iosfwd Enable clang-format AlignConsecutiveMacros. (#269) 2019-11-07 14:43:51 -08:00
iostream Initial commit. 2019-09-04 15:57:56 -07:00
iso646.h Enable more clang-format. (#458) 2020-01-25 03:07:01 -08:00
istream Update comments to follow custom autolink syntax (#168) 2019-10-11 13:43:06 -07:00
iterator <iterator>: reduced parsing time (#355) 2019-12-16 17:04:28 -08:00
limits Initial commit. 2019-09-04 15:57:56 -07:00
list Reduce stack space consumption of list<T>::insert (#366) 2019-12-11 12:58:44 -08:00
locale Initial commit. 2019-09-04 15:57:56 -07:00
map P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
memory <compare>,<functional> Concept-constrained comparisons (#385) 2020-02-18 17:38:40 -08:00
memory_resource Use consistent phrasing of required standard mode (#252) 2019-11-05 13:12:34 -08:00
mutex Changes made from update to clang-format to 9.0.0. (#205) 2019-10-24 16:47:28 -07:00
new Initial commit. 2019-09-04 15:57:56 -07:00
numbers P0631R8 <numbers> Math Constants (#261) 2019-11-11 21:17:34 -08:00
numeric Fix #463 by avoiding iterator subscripting. (#464) 2020-01-28 14:35:35 -08:00
optional Marked _Doraise() functions as override (#302) 2019-11-15 17:20:06 -08:00
ostream P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
queue Initial commit. 2019-09-04 15:57:56 -07:00
random P0935R0 Eradicating Unnecessarily Explicit Default Constructors (#415) 2020-01-24 12:01:10 -08:00
ranges [ranges] Implement some range concepts (#389) 2019-12-16 21:58:58 -08:00
ratio Initial commit. 2019-09-04 15:57:56 -07:00
regex [range.iter.ops], default_sentinel, and unreachable_sentinel (#329) 2019-12-02 15:32:14 -08:00
scoped_allocator Fix #218 - remove public redundancy (#219) 2019-10-25 11:26:59 -07:00
set P1209R0 erase_if(), erase() (#236) 2019-11-01 14:32:39 -07:00
shared_mutex Fix #347: <shared_mutex>: Do we still need the _USING_V110_SDK71_ guard? (#373) 2019-12-11 16:27:13 -08:00
span <span>: fix cross-type iterator operations (#474) 2020-01-30 08:27:03 -08:00
sstream P0935R0 Eradicating Unnecessarily Explicit Default Constructors (#415) 2020-01-24 12:01:10 -08:00
stack Initial commit. 2019-09-04 15:57:56 -07:00
stdexcept Marked _Doraise() functions as override (#302) 2019-11-15 17:20:06 -08:00
streambuf <iterator>: reduced parsing time (#355) 2019-12-16 17:04:28 -08:00
string Update comments to follow custom autolink syntax (#168) 2019-10-11 13:43:06 -07:00
string_view Use consistent phrasing of required standard mode (#252) 2019-11-05 13:12:34 -08:00
strstream P0935R0 Eradicating Unnecessarily Explicit Default Constructors (#415) 2020-01-24 12:01:10 -08:00
system_error Reduce memory consumption of system_category().message() (#457) 2020-02-07 00:25:31 -08:00
thread P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
tuple LWG-3158 tuple(allocator_arg_t, const Alloc&) should be conditionally explicit (#195) 2019-10-22 17:25:38 -07:00
type_traits P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
typeindex P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
typeinfo Marked _Doraise() functions as override (#302) 2019-11-15 17:20:06 -08:00
unordered_map P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
unordered_set P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
use_ansi.h Initial commit. 2019-09-04 15:57:56 -07:00
utility <compare>,<functional> Concept-constrained comparisons (#385) 2020-02-18 17:38:40 -08:00
valarray Use unqualified function calls for valarray (#286) 2019-11-11 21:23:24 -08:00
variant P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
vector P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
version Initial commit. 2019-09-04 15:57:56 -07:00
xatomic.h Update comments to follow custom autolink syntax (#168) 2019-10-11 13:43:06 -07:00
xbit_ops.h Initial commit. 2019-09-04 15:57:56 -07:00
xcall_once.h Update comments to follow custom autolink syntax (#168) 2019-10-11 13:43:06 -07:00
xcharconv.h Initial commit. 2019-09-04 15:57:56 -07:00
xcharconv_ryu.h Changed TODO comments to TRANSITION comments (#221) 2019-10-27 14:12:14 -07:00
xcharconv_ryu_tables.h Initial commit. 2019-09-04 15:57:56 -07:00
xerrc.h Initial commit. 2019-09-04 15:57:56 -07:00
xfacet Initial commit. 2019-09-04 15:57:56 -07:00
xfilesystem_abi.h Initial commit. 2019-09-04 15:57:56 -07:00
xhash Bits of cleanup from clang 10 investigation (#475) 2020-01-29 20:01:15 -08:00
xiosbase Marked _Doraise() functions as override (#302) 2019-11-15 17:20:06 -08:00
xkeycheck.h Fix typos (#96) 2019-09-17 21:45:12 -06:00
xlocale Fix #340: <functional>: _HAS_STATIC_RTTI=0 shouldn't say typeid(void) (#375) 2019-12-11 16:29:43 -08:00
xlocbuf P0935R0 Eradicating Unnecessarily Explicit Default Constructors (#415) 2020-01-24 12:01:10 -08:00
xlocinfo Initial commit. 2019-09-04 15:57:56 -07:00
xlocinfo.h Improve clang-format with StatementMacros. 2019-12-06 13:45:40 -08:00
xlocmes Fix #218 - remove public redundancy (#219) 2019-10-25 11:26:59 -07:00
xlocmon <iterator>: reduced parsing time (#355) 2019-12-16 17:04:28 -08:00
xlocnum <iterator>: reduced parsing time (#355) 2019-12-16 17:04:28 -08:00
xloctime <iterator>: reduced parsing time (#355) 2019-12-16 17:04:28 -08:00
xmemory P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
xnode_handle.h Initial commit. 2019-09-04 15:57:56 -07:00
xpolymorphic_allocator.h Initial commit. 2019-09-04 15:57:56 -07:00
xsmf_control.h Update comments to follow custom autolink syntax (#168) 2019-10-11 13:43:06 -07:00
xstddef <compare>,<functional> Concept-constrained comparisons (#385) 2020-02-18 17:38:40 -08:00
xstring P0619R4 Removing C++17-Deprecated Features (#380) 2020-02-03 02:55:53 -08:00
xthreads.h Enable clang-format AlignConsecutiveMacros. (#269) 2019-11-07 14:43:51 -08:00
xtimec.h Enable clang-format AlignConsecutiveMacros. (#269) 2019-11-07 14:43:51 -08:00
xtr1common Ranges <range> machinery 2019-09-09 15:31:26 -07:00
xtree Consistently use "int = 0" SFINAE (#226) 2019-11-01 18:15:37 -07:00
xutility <compare>,<functional> Concept-constrained comparisons (#385) 2020-02-18 17:38:40 -08:00
ymath.h Enable clang-format AlignConsecutiveMacros. (#269) 2019-11-07 14:43:51 -08:00
yvals.h Implement fixes from D2091R0 "Issues with Range Access CPOs" (#432) 2020-01-23 18:13:06 -08:00
yvals_core.h Update _MSVC_STL_UPDATE value to February 2020 (#486) 2020-02-06 11:45:20 -08:00