diff --git a/.travis.yml b/.travis.yml
index 59d220bed8..47c6184ec9 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,10 +3,9 @@
#
env:
- - BUILD_TYPE=latexmk # build using latexmk
+ - BUILD_TYPE=latexmk # build using latexmk, also check for overfull hboxes
- BUILD_TYPE=make # build using Makefile
- - BUILD_TYPE=manual # build manually
- - BUILD_TYPE=complete # build manually and regenerate figures, grammer, and cross-references
+ - BUILD_TYPE=complete # build manually and regenerate figures, grammar, and cross-references
- BUILD_TYPE=check-whitespace # check for whitespace at the ends of lines
script:
@@ -14,6 +13,7 @@ script:
- pushd source
- if [ "$BUILD_TYPE" = "latexmk" ]; then
latexmk -pdf std;
+ ! grep -Fe "Overfull \\hbox" std.log;
fi
- if [ "$BUILD_TYPE" = "make" ]; then
make -j2;
@@ -22,8 +22,6 @@ script:
for FIGURE in *.dot; do
dot -o$(basename $FIGURE .dot).pdf -Tpdf $FIGURE;
done;
- fi
- - if [ "$BUILD_TYPE" = "manual" -o "$BUILD_TYPE" = "complete" ]; then
pdflatex std;
pdflatex std;
pdflatex std;
diff --git a/README.rst b/README.rst
index 162aefdca4..3d61cca030 100644
--- a/README.rst
+++ b/README.rst
@@ -42,6 +42,15 @@ Install the following packages:
dnf install texlive texlive-isodate texlive-relsize texlive-ulem texlive-fixme texlive-extract
+-----------------------------
+Getting Started on Arch Linux
+-----------------------------
+
+Install the following packages:
+
+ latex-mk from the Arch User Repository.
+ pacman -S texlive-latexextra
+
------------
Instructions
------------
diff --git a/papers/n4713.pdf b/papers/n4713.pdf
new file mode 100644
index 0000000000..254570829e
Binary files /dev/null and b/papers/n4713.pdf differ
diff --git a/papers/n4714.html b/papers/n4714.html
new file mode 100644
index 0000000000..c3a2d132d1
--- /dev/null
+++ b/papers/n4714.html
@@ -0,0 +1,732 @@
+
N4714
+N4714 Editors' Report -- Programming Languages -- C++
+
+2017-11-27
+Richard Smith (editor) (Google Inc)
+Dawn Perchik (co-editor) (Embarcadero Technologies Inc)
+Thomas Köppe (co-editor) (Google DeepMind)
+<cxxeditor@gmail.com>
+
+Acknowledgements
+
+Special thanks to
+Jens Maurer
+for performing many of the editorial fixes since N4700.
+
+Thanks to all those who have submitted editorial
+issues
+and to those who have provided pull requests with fixes.
+
+New papers
+
+
+- N4713 is the current working draft for C++20. It replaces N4700.
+- N4714 is this Editors' Report.
+
+
+Motions incorporated into working draft
+
+Core working group motions
+
+CWG motion 1: Core issue resolution for 1 issue in "ready" status applied:
+
+
+- 2342 Reference
reinterpret_cast
and pointer-interconvertibility
+
+
+CWG motion 2: Core issue resolutions for 7 issues in "tentatively ready" status applied:
+
+
+- 1862 Determining "corresponding members" for friendship
+- 2177 Placement
operator delete
and parameter copies
+- 2305 Explicit instantiation of
constexpr
or inline
variable template
+- 2307 Unclear definition of "equivalent to a nontype template parameter"
+- 2313 Redeclaration of structured binding reference variables
+- 2315 What is the "corresponding special member" of a variant member?
+- 2338 Undefined behavior converting to short enums with fixed underlying types
+
+
+CWG motion 3: P0614R1 "Range-based for
statements with initializer"
+
+CWG motion 4: P0588R1 "Simplifying implicit lambda capture"
+
+CWG motion 5: P0846R0 "ADL and function templates that are not visible"
+
+CWG motion 6: P0641R2 "Resolving core issue #1331", resolving 1 core issue:
+
+
+- 1331
const
mismatch with defaulted copy constructor
+
+
+CWG motion 7: P0859R0 "Core issue 1581", resolving 1 core issue:
+
+
+- 1581 When are
constexpr
member functions defined?
+
+
+CWG motion 8: P0515R3 "Consistent comparison" and P0768R1 "Library support for the spaceship (comparison) operator"
+
+CWG motion 9: P0857R0 "Functionality gaps in constraints"
+
+CWG motion 10: P0692R1 "Access checking on specializations"
+
+CWG motion 11: P0624R2 "Default constructible and assignable stateless lambdas"
+
+CWG motion 12: P0767R1 "Deprecate POD"
+
+CWG motion 13: P0315R4 "Lambdas in unevaluated contexts"
+
+Library working group motions
+
+LWG motion 1 and 2 apply to the Parallelism TS.
+
+LWG motion 3 applies to the Networking TS.
+
+LWG motion 4: Library issue resolutions for 24 issues in "Ready" or "Tentatively Ready" status applied:
+
+
+- 2870 Default value of parameter
theta
of polar
should be dependent
+- 2935 What should
create_directories
do when p
already exists but is not a directory?
+- 2941 [thread.req.timing] wording should apply to both member and namespace-level functions
+- 2944 LWG 2905 accidentally removed requirement that construction of the deleter doesn't throw an exception
+- 2945 Order of template parameters in
optional
comparisons
+- 2948
unique_ptr
does not define operator<<
for stream output
+- 2950
std::byte
operations are misspecified
+- 2952
iterator_traits
should work for pointers to cv T
+- 2953 LWG 2853 should apply to
deque::erase
too
+- 2964 Apparently redundant requirement for
dynamic_pointer_cast
+- 2965 Non-existing
path::native_string()
in filesystem_error::what()
specification
+- 2972 What is
is_trivially_destructible_v<int>
?
+- 2976 Dangling
uses_allocator
specialization for packaged_task
+- 2977
unordered_
meow::merge()
has incorrect Throws: clause
+- 2978 Hash support for
pmr::string
and friends
+- 2979
aligned_union
should require complete object types
+- 2980 Cannot
compare_exchange
empty pointers
+- 2981 Remove redundant deduction guides from standard library
+- 2982 Making
size_type
consistent in associative container deduction guides
+- 2988 Clause 32 cleanup missed one
typename
+- 2993
reference_wrapper<T>
conversion from T&&
+- 2998 Requirements on function objects passed to {
forward_
,}list
-specific algorithms
+- 3001
weak_ptr::element_type
needs remove_extent_t
+- 3024
variant
's copies must be deleted instead of disabled via SFINAE
+
+
+LWG motion 5: Library issue resolution for 1 issue in "Immediate" status applied:
+
+
+- 2958 Moves improperly defined as deleted
+
+
+LWG motion 6: P0550R2 "Transformation trait remove_cvref
"
+
+LWG motion 7: P0777R1 "Treating unnecessary decay
"
+
+LWG motion 8: P0600R1 "[[nodiscard]]
in the Library"
+
+Do not try and apply LWG motion 9 to the working draft. That's impossible.
+Instead, only realize the truth. There is no LWG motion 9.
+
+LWG motion 10: P0439R0 "Make std::memory_order
a scoped enumeration"
+
+LWG motion 11: P0053R7 "Synchronized buffered ostream
"
+
+LWG motion 12: P0653R2 "Utility to convert a pointer to a raw pointer"
+
+LWG motion 13: P0202R3 "Add constexpr
modifiers to functions in <algorithm>
and <utility>
Headers"
+
+LWG motion 14: P0415R1 "constexpr
for std::complex
"
+
+LWG motion 15: P0718R2 "Atomic shared_ptr
"
+
+LWG motion 16: P0020R6 "Floating point atomic"
+
+LWG motion 17: P0616R0 "De-pessimize legacy <numeric>
algorithms with std::move
"
+
+LWG motion 18: P0457R2 "String prefix and suffix checking"
+
+Notable editorial changes
+
+CWG motion 8
+
+Instead of removing [operators] and adding a new section to [requirements], the
+existing stable name for this section is preserved. This section was moved to
+[description] rather than to [requirements], as it describes a notational
+device used for standard exposition.
+
+[alg.3way] added to [alg.sorting] rather than [alg.nonmodifying] to
+match existing lexicographical_compare
functions.
+
+LWG motion 8
+
+[[nodiscard]]
was inadvertantly omitted from deque::empty()
in the detailed
+wording changes (but was covered by the general description of the change).
+After consultation with LWG, this oversight has been corrected in the wording.
+
+LWG motion 10
+
+All references to the existing memory_order_*
enumerators throughout the
+working draft were updated to use the new scoped enumerator nmaes.
+
+LWG motion 11
+
+Changes were made to the organization and presentation of the wording
+to fit better into the existing document.
+
+LWG motion 12
+
+The requested addition to [pointer.traits.function] has been moved into a new
+subclause "Pointer traits optional members" and modified slightly to fit this
+new presentation, as it does not describe a member of the pointer_traits
+primary template.
+
+Text reorganization
+
+In an effort to conform to ISO drafting directives to avoid hanging paragraphs
+(text in subclauses that also contain further nested subclauses) and to remove
+excessive subclause structure, the following changes have been made:
+
+
+- [intro] and [basic] have been reorganized so that [intro] acts as an
+introduction to the standard document and [basic] introduces the basic
+concepts of the standard in an order closer to dependency order
+- [conv.rank] moved from [conv] to [basic.types], as it does not describe a conversion.
+- [expr] has additional subclause structure to partially resolve hanging
+paragraphs and generally improve its organization
+- [expr] has a new subclause describing properties of expressions, containing
+some of the prior hanging paragraphs from [expr], as well as [basic.lval]
+- [array], [util.sharedptr] Per-function subclauses have been merged into parent subclause.
+
+
+Changes in the style of specification
+
+
+Code font is no longer used when referring to non-syntax properties of entities
+(even when those properties are derived from syntax). This applies to the terms
+"inline", "friend", "public", "protected", "private", "const object".
+We generally intend to use code font only when referring specifically
+to program syntax.
+In library wording, template headers are formatted consistently with no
+space between the template
keyword and the <
token.
+
+
+Drafting for future standard changes should take the above into account.
+
+Index of library headers
+
+In order to keep the "Index of library names" focused on listing library names,
+index entries for library headers have been moved to a separate, new "Index of
+library headers".
+
+Minor editorial fixes
+
+A log of editorial fixes made to the working draft since N4700 is below.
+This list excludes changes
+that do not affect the body text or only affect whitespace or typeface. For a
+complete list including such changes (or for the actual deltas applied by these
+changes), consult the draft sources on github.
+
+commit 903df06f3e67c9a52539892cb6844b55392c5331
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Mon Nov 27 22:00:03 2017 +0000
+
+ [allocator.adaptor.syn] Delete duplicate declarations of relational operators
+
+commit cebfe0a09fb56ec33726559c8b6d006dc19e4ab7
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Nov 15 23:18:22 2017 +0100
+
+ [temp.constr.order] In definition of 'subsumes', remove
+ confusing introductory paragraph.
+
+commit 74df95e9e3fad1aa5844c281614bbfffb1cc6189
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Nov 22 23:45:18 2017 +0100
+
+ [diff] Introduce numbered paragraphs
+
+commit e543af304e195ad301da272caa7ef12107077ac0
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 25 00:01:36 2017 +0100
+
+ [lib] Harmonize spacing for template headers.
+
+ Use 'template<class T>'.
+ Also remove space between two closing template brackets.
+
+commit b73e56f7a2b92449d9ec4938b01fa7014edad33a
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Nov 15 23:26:11 2017 +0100
+
+ [basic.link] Entities declared in an unnamed namespace
+ never have external linkage.
+
+commit fc16d3133817701a780092cf6456722a40e27d28
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Nov 19 23:11:51 2017 +0100
+
+ [temp.arg.explicit] Remove note obsoleted by P0846R0
+
+commit d29bd8c6591fe74b095e5bd277f986462ba40b24
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Nov 26 18:36:42 2017 +0100
+
+ [fs.op.funcs] Separate effects from returns. (#1848)
+
+commit e2457df32a6ee70417681de10be78eb815a0b22f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Nov 20 10:23:18 2017 +0100
+
+ [complex.numbers] Use \xref for references to the C standard.
+
+commit bd2ce5c2d4ec26a5c412160ce5983149c510a131
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Nov 21 23:35:02 2017 +0100
+
+ Create a new index for library headers
+
+ and remove them from the index of library names.
+
+commit d1125303456c2305a72baebbb51d80151722f8ab
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Thu Nov 23 14:33:32 2017 +0000
+
+ [basic.life],[mem.res.private],[mem.res.pool.mem],[mem.res.monotonic.buffer] fix cross-references
+
+commit 1d467a8a06cabd314e250a04ca9a4c81591d035a
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Thu Nov 23 15:31:45 2017 -0400
+
+ [func.require] Clarify which assignment operators
+
+commit 9dbbf9cbbe6994f7d4ad19098029e995eb34e1c3
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Sat Nov 25 19:04:08 2017 -0400
+
+ [unord.req, fs.path.io] Fix "Effects: Equivalent to" styles (#1806)
+
+commit efdda2b9ca7f0ed78d7f134d8b1ca2e405610190
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 25 22:57:08 2017 +0100
+
+ [lib] Harmonize punctuation of 'Effects: Equivalent to' (#1815)
+
+commit 63ccd0513f6d9ac3555ca8becfcd7d15ed503522
+Author: stbergmann <sbergman@redhat.com>
+Date: Sat Nov 25 03:33:31 2017 +0100
+
+ [basic.types] Add missing "be" in note (#1839)
+
+commit 9a8f4fde487200bcf4433facb0274f67d540617c
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 25 03:29:09 2017 +0100
+
+ [lex.ccon] Align char16_t phrasing to UTF-8 one (#1847)
+
+commit 784f8c9980a74393ceaf201b343aa232a82113a4
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Fri Nov 24 01:03:52 2017 +0000
+
+ [complex{,.special,.members}] Use injected-class-name in class definitions and itemdecls
+
+commit 877918fdc3e5223006b782d3c5959470bd7c02a8
+Author: Jonathan Wakely <github@kayari.org>
+Date: Fri Nov 24 00:57:49 2017 +0000
+
+ [allocator.requirements] Fix pointer_to expression and reinstate descriptive variable 'r' (#1656)
+
+commit 2ca4340d93ec4cd63c330303e5beef20db8604df
+Author: Jonathan Wakely <github@kayari.org>
+Date: Thu Nov 23 22:48:22 2017 +0000
+
+ [vector.bool] Use injected-class-name in synopsis (#1844)
+
+commit 4eedcb0d29f7c3b143dc3492caecb9c608590e12
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Nov 22 19:26:28 2017 -0800
+
+ [diff.cpp17.library] Add Annex C entry for new headers <compare> and
+ <syncstream> added since C++17.
+
+commit 9112c6aecc48e1a0deea1f9493de224a43689a87
+Author: Aaron Ballman <aballman@grammatech.com>
+Date: Mon Mar 13 09:51:35 2017 -0400
+
+ Use the terms "single-object delete expression" and
+ "array delete expression" as definitions, removing
+ the italics when not appropriate.
+
+commit b3b8a19812829ab521958eed6b2f1a3411180cdb
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Sun Nov 19 22:17:17 2017 +0000
+
+ [structure.summary] Remove obsolete paragraph about Note(s): and Example(s): elements that we no longer provide
+
+ Also restyle a manual Note: in [unord.req] to use the standard note environment.
+
+commit 8958e953fd2cd60bd02ed4fcd2c055eded6e0f4d
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Tue Nov 21 23:28:52 2017 +0000
+
+ [unord.req] Spell out the behaviour of cbegin/cend, remove ambiguous note
+
+commit b64354a7503c1cdc358d7f5dd1405ed903e170ef
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Nov 22 12:10:00 2017 +0000
+
+ [depr.meta.types] Merge POD deprecation into existing type traits deprecation section and reorganize the section a bit
+
+commit 374252a76008ac0316320d2dd4e8652910539a97
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Nov 22 01:01:39 2017 +0100
+
+ [util.sharedptr] Dissolve subclause and integrate contents into parent. (#1814)
+
+commit 75c0adccb38301f66979cc3c3ab5cd15a0a75a17
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Nov 21 23:29:05 2017 +0100
+
+ [expr, over] Add cross-references for 'usual arithmetic conversions'. (#1804)
+
+commit 7670c1a8e025aa464fe5bebff7ae2626fb01b07f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Feb 7 11:10:48 2017 +0100
+
+ [structure.specifications] Do not use library description macros in running text
+
+ This avoids colons in running text and some bad spacing.
+
+commit deb9fb19a039dbcd943a5955064d8c0e3d55a45c
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Sat Mar 4 06:46:30 2017 -1000
+
+ Consistent comma after e.g. and i.e.
+
+ After grepping to determine the preferred idiom, it seems clear that
+ the standard prefers to follow both e.g. and i.e. with a comma, rather
+ than omit it. This patch applies that rule to the few places that
+ were missing the comma.
+
+commit e1b92d6c125ef43e19915ba0b031baa2c6611c62
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Tue Nov 21 18:01:18 2017 +0000
+
+ [over.match.best] Remove meaningless "i.e."
+
+commit 72b80b32c7ab185cc08eb72cf24ce6d839f7e6f3
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Tue Nov 21 16:19:36 2017 +0000
+
+ [alg.partition] Use established terminology 'partitioned with respect to'
+
+commit b4a1e3c1c73531f3a61ae6e44abecab766e9c537
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Tue Nov 21 15:52:31 2017 +0000
+
+ [binary.search] Formulate partitioning requirements in the same style as all the other related algorithms do
+
+commit b1fd50580cf389c61635a5767bf46b1b8823ce0c
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Nov 21 13:04:27 2017 +0100
+
+ [expr.compound] Expression operators do not 'return' results. (#1818)
+
+commit 68e53321ed7bf8505748e0f69947e21f9374d3a2
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Tue Nov 21 08:02:52 2017 -0400
+
+ [strings.general] Use plural "string classes" (#1823)
+
+ The summary even says "string classes", and now we also have the "string_view classes".
+
+commit a5c25539b2605d8e6817b43d48e359d24642d1b7
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Nov 21 11:46:26 2017 +0100
+
+ [variant] Move 'Otherwise' to start of following bullet. (#1813)
+
+commit e13e3097e6c92f67b86458af9a3d4793b0aeb544
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Tue Nov 21 01:49:37 2017 +0000
+
+ [utilities] Add missing charconv entry to summary table
+
+commit cbd25c4b3e6f83aaf2fa9fe894ff52b1f428a8c5
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Sun Nov 12 00:37:09 2017 -0700
+
+ Hyphenate 'pointer-to-member' when it is an adjective and define the adjective.
+
+ Fixes #1369.
+
+commit 801fb0ba013362cede5a9eaeae0da688e554d3ad
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Nov 12 06:51:19 2017 +0100
+
+ [conv.rank] Move from [conv] to [basic.types] (#1802)
+
+commit ff65cec7b977db1a6900b0321f10c91e152ab8d2
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Nov 1 23:39:21 2017 +0100
+
+ Use 'trailing requires-clause'
+
+ where the requires-clause in a template-head is not meant.
+
+ Fixes #1672.
+
+commit 672bb6075cb0512a234b4f6bdd41f00cc01e6642
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Apr 19 23:03:42 2017 +0200
+
+ [dcl.init] Clarify introduction
+
+ Fixes #1615.
+
+commit 7c6f936298543387f2f17563f01e95fce904783d
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Nov 2 22:18:04 2017 +0100
+
+ [array] Dissolve single-item subclauses.
+
+ Partially addresses #1242.
+
+commit 04c4e8338eadb18deb63354a95c2624ef5b3fbed
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 11 19:34:18 2017 +0100
+
+ [intro.execution] Clarify full-expression in example.
+
+ Fixes #1706.
+
+commit 2e25955ecf6a576c98590097ec76aa616495c466
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 11 07:29:23 2017 +0100
+
+ [expr] Add subclauses and adjust cross-references to [expr].
+
+ Also move [basic.lval] into [expr].
+
+commit 87c88e99620ecbc3958dc0e06d86aa72806206c4
+Author: Casey Carter <Casey@Carter.net>
+Date: Sat Nov 11 21:48:25 2017 -0700
+
+ [algorithms.general] & [algorithm.syn] name "mutating sequence operations" consistently (#1801)
+
+ Despite the stable name "alg.modifying.operations," the section is titled "Mutating sequence operations."
+
+commit 0963b3d26dcce7dff2b924e4d9d3daff0e1f50d6
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Nov 12 05:32:46 2017 +0100
+
+ [lib] Harmonize introductory comments in synopses (#1775)
+
+ Even if no section reference is given, make them lowercase
+ and remove trailing colons.
+
+commit 6b6578cc415bf17b237a0889ef2dc53f4b392d02
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Nov 12 05:30:40 2017 +0100
+
+ [locale.moneypunct.virtuals] Add reference to ISO 4217. (#1779)
+
+commit 49870469d0a3347b91e42faa9c931859e924e83e
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Nov 12 04:21:40 2017 +0100
+
+ [lib] Add hyphen to 'well-defined' (#1776)
+
+commit 982a456f176ca00409c6e514af932051dce2485f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 11 05:06:58 2017 +0100
+
+ [intro], [basic] Rearrange subclauses
+
+ Fixes #1539.
+
+commit 301a71e35c49fafe2188736aff2631f36c81dd47
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Fri Nov 10 23:55:37 2017 -0800
+
+ [basic.lookup.argdep] Correct xref to point to the normative invisible
+ friend rule.
+
+commit 4f77c89e7635c8a9f361a0757c7765bcefeacd5e
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Thu Nov 9 17:33:33 2017 -0700
+
+ [over.built] Improve placeholder phrasing
+
+commit 24bfe67b857bc6634ffc796324999373352d6d72
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Nov 8 23:50:33 2017 -0700
+
+ [meta.endian] Clarify wording regarding size of scalar types
+
+commit 7a7d123584613a90cc64dbfb4b848807c3f085c8
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Wed Nov 8 01:50:47 2017 -0400
+
+ [any.class] Revert dot to comma typo from bdff8687c (#1795)
+
+commit ee8aa525e65ada1f1949ebc9eb006af8b29f7e85
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Wed Nov 8 00:13:27 2017 +0000
+
+ [basic.ios.members], [streambuf.virt.put], [cmplx.over] replace enumerated lists with itemized
+
+commit 6ca5523589f8eb8d2843fe34386382a34064f41d
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Tue Nov 7 23:24:36 2017 +0000
+
+ [fstream], [fs.class.directory_entry] qualify filesystem::path consistently
+
+commit b4acb0ca022f5b4e8a535a164c845ab87e312a1f
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Nov 7 08:56:03 2017 -0800
+
+ [basic.def] Fix typo "braced-enclosed".
+
+commit b174bd63680803b18f1ebce4d743b13c257cd3bf
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Thu Nov 2 18:54:45 2017 +0000
+
+ [defns.referenceable] Remove duplicate 'an'
+
+commit f0b892320c609974270ccd415ecef081529e664f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Nov 2 03:19:54 2017 +0100
+
+ [array.size] Remove full member declaration from itemdecl. (#1790)
+
+commit ea4b17a448b46671488b96812629d92c0c9c61be
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Oct 27 00:53:45 2017 +0200
+
+ [expr.prim.lambda.capture] Move discusssion of capture-by-reference of references
+
+ to after the introduction of 'capture by reference'.
+
+ Fixes #1785.
+
diff --git a/papers/n4714.md b/papers/n4714.md
new file mode 100644
index 0000000000..3d220ec6e4
--- /dev/null
+++ b/papers/n4714.md
@@ -0,0 +1,591 @@
+# N4714 Editors' Report -- Programming Languages -- C++
+
+2017-11-27
+Richard Smith (editor) (Google Inc)
+Dawn Perchik (co-editor) (Embarcadero Technologies Inc)
+Thomas Köppe (co-editor) (Google DeepMind)
+``
+
+## Acknowledgements
+
+Special thanks to
+Jens Maurer
+for performing many of the editorial fixes since N4700.
+
+Thanks to all those who have [submitted editorial
+issues](https://github.com/cplusplus/draft/wiki/How-to-submit-an-editorial-issue)
+and to those who have provided pull requests with fixes.
+
+## New papers
+
+ * [N4713](http://wg21.link/n4713) is the current working draft for C++20. It replaces [N4700](http://wg21.link/n4700).
+ * N4714 is this Editors' Report.
+
+## Motions incorporated into working draft
+
+### Core working group motions
+
+CWG motion 1: [Core issue resolution](http://wg21.link/p0817r0) for 1 issue in "ready" status applied:
+
+ * [2342](http://wg21.link/cwg2342) Reference `reinterpret_cast` and pointer-interconvertibility
+
+CWG motion 2: [Core issue resolutions](http://wg21.link/p0818r1) for 7 issues in "tentatively ready" status applied:
+
+ * [1862](http://wg21.link/cwg1862) Determining "corresponding members" for friendship
+ * [2177](http://wg21.link/cwg2177) Placement `operator delete` and parameter copies
+ * [2305](http://wg21.link/cwg2305) Explicit instantiation of `constexpr` or `inline` variable template
+ * [2307](http://wg21.link/cwg2307) Unclear definition of "equivalent to a nontype template parameter"
+ * [2313](http://wg21.link/cwg2313) Redeclaration of structured binding reference variables
+ * [2315](http://wg21.link/cwg2315) What is the "corresponding special member" of a variant member?
+ * [2338](http://wg21.link/cwg2338) Undefined behavior converting to short enums with fixed underlying types
+
+CWG motion 3: [P0614R1 "Range-based `for` statements with initializer"](http://wg21.link/p0614r1)
+
+CWG motion 4: [P0588R1 "Simplifying implicit lambda capture"](http://wg21.link/p0588r1)
+
+CWG motion 5: [P0846R0 "ADL and function templates that are not visible"](http://wg21.link/p0846r0)
+
+CWG motion 6: [P0641R2 "Resolving core issue #1331"](http://wg21.link/p0641r2), resolving 1 core issue:
+
+ * [1331](http://wg21.link/cwg1331) `const` mismatch with defaulted copy constructor
+
+CWG motion 7: [P0859R0 "Core issue 1581"](http://wg21.link/p0859r0), resolving 1 core issue:
+
+ * [1581](http://wg21.link/cwg1581) When are `constexpr` member functions defined?
+
+CWG motion 8: [P0515R3 "Consistent comparison"](http://wg21.link/p0515r3) and [P0768R1 "Library support for the spaceship (comparison) operator"](http://wg21.link/p0768r1)
+
+CWG motion 9: [P0857R0 "Functionality gaps in constraints"](http://wg21.link/p0857r0)
+
+CWG motion 10: [P0692R1 "Access checking on specializations"](http://wg21.link/p0692r1)
+
+CWG motion 11: [P0624R2 "Default constructible and assignable stateless lambdas"](http://wg21.link/p0624r2)
+
+CWG motion 12: [P0767R1 "Deprecate POD"](http://wg21.link/p0767r1)
+
+CWG motion 13: [P0315R4 "Lambdas in unevaluated contexts"](http://wg21.link/p0315r4)
+
+### Library working group motions
+
+LWG motion 1 and 2 apply to the Parallelism TS.
+
+LWG motion 3 applies to the Networking TS.
+
+LWG motion 4: [Library issue resolutions](http://wg21.link/p0815r0) for 24 issues in "Ready" or "Tentatively Ready" status applied:
+
+ * [2870](http://wg21.link/lwg2870) Default value of parameter `theta` of `polar` should be dependent
+ * [2935](http://wg21.link/lwg2935) What should `create_directories` do when `p` already exists but is not a directory?
+ * [2941](http://wg21.link/lwg2941) [thread.req.timing] wording should apply to both member and namespace-level functions
+ * [2944](http://wg21.link/lwg2944) [LWG 2905](http://wg21.link/lwg2905) accidentally removed requirement that construction of the deleter doesn't throw an exception
+ * [2945](http://wg21.link/lwg2945) Order of template parameters in `optional` comparisons
+ * [2948](http://wg21.link/lwg2948) `unique_ptr` does not define `operator<<` for stream output
+ * [2950](http://wg21.link/lwg2950) `std::byte` operations are misspecified
+ * [2952](http://wg21.link/lwg2952) `iterator_traits` should work for pointers to *cv* `T`
+ * [2953](http://wg21.link/lwg2953) [LWG 2853](http://wg21.link/lwg2853) should apply to `deque::erase` too
+ * [2964](http://wg21.link/lwg2964) Apparently redundant requirement for `dynamic_pointer_cast`
+ * [2965](http://wg21.link/lwg2965) Non-existing `path::native_string()` in `filesystem_error::what()` specification
+ * [2972](http://wg21.link/lwg2972) What is `is_trivially_destructible_v`?
+ * [2976](http://wg21.link/lwg2976) Dangling `uses_allocator` specialization for `packaged_task`
+ * [2977](http://wg21.link/lwg2977) `unordered_`*meow*`::merge()` has incorrect **Throws:** clause
+ * [2978](http://wg21.link/lwg2978) Hash support for `pmr::string` and friends
+ * [2979](http://wg21.link/lwg2979) `aligned_union` should require complete object types
+ * [2980](http://wg21.link/lwg2980) Cannot `compare_exchange` empty pointers
+ * [2981](http://wg21.link/lwg2981) Remove redundant deduction guides from standard library
+ * [2982](http://wg21.link/lwg2982) Making `size_type` consistent in associative container deduction guides
+ * [2988](http://wg21.link/lwg2988) Clause 32 cleanup missed one `typename`
+ * [2993](http://wg21.link/lwg2993) `reference_wrapper` conversion from `T&&`
+ * [2998](http://wg21.link/lwg2998) Requirements on function objects passed to {`forward_`,}`list`-specific algorithms
+ * [3001](http://wg21.link/lwg3001) `weak_ptr::element_type` needs `remove_extent_t`
+ * [3024](http://wg21.link/lwg3024) `variant`'s copies must be deleted instead of disabled via SFINAE
+
+LWG motion 5: [Library issue resolution](http://wg21.link/p0864r0) for 1 issue in "Immediate" status applied:
+
+ * [2958](http://wg21.link/2958) Moves improperly defined as deleted
+
+LWG motion 6: [P0550R2 "Transformation trait `remove_cvref`"](http://wg21.link/p0550r2)
+
+LWG motion 7: [P0777R1 "Treating unnecessary `decay`"](http://wg21.link/p0777r1)
+
+LWG motion 8: [P0600R1 "`[[nodiscard]]` in the Library"](http://wg21.link/p0600r1)
+
+Do not try and apply LWG motion 9 to the working draft. That's impossible.
+Instead, only realize the truth. There is no LWG motion 9.
+
+LWG motion 10: [P0439R0 "Make `std::memory_order` a scoped enumeration"](http://wg21.link/p0439r0)
+
+LWG motion 11: [P0053R7 "Synchronized buffered `ostream`"](http://wg21.link/p0053r7)
+
+LWG motion 12: [P0653R2 "Utility to convert a pointer to a raw pointer"](http://wg21.link/p0653r2)
+
+LWG motion 13: [P0202R3 "Add `constexpr` modifiers to functions in `` and `` Headers"](http://wg21.link/p0202r3)
+
+LWG motion 14: [P0415R1 "`constexpr` for `std::complex`"](http://wg21.link/p0415r1)
+
+LWG motion 15: [P0718R2 "Atomic `shared_ptr`"](http://wg21.link/p0718r2)
+
+LWG motion 16: [P0020R6 "Floating point atomic"](http://wg21.link/p0020r6)
+
+LWG motion 17: [P0616R0 "De-pessimize legacy `` algorithms with `std::move`"](http://wg21.link/p0616r0)
+
+LWG motion 18: [P0457R2 "String prefix and suffix checking"](http://wg21.link/p0457r2)
+
+## Notable editorial changes
+
+### CWG motion 8
+
+Instead of removing [operators] and adding a new section to [requirements], the
+existing stable name for this section is preserved. This section was moved to
+[description] rather than to [requirements], as it describes a notational
+device used for standard exposition.
+
+[alg.3way] added to [alg.sorting] rather than [alg.nonmodifying] to
+match existing `lexicographical_compare` functions.
+
+### LWG motion 8
+
+`[[nodiscard]]` was inadvertantly omitted from `deque::empty()` in the detailed
+wording changes (but was covered by the general description of the change).
+After consultation with LWG, this oversight has been corrected in the wording.
+
+### LWG motion 10
+
+All references to the existing `memory_order_*` enumerators throughout the
+working draft were updated to use the new scoped enumerator nmaes.
+
+### LWG motion 11
+
+Changes were made to the organization and presentation of the wording
+to fit better into the existing document.
+
+### LWG motion 12
+
+The requested addition to [pointer.traits.function] has been moved into a new
+subclause "Pointer traits optional members" and modified slightly to fit this
+new presentation, as it does not describe a member of the `pointer_traits`
+primary template.
+
+### Text reorganization
+
+In an effort to conform to ISO drafting directives to avoid hanging paragraphs
+(text in subclauses that also contain further nested subclauses) and to remove
+excessive subclause structure, the following changes have been made:
+
+* [intro] and [basic] have been reorganized so that [intro] acts as an
+ introduction to the standard document and [basic] introduces the basic
+ concepts of the standard in an order closer to dependency order
+* [conv.rank] moved from [conv] to [basic.types], as it does not describe a conversion.
+* [expr] has additional subclause structure to partially resolve hanging
+ paragraphs and generally improve its organization
+* [expr] has a new subclause describing properties of expressions, containing
+ some of the prior hanging paragraphs from [expr], as well as [basic.lval]
+* [array], [util.sharedptr] Per-function subclauses have been merged into parent subclause.
+
+### Changes in the style of specification
+
+* Code font is no longer used when referring to non-syntax properties of entities
+ (even when those properties are derived from syntax). This applies to the terms
+ "inline", "friend", "public", "protected", "private", "const object".
+ We generally intend to use code font only when referring specifically
+ to program syntax.
+
+* In library wording, template headers are formatted consistently with no
+ space between the `template` keyword and the `<` token.
+
+Drafting for future standard changes should take the above into account.
+
+### Index of library headers
+
+In order to keep the "Index of library names" focused on listing library names,
+index entries for library headers have been moved to a separate, new "Index of
+library headers".
+
+## Minor editorial fixes
+
+A log of editorial fixes made to the working draft since N4700 is below.
+This list excludes changes
+that do not affect the body text or only affect whitespace or typeface. For a
+complete list including such changes (or for the actual deltas applied by these
+changes), consult the [draft sources on github](https://github.com/cplusplus/draft/compare/n4700...n4713).
+
+ commit 903df06f3e67c9a52539892cb6844b55392c5331
+ Author: Thomas Köppe
+ Date: Mon Nov 27 22:00:03 2017 +0000
+
+ [allocator.adaptor.syn] Delete duplicate declarations of relational operators
+
+ commit cebfe0a09fb56ec33726559c8b6d006dc19e4ab7
+ Author: Jens Maurer
+ Date: Wed Nov 15 23:18:22 2017 +0100
+
+ [temp.constr.order] In definition of 'subsumes', remove
+ confusing introductory paragraph.
+
+ commit 74df95e9e3fad1aa5844c281614bbfffb1cc6189
+ Author: Jens Maurer
+ Date: Wed Nov 22 23:45:18 2017 +0100
+
+ [diff] Introduce numbered paragraphs
+
+ commit e543af304e195ad301da272caa7ef12107077ac0
+ Author: Jens Maurer
+ Date: Sat Nov 25 00:01:36 2017 +0100
+
+ [lib] Harmonize spacing for template headers.
+
+ Use 'template'.
+ Also remove space between two closing template brackets.
+
+ commit b73e56f7a2b92449d9ec4938b01fa7014edad33a
+ Author: Jens Maurer
+ Date: Wed Nov 15 23:26:11 2017 +0100
+
+ [basic.link] Entities declared in an unnamed namespace
+ never have external linkage.
+
+ commit fc16d3133817701a780092cf6456722a40e27d28
+ Author: Jens Maurer
+ Date: Sun Nov 19 23:11:51 2017 +0100
+
+ [temp.arg.explicit] Remove note obsoleted by P0846R0
+
+ commit d29bd8c6591fe74b095e5bd277f986462ba40b24
+ Author: Jens Maurer
+ Date: Sun Nov 26 18:36:42 2017 +0100
+
+ [fs.op.funcs] Separate effects from returns. (#1848)
+
+ commit e2457df32a6ee70417681de10be78eb815a0b22f
+ Author: Jens Maurer
+ Date: Mon Nov 20 10:23:18 2017 +0100
+
+ [complex.numbers] Use \xref for references to the C standard.
+
+ commit bd2ce5c2d4ec26a5c412160ce5983149c510a131
+ Author: Jens Maurer
+ Date: Tue Nov 21 23:35:02 2017 +0100
+
+ Create a new index for library headers
+
+ and remove them from the index of library names.
+
+ commit d1125303456c2305a72baebbb51d80151722f8ab
+ Author: Jonathan Wakely
+ Date: Thu Nov 23 14:33:32 2017 +0000
+
+ [basic.life],[mem.res.private],[mem.res.pool.mem],[mem.res.monotonic.buffer] fix cross-references
+
+ commit 1d467a8a06cabd314e250a04ca9a4c81591d035a
+ Author: Johel Ernesto Guerrero Peña
+ Date: Thu Nov 23 15:31:45 2017 -0400
+
+ [func.require] Clarify which assignment operators
+
+ commit 9dbbf9cbbe6994f7d4ad19098029e995eb34e1c3
+ Author: Johel Ernesto Guerrero Peña
+ Date: Sat Nov 25 19:04:08 2017 -0400
+
+ [unord.req, fs.path.io] Fix "Effects: Equivalent to" styles (#1806)
+
+ commit efdda2b9ca7f0ed78d7f134d8b1ca2e405610190
+ Author: Jens Maurer
+ Date: Sat Nov 25 22:57:08 2017 +0100
+
+ [lib] Harmonize punctuation of 'Effects: Equivalent to' (#1815)
+
+ commit 63ccd0513f6d9ac3555ca8becfcd7d15ed503522
+ Author: stbergmann
+ Date: Sat Nov 25 03:33:31 2017 +0100
+
+ [basic.types] Add missing "be" in note (#1839)
+
+ commit 9a8f4fde487200bcf4433facb0274f67d540617c
+ Author: Jens Maurer
+ Date: Sat Nov 25 03:29:09 2017 +0100
+
+ [lex.ccon] Align char16_t phrasing to UTF-8 one (#1847)
+
+ commit 784f8c9980a74393ceaf201b343aa232a82113a4
+ Author: Thomas Köppe
+ Date: Fri Nov 24 01:03:52 2017 +0000
+
+ [complex{,.special,.members}] Use injected-class-name in class definitions and itemdecls
+
+ commit 877918fdc3e5223006b782d3c5959470bd7c02a8
+ Author: Jonathan Wakely
+ Date: Fri Nov 24 00:57:49 2017 +0000
+
+ [allocator.requirements] Fix pointer_to expression and reinstate descriptive variable 'r' (#1656)
+
+ commit 2ca4340d93ec4cd63c330303e5beef20db8604df
+ Author: Jonathan Wakely
+ Date: Thu Nov 23 22:48:22 2017 +0000
+
+ [vector.bool] Use injected-class-name in synopsis (#1844)
+
+ commit 4eedcb0d29f7c3b143dc3492caecb9c608590e12
+ Author: Richard Smith
+ Date: Wed Nov 22 19:26:28 2017 -0800
+
+ [diff.cpp17.library] Add Annex C entry for new headers and
+ added since C++17.
+
+ commit 9112c6aecc48e1a0deea1f9493de224a43689a87
+ Author: Aaron Ballman
+ Date: Mon Mar 13 09:51:35 2017 -0400
+
+ Use the terms "single-object delete expression" and
+ "array delete expression" as definitions, removing
+ the italics when not appropriate.
+
+ commit b3b8a19812829ab521958eed6b2f1a3411180cdb
+ Author: Thomas Köppe
+ Date: Sun Nov 19 22:17:17 2017 +0000
+
+ [structure.summary] Remove obsolete paragraph about Note(s): and Example(s): elements that we no longer provide
+
+ Also restyle a manual Note: in [unord.req] to use the standard note environment.
+
+ commit 8958e953fd2cd60bd02ed4fcd2c055eded6e0f4d
+ Author: Thomas Köppe
+ Date: Tue Nov 21 23:28:52 2017 +0000
+
+ [unord.req] Spell out the behaviour of cbegin/cend, remove ambiguous note
+
+ commit b64354a7503c1cdc358d7f5dd1405ed903e170ef
+ Author: Thomas Köppe
+ Date: Wed Nov 22 12:10:00 2017 +0000
+
+ [depr.meta.types] Merge POD deprecation into existing type traits deprecation section and reorganize the section a bit
+
+ commit 374252a76008ac0316320d2dd4e8652910539a97
+ Author: Jens Maurer
+ Date: Wed Nov 22 01:01:39 2017 +0100
+
+ [util.sharedptr] Dissolve subclause and integrate contents into parent. (#1814)
+
+ commit 75c0adccb38301f66979cc3c3ab5cd15a0a75a17
+ Author: Jens Maurer
+ Date: Tue Nov 21 23:29:05 2017 +0100
+
+ [expr, over] Add cross-references for 'usual arithmetic conversions'. (#1804)
+
+ commit 7670c1a8e025aa464fe5bebff7ae2626fb01b07f
+ Author: Jens Maurer
+ Date: Tue Feb 7 11:10:48 2017 +0100
+
+ [structure.specifications] Do not use library description macros in running text
+
+ This avoids colons in running text and some bad spacing.
+
+ commit deb9fb19a039dbcd943a5955064d8c0e3d55a45c
+ Author: Alisdair Meredith
+ Date: Sat Mar 4 06:46:30 2017 -1000
+
+ Consistent comma after e.g. and i.e.
+
+ After grepping to determine the preferred idiom, it seems clear that
+ the standard prefers to follow both e.g. and i.e. with a comma, rather
+ than omit it. This patch applies that rule to the few places that
+ were missing the comma.
+
+ commit e1b92d6c125ef43e19915ba0b031baa2c6611c62
+ Author: Thomas Köppe
+ Date: Tue Nov 21 18:01:18 2017 +0000
+
+ [over.match.best] Remove meaningless "i.e."
+
+ commit 72b80b32c7ab185cc08eb72cf24ce6d839f7e6f3
+ Author: Thomas Köppe
+ Date: Tue Nov 21 16:19:36 2017 +0000
+
+ [alg.partition] Use established terminology 'partitioned with respect to'
+
+ commit b4a1e3c1c73531f3a61ae6e44abecab766e9c537
+ Author: Thomas Köppe
+ Date: Tue Nov 21 15:52:31 2017 +0000
+
+ [binary.search] Formulate partitioning requirements in the same style as all the other related algorithms do
+
+ commit b1fd50580cf389c61635a5767bf46b1b8823ce0c
+ Author: Jens Maurer
+ Date: Tue Nov 21 13:04:27 2017 +0100
+
+ [expr.compound] Expression operators do not 'return' results. (#1818)
+
+ commit 68e53321ed7bf8505748e0f69947e21f9374d3a2
+ Author: Johel Ernesto Guerrero Peña
+ Date: Tue Nov 21 08:02:52 2017 -0400
+
+ [strings.general] Use plural "string classes" (#1823)
+
+ The summary even says "string classes", and now we also have the "string_view classes".
+
+ commit a5c25539b2605d8e6817b43d48e359d24642d1b7
+ Author: Jens Maurer
+ Date: Tue Nov 21 11:46:26 2017 +0100
+
+ [variant] Move 'Otherwise' to start of following bullet. (#1813)
+
+ commit e13e3097e6c92f67b86458af9a3d4793b0aeb544
+ Author: Thomas Köppe
+ Date: Tue Nov 21 01:49:37 2017 +0000
+
+ [utilities] Add missing charconv entry to summary table
+
+ commit cbd25c4b3e6f83aaf2fa9fe894ff52b1f428a8c5
+ Author: Thomas Köppe
+ Date: Sun Nov 12 00:37:09 2017 -0700
+
+ Hyphenate 'pointer-to-member' when it is an adjective and define the adjective.
+
+ Fixes #1369.
+
+ commit 801fb0ba013362cede5a9eaeae0da688e554d3ad
+ Author: Jens Maurer
+ Date: Sun Nov 12 06:51:19 2017 +0100
+
+ [conv.rank] Move from [conv] to [basic.types] (#1802)
+
+ commit ff65cec7b977db1a6900b0321f10c91e152ab8d2
+ Author: Jens Maurer
+ Date: Wed Nov 1 23:39:21 2017 +0100
+
+ Use 'trailing requires-clause'
+
+ where the requires-clause in a template-head is not meant.
+
+ Fixes #1672.
+
+ commit 672bb6075cb0512a234b4f6bdd41f00cc01e6642
+ Author: Jens Maurer
+ Date: Wed Apr 19 23:03:42 2017 +0200
+
+ [dcl.init] Clarify introduction
+
+ Fixes #1615.
+
+ commit 7c6f936298543387f2f17563f01e95fce904783d
+ Author: Jens Maurer
+ Date: Thu Nov 2 22:18:04 2017 +0100
+
+ [array] Dissolve single-item subclauses.
+
+ Partially addresses #1242.
+
+ commit 04c4e8338eadb18deb63354a95c2624ef5b3fbed
+ Author: Jens Maurer
+ Date: Sat Nov 11 19:34:18 2017 +0100
+
+ [intro.execution] Clarify full-expression in example.
+
+ Fixes #1706.
+
+ commit 2e25955ecf6a576c98590097ec76aa616495c466
+ Author: Jens Maurer
+ Date: Sat Nov 11 07:29:23 2017 +0100
+
+ [expr] Add subclauses and adjust cross-references to [expr].
+
+ Also move [basic.lval] into [expr].
+
+ commit 87c88e99620ecbc3958dc0e06d86aa72806206c4
+ Author: Casey Carter
+ Date: Sat Nov 11 21:48:25 2017 -0700
+
+ [algorithms.general] & [algorithm.syn] name "mutating sequence operations" consistently (#1801)
+
+ Despite the stable name "alg.modifying.operations," the section is titled "Mutating sequence operations."
+
+ commit 0963b3d26dcce7dff2b924e4d9d3daff0e1f50d6
+ Author: Jens Maurer
+ Date: Sun Nov 12 05:32:46 2017 +0100
+
+ [lib] Harmonize introductory comments in synopses (#1775)
+
+ Even if no section reference is given, make them lowercase
+ and remove trailing colons.
+
+ commit 6b6578cc415bf17b237a0889ef2dc53f4b392d02
+ Author: Jens Maurer
+ Date: Sun Nov 12 05:30:40 2017 +0100
+
+ [locale.moneypunct.virtuals] Add reference to ISO 4217. (#1779)
+
+ commit 49870469d0a3347b91e42faa9c931859e924e83e
+ Author: Jens Maurer
+ Date: Sun Nov 12 04:21:40 2017 +0100
+
+ [lib] Add hyphen to 'well-defined' (#1776)
+
+ commit 982a456f176ca00409c6e514af932051dce2485f
+ Author: Jens Maurer
+ Date: Sat Nov 11 05:06:58 2017 +0100
+
+ [intro], [basic] Rearrange subclauses
+
+ Fixes #1539.
+
+ commit 301a71e35c49fafe2188736aff2631f36c81dd47
+ Author: Richard Smith
+ Date: Fri Nov 10 23:55:37 2017 -0800
+
+ [basic.lookup.argdep] Correct xref to point to the normative invisible
+ friend rule.
+
+ commit 4f77c89e7635c8a9f361a0757c7765bcefeacd5e
+ Author: Thomas Köppe
+ Date: Thu Nov 9 17:33:33 2017 -0700
+
+ [over.built] Improve placeholder phrasing
+
+ commit 24bfe67b857bc6634ffc796324999373352d6d72
+ Author: Thomas Köppe
+ Date: Wed Nov 8 23:50:33 2017 -0700
+
+ [meta.endian] Clarify wording regarding size of scalar types
+
+ commit 7a7d123584613a90cc64dbfb4b848807c3f085c8
+ Author: Johel Ernesto Guerrero Peña
+ Date: Wed Nov 8 01:50:47 2017 -0400
+
+ [any.class] Revert dot to comma typo from bdff8687c (#1795)
+
+ commit ee8aa525e65ada1f1949ebc9eb006af8b29f7e85
+ Author: Jonathan Wakely
+ Date: Wed Nov 8 00:13:27 2017 +0000
+
+ [basic.ios.members], [streambuf.virt.put], [cmplx.over] replace enumerated lists with itemized
+
+ commit 6ca5523589f8eb8d2843fe34386382a34064f41d
+ Author: Jonathan Wakely
+ Date: Tue Nov 7 23:24:36 2017 +0000
+
+ [fstream], [fs.class.directory_entry] qualify filesystem::path consistently
+
+ commit b4acb0ca022f5b4e8a535a164c845ab87e312a1f
+ Author: Richard Smith
+ Date: Tue Nov 7 08:56:03 2017 -0800
+
+ [basic.def] Fix typo "braced-enclosed".
+
+ commit b174bd63680803b18f1ebce4d743b13c257cd3bf
+ Author: Thomas Köppe
+ Date: Thu Nov 2 18:54:45 2017 +0000
+
+ [defns.referenceable] Remove duplicate 'an'
+
+ commit f0b892320c609974270ccd415ecef081529e664f
+ Author: Jens Maurer
+ Date: Thu Nov 2 03:19:54 2017 +0100
+
+ [array.size] Remove full member declaration from itemdecl. (#1790)
+
+ commit ea4b17a448b46671488b96812629d92c0c9c61be
+ Author: Jens Maurer
+ Date: Fri Oct 27 00:53:45 2017 +0200
+
+ [expr.prim.lambda.capture] Move discusssion of capture-by-reference of references
+
+ to after the introduction of 'capture by reference'.
+
+ Fixes #1785.
diff --git a/source/Makefile b/source/Makefile
index a3f9033b4b..62957b3d6a 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -38,10 +38,12 @@ reindex:
$(STDPDF)
$(STDPDF)
makeindex generalindex
+ makeindex headerindex
makeindex libraryindex
makeindex grammarindex
makeindex impldefindex
makeindex -s basic.gst -o xrefindex.gls xrefindex.glo
+ makeindex -s basic.gst -o xrefdelta.gls xrefdelta.glo
$(STDPDF)
$(STDPDF)
diff --git a/source/access.tex b/source/access.tex
index d43b9f468e..c94a55d832 100644
--- a/source/access.tex
+++ b/source/access.tex
@@ -12,18 +12,18 @@
\begin{itemize}
\item
\indextext{access control!\idxcode{private}}%
-\tcode{private};
+private;
that is, its name can be used only by members and friends
of the class in which it is declared.
\item
\indextext{access control!\idxcode{protected}}%
-\tcode{protected};
+protected;
that is, its name can be used only by members and friends
of the class in which it is declared, by classes derived from that class, and by their
friends (see~\ref{class.protected}).
\item
\indextext{access control!\idxcode{public}}%
-\tcode{public};
+public;
that is, its name can be used anywhere without access restriction.
\end{itemize}
@@ -44,12 +44,8 @@
\tcode{private}
by default.
Members of a class defined with the keywords
-\tcode{struct}
-or
-\tcode{union}
-are
-\tcode{public}
-by default.
+\tcode{struct} or \tcode{union}
+are public by default.
\begin{example}
\begin{codeblock}
@@ -68,8 +64,7 @@
referred to from declarations or expressions.
\begin{note}
Access control applies to names nominated by
-\tcode{friend}
-declarations\iref{class.friend} and
+friend declarations\iref{class.friend} and
\grammarterm{using-declaration}{s}\iref{namespace.udecl}.
\end{note}
In the case of overloaded function names, access control is applied to
@@ -200,7 +195,7 @@
(\ref{class.derived}):
\begin{ncbnftab}
-access-specifier \terminal{:} member-specification\opt
+access-specifier \terminal{:} \opt{member-specification}
\end{ncbnftab}
An
@@ -289,35 +284,23 @@
If a class is declared to be a base class\iref{class.derived} for another class using the
\tcode{public}
access specifier, the
-\tcode{public}
-members of the base class are accessible as
-\tcode{public}
-members of the derived class and
-\tcode{protected}
-members of the base class are accessible as
-\tcode{protected}
-members of the derived class.
+public members of the base class are accessible as
+public members of the derived class and
+protected members of the base class are accessible as
+protected members of the derived class.
If a class is declared to be a base class for another class using the
\tcode{protected}
access specifier, the
-\tcode{public}
-and
-\tcode{protected}
-members of the base class are accessible as
-\tcode{protected}
-members of the derived class.
+public and protected members of the base class are accessible as
+protected members of the derived class.
If a class is declared to be a base class for another class using the
-\tcode{private}
+private
access specifier, the
-\tcode{public}
-and
-\tcode{protected}
-members of the base class are accessible as
-\tcode{private}
+public and protected
+members of the base class are accessible as private
members of the derived class.\footnote{As specified previously in \ref{class.access},
private members of a base class remain inaccessible even to derived classes
-unless
-\tcode{friend}
+unless friend
declarations within the base class definition are used to grant access explicitly.}
\pnum
@@ -673,7 +656,7 @@
\end{example}
\pnum
-A \tcode{friend} declaration that does not declare a function
+A friend declaration that does not declare a function
shall have one of the following forms:
\begin{ncsimplebnf}
@@ -682,12 +665,12 @@
\terminal{friend} typename-specifier \terminal{;}
\end{ncsimplebnf}
-\begin{note} A \tcode{friend} declaration may be the
+\begin{note} A friend declaration may be the
\term{declaration} in a \grammarterm{template-declaration}
(\ref{temp}, \ref{temp.friend}).\end{note} If the
type specifier in a \tcode{friend} declaration designates a (possibly
cv-qualified) class type, that class is declared as a friend; otherwise, the
-\tcode{friend} declaration is ignored. \begin{example}
+friend declaration is ignored. \begin{example}
\begin{codeblock}
class C;
@@ -720,8 +703,7 @@
\pnum
\indextext{declaration!overloaded name and \tcode{friend}}%
-When a
-\tcode{friend}
+When a friend
declaration refers to an overloaded name or operator, only the function specified
by the parameter types becomes a friend.
A member function of a class
@@ -758,8 +740,7 @@
\pnum
Such a function is implicitly an inline function\iref{dcl.inline}.
-A
-\tcode{friend}
+A friend
function defined in a class is in the (lexical) scope of the class in which it is defined.
A friend function defined outside the class is not\iref{basic.lookup.unqual}.
@@ -775,11 +756,7 @@
A name nominated by a friend declaration shall be accessible in the scope of the
class containing the friend declaration.
The meaning of the friend declaration is the same whether the friend declaration
-appears in the
-\tcode{private},
-\tcode{protected}
-or
-\tcode{public}\iref{class.mem}
+appears in the private, protected, or public\iref{class.mem}
portion of the class
\grammarterm{member-specification}.
diff --git a/source/algorithms.tex b/source/algorithms.tex
index 7d3ea7f46e..5eee152e6a 100644
--- a/source/algorithms.tex
+++ b/source/algorithms.tex
@@ -4,13 +4,13 @@
\rSec1[algorithms.general]{General}
\pnum
-This Clause describes components that \Cpp programs may use to perform
+This Clause describes components that \Cpp{} programs may use to perform
algorithmic operations on containers\iref{containers} and other sequences.
\pnum
The following subclauses describe components for
non-modifying sequence operations,
-modifying sequence operations,
+mutating sequence operations,
sorting and related operations,
and algorithms from the ISO C library,
as summarized in Table~\ref{tab:algorithms.summary}.
@@ -23,8 +23,7 @@
\end{libsumtab}
\rSec1[algorithm.syn]{Header \tcode{} synopsis}
-\indextext{\idxhdr{algorithm}}%
-\indexlibrary{\idxhdr{algorithm}}%
+\indexhdr{algorithm}%
\begin{codeblock}
#include
@@ -32,56 +31,56 @@
namespace std {
// \ref{alg.nonmodifying}, non-modifying sequence operations
// \ref{alg.all_of}, all of
- template
- bool all_of(InputIterator first, InputIterator last, Predicate pred);
- template
+ template
+ constexpr bool all_of(InputIterator first, InputIterator last, Predicate pred);
+ template
bool all_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last, Predicate pred);
// \ref{alg.any_of}, any of
- template
- bool any_of(InputIterator first, InputIterator last, Predicate pred);
- template
+ template
+ constexpr bool any_of(InputIterator first, InputIterator last, Predicate pred);
+ template
bool any_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last, Predicate pred);
// \ref{alg.none_of}, none of
- template
- bool none_of(InputIterator first, InputIterator last, Predicate pred);
- template
+ template
+ constexpr bool none_of(InputIterator first, InputIterator last, Predicate pred);
+ template
bool none_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last, Predicate pred);
// \ref{alg.foreach}, for each
template
- Function for_each(InputIterator first, InputIterator last, Function f);
+ constexpr Function for_each(InputIterator first, InputIterator last, Function f);
template
void for_each(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last, Function f);
template
- InputIterator for_each_n(InputIterator first, Size n, Function f);
+ constexpr InputIterator for_each_n(InputIterator first, Size n, Function f);
template
ForwardIterator for_each_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, Size n, Function f);
// \ref{alg.find}, find
template
- InputIterator find(InputIterator first, InputIterator last,
- const T& value);
+ constexpr InputIterator find(InputIterator first, InputIterator last,
+ const T& value);
template
ForwardIterator find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
const T& value);
template
- InputIterator find_if(InputIterator first, InputIterator last,
- Predicate pred);
+ constexpr InputIterator find_if(InputIterator first, InputIterator last,
+ Predicate pred);
template
ForwardIterator find_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
Predicate pred);
template
- InputIterator find_if_not(InputIterator first, InputIterator last,
- Predicate pred);
+ constexpr InputIterator find_if_not(InputIterator first, InputIterator last,
+ Predicate pred);
template
ForwardIterator find_if_not(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
@@ -89,11 +88,11 @@
// \ref{alg.find.end}, find end
template
- ForwardIterator1
+ constexpr ForwardIterator1
find_end(ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
template
- ForwardIterator1
+ constexpr ForwardIterator1
find_end(ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2,
BinaryPredicate pred);
@@ -112,11 +111,11 @@
// \ref{alg.find.first.of}, find first
template
- InputIterator
+ constexpr InputIterator
find_first_of(InputIterator first1, InputIterator last1,
ForwardIterator first2, ForwardIterator last2);
template
- InputIterator
+ constexpr InputIterator
find_first_of(InputIterator first1, InputIterator last1,
ForwardIterator first2, ForwardIterator last2,
BinaryPredicate pred);
@@ -135,53 +134,53 @@
// \ref{alg.adjacent.find}, adjacent find
template
- ForwardIterator adjacent_find(ForwardIterator first,
- ForwardIterator last);
+ constexpr ForwardIterator
+ adjacent_find(ForwardIterator first, ForwardIterator last);
template
- ForwardIterator adjacent_find(ForwardIterator first,
- ForwardIterator last,
- BinaryPredicate pred);
+ constexpr ForwardIterator
+ adjacent_find(ForwardIterator first, ForwardIterator last,
+ BinaryPredicate pred);
template
- ForwardIterator adjacent_find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first,
- ForwardIterator last);
+ ForwardIterator
+ adjacent_find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator first, ForwardIterator last);
template
- ForwardIterator adjacent_find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first,
- ForwardIterator last,
- BinaryPredicate pred);
+ ForwardIterator
+ adjacent_find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator first, ForwardIterator last,
+ BinaryPredicate pred);
// \ref{alg.count}, count
template
- typename iterator_traits::difference_type
+ constexpr typename iterator_traits::difference_type
count(InputIterator first, InputIterator last, const T& value);
template
typename iterator_traits::difference_type
count(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last, const T& value);
template
- typename iterator_traits::difference_type
+ constexpr typename iterator_traits::difference_type
count_if(InputIterator first, InputIterator last, Predicate pred);
template
typename iterator_traits::difference_type
count_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first, ForwardIterator last, Predicate pred);
+ ForwardIterator first, ForwardIterator last, Predicate pred);
// \ref{mismatch}, mismatch
template
- pair
+ constexpr pair
mismatch(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2);
template
- pair
+ constexpr pair
mismatch(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, BinaryPredicate pred);
template
- pair
+ constexpr pair
mismatch(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2);
template
- pair
+ constexpr pair
mismatch(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
BinaryPredicate pred);
@@ -211,18 +210,18 @@
// \ref{alg.equal}, equal
template
- bool equal(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2);
+ constexpr bool equal(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2);
template
- bool equal(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, BinaryPredicate pred);
+ constexpr bool equal(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, BinaryPredicate pred);
template
- bool equal(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2);
+ constexpr bool equal(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2);
template
- bool equal(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- BinaryPredicate pred);
+ constexpr bool equal(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ BinaryPredicate pred);
template
bool equal(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator1 first1, ForwardIterator1 last1,
@@ -245,108 +244,110 @@
// \ref{alg.is_permutation}, is permutation
template
- bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2);
+ constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2);
template
- bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, BinaryPredicate pred);
-
+ constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, BinaryPredicate pred);
template
- bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2);
-
+ constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2);
template
- bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- BinaryPredicate pred);
+ constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ BinaryPredicate pred);
// \ref{alg.search}, search
template
- ForwardIterator1 search(
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2);
+ constexpr ForwardIterator1
+ search(ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2);
template
- ForwardIterator1 search(
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- BinaryPredicate pred);
+ constexpr ForwardIterator1
+ search(ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ BinaryPredicate pred);
template
- ForwardIterator1 search(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2);
+ ForwardIterator1
+ search(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2);
template
- ForwardIterator1 search(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- BinaryPredicate pred);
+ ForwardIterator1
+ search(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ BinaryPredicate pred);
template
- ForwardIterator search_n(ForwardIterator first, ForwardIterator last,
- Size count, const T& value);
+ constexpr ForwardIterator
+ search_n(ForwardIterator first, ForwardIterator last,
+ Size count, const T& value);
template
- ForwardIterator search_n(ForwardIterator first, ForwardIterator last,
- Size count, const T& value,
- BinaryPredicate pred);
+ constexpr ForwardIterator
+ search_n(ForwardIterator first, ForwardIterator last,
+ Size count, const T& value,
+ BinaryPredicate pred);
template
- ForwardIterator search_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first, ForwardIterator last,
- Size count, const T& value);
+ ForwardIterator
+ search_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator first, ForwardIterator last,
+ Size count, const T& value);
template
- ForwardIterator search_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first, ForwardIterator last,
- Size count, const T& value,
- BinaryPredicate pred);
+ ForwardIterator
+ search_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator first, ForwardIterator last,
+ Size count, const T& value,
+ BinaryPredicate pred);
- template
- ForwardIterator search(ForwardIterator first, ForwardIterator last,
- const Searcher& searcher);
+ template
+ constexpr ForwardIterator
+ search(ForwardIterator first, ForwardIterator last, const Searcher& searcher);
- // \ref{alg.modifying.operations}, modifying sequence operations
+ // \ref{alg.modifying.operations}, mutating sequence operations
// \ref{alg.copy}, copy
template
- OutputIterator copy(InputIterator first, InputIterator last,
- OutputIterator result);
+ constexpr OutputIterator copy(InputIterator first, InputIterator last,
+ OutputIterator result);
template
ForwardIterator2 copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator1 first, ForwardIterator1 last,
ForwardIterator2 result);
template
- OutputIterator copy_n(InputIterator first, Size n,
- OutputIterator result);
+ constexpr OutputIterator copy_n(InputIterator first, Size n,
+ OutputIterator result);
template
ForwardIterator2 copy_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator1 first, Size n,
ForwardIterator2 result);
template
- OutputIterator copy_if(InputIterator first, InputIterator last,
- OutputIterator result, Predicate pred);
+ constexpr OutputIterator copy_if(InputIterator first, InputIterator last,
+ OutputIterator result, Predicate pred);
template
ForwardIterator2 copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator1 first, ForwardIterator1 last,
ForwardIterator2 result, Predicate pred);
template
- BidirectionalIterator2 copy_backward(
- BidirectionalIterator1 first, BidirectionalIterator1 last,
- BidirectionalIterator2 result);
+ constexpr BidirectionalIterator2
+ copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last,
+ BidirectionalIterator2 result);
// \ref{alg.move}, move
template
- OutputIterator move(InputIterator first, InputIterator last,
- OutputIterator result);
+ constexpr OutputIterator move(InputIterator first, InputIterator last,
+ OutputIterator result);
template
ForwardIterator2 move(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator1 first, ForwardIterator1 last,
ForwardIterator2 result);
template
- BidirectionalIterator2 move_backward(
- BidirectionalIterator1 first, BidirectionalIterator1 last,
- BidirectionalIterator2 result);
+ constexpr BidirectionalIterator2
+ move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last,
+ BidirectionalIterator2 result);
// \ref{alg.swap}, swap
template
@@ -361,53 +362,57 @@
// \ref{alg.transform}, transform
template
- OutputIterator transform(InputIterator first, InputIterator last,
- OutputIterator result, UnaryOperation op);
+ constexpr OutputIterator
+ transform(InputIterator first, InputIterator last,
+ OutputIterator result, UnaryOperation op);
template
- OutputIterator transform(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, OutputIterator result,
- BinaryOperation binary_op);
+ constexpr OutputIterator
+ transform(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, OutputIterator result,
+ BinaryOperation binary_op);
template
- ForwardIterator2 transform(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first, ForwardIterator1 last,
- ForwardIterator2 result, UnaryOperation op);
+ ForwardIterator2
+ transform(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first, ForwardIterator1 last,
+ ForwardIterator2 result, UnaryOperation op);
template
- ForwardIterator transform(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator result,
- BinaryOperation binary_op);
+ ForwardIterator
+ transform(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator result,
+ BinaryOperation binary_op);
// \ref{alg.replace}, replace
template
- void replace(ForwardIterator first, ForwardIterator last,
- const T& old_value, const T& new_value);
+ constexpr void replace(ForwardIterator first, ForwardIterator last,
+ const T& old_value, const T& new_value);
template
void replace(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
const T& old_value, const T& new_value);
template
- void replace_if(ForwardIterator first, ForwardIterator last,
- Predicate pred, const T& new_value);
+ constexpr void replace_if(ForwardIterator first, ForwardIterator last,
+ Predicate pred, const T& new_value);
template
void replace_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
Predicate pred, const T& new_value);
template
- OutputIterator replace_copy(InputIterator first, InputIterator last,
- OutputIterator result,
- const T& old_value, const T& new_value);
+ constexpr OutputIterator replace_copy(InputIterator first, InputIterator last,
+ OutputIterator result,
+ const T& old_value, const T& new_value);
template
ForwardIterator2 replace_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator1 first, ForwardIterator1 last,
ForwardIterator2 result,
const T& old_value, const T& new_value);
template
- OutputIterator replace_copy_if(InputIterator first, InputIterator last,
- OutputIterator result,
- Predicate pred, const T& new_value);
+ constexpr OutputIterator replace_copy_if(InputIterator first, InputIterator last,
+ OutputIterator result,
+ Predicate pred, const T& new_value);
template
ForwardIterator2 replace_copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
@@ -417,70 +422,73 @@
// \ref{alg.fill}, fill
template
- void fill(ForwardIterator first, ForwardIterator last, const T& value);
- template
+ constexpr void fill(ForwardIterator first, ForwardIterator last, const T& value);
+ template
void fill(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last, const T& value);
template
- OutputIterator fill_n(OutputIterator first, Size n, const T& value);
+ constexpr OutputIterator fill_n(OutputIterator first, Size n, const T& value);
template
ForwardIterator fill_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first, Size n, const T& value);
+ ForwardIterator first, Size n, const T& value);
// \ref{alg.generate}, generate
template
- void generate(ForwardIterator first, ForwardIterator last,
- Generator gen);
+ constexpr void generate(ForwardIterator first, ForwardIterator last,
+ Generator gen);
template
void generate(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
Generator gen);
template
- OutputIterator generate_n(OutputIterator first, Size n, Generator gen);
+ constexpr OutputIterator generate_n(OutputIterator first, Size n, Generator gen);
template
ForwardIterator generate_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, Size n, Generator gen);
// \ref{alg.remove}, remove
template
- ForwardIterator remove(ForwardIterator first, ForwardIterator last,
- const T& value);
+ constexpr ForwardIterator remove(ForwardIterator first, ForwardIterator last,
+ const T& value);
template
ForwardIterator remove(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
const T& value);
template
- ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,
- Predicate pred);
+ constexpr ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,
+ Predicate pred);
template
ForwardIterator remove_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
Predicate pred);
template
- OutputIterator remove_copy(InputIterator first, InputIterator last,
- OutputIterator result, const T& value);
+ constexpr OutputIterator
+ remove_copy(InputIterator first, InputIterator last,
+ OutputIterator result, const T& value);
template
- ForwardIterator2 remove_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first, ForwardIterator1 last,
- ForwardIterator2 result, const T& value);
+ ForwardIterator2
+ remove_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first, ForwardIterator1 last,
+ ForwardIterator2 result, const T& value);
template
- OutputIterator remove_copy_if(InputIterator first, InputIterator last,
- OutputIterator result, Predicate pred);
+ constexpr OutputIterator
+ remove_copy_if(InputIterator first, InputIterator last,
+ OutputIterator result, Predicate pred);
template
- ForwardIterator2 remove_copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first, ForwardIterator1 last,
- ForwardIterator2 result, Predicate pred);
+ ForwardIterator2
+ remove_copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first, ForwardIterator1 last,
+ ForwardIterator2 result, Predicate pred);
// \ref{alg.unique}, unique
template
- ForwardIterator unique(ForwardIterator first, ForwardIterator last);
+ constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last);
template
- ForwardIterator unique(ForwardIterator first, ForwardIterator last,
- BinaryPredicate pred);
+ constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last,
+ BinaryPredicate pred);
template
ForwardIterator unique(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last);
@@ -489,20 +497,24 @@
ForwardIterator first, ForwardIterator last,
BinaryPredicate pred);
template
- OutputIterator unique_copy(InputIterator first, InputIterator last,
- OutputIterator result);
+ constexpr OutputIterator
+ unique_copy(InputIterator first, InputIterator last,
+ OutputIterator result);
template
- OutputIterator unique_copy(InputIterator first, InputIterator last,
- OutputIterator result, BinaryPredicate pred);
+ constexpr OutputIterator
+ unique_copy(InputIterator first, InputIterator last,
+ OutputIterator result, BinaryPredicate pred);
template
- ForwardIterator2 unique_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first, ForwardIterator1 last,
- ForwardIterator2 result);
+ ForwardIterator2
+ unique_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first, ForwardIterator1 last,
+ ForwardIterator2 result);
template
- ForwardIterator2 unique_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first, ForwardIterator1 last,
- ForwardIterator2 result, BinaryPredicate pred);
+ ForwardIterator2
+ unique_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first, ForwardIterator1 last,
+ ForwardIterator2 result, BinaryPredicate pred);
// \ref{alg.reverse}, reverse
template
@@ -511,14 +523,14 @@
void reverse(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
BidirectionalIterator first, BidirectionalIterator last);
template
- OutputIterator reverse_copy(BidirectionalIterator first,
- BidirectionalIterator last,
- OutputIterator result);
+ constexpr OutputIterator
+ reverse_copy(BidirectionalIterator first, BidirectionalIterator last,
+ OutputIterator result);
template
- ForwardIterator reverse_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- BidirectionalIterator first,
- BidirectionalIterator last,
- ForwardIterator result);
+ ForwardIterator
+ reverse_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ BidirectionalIterator first, BidirectionalIterator last,
+ ForwardIterator result);
// \ref{alg.rotate}, rotate
template
@@ -531,14 +543,14 @@
ForwardIterator middle,
ForwardIterator last);
template
- OutputIterator rotate_copy(
- ForwardIterator first, ForwardIterator middle,
- ForwardIterator last, OutputIterator result);
+ constexpr OutputIterator
+ rotate_copy(ForwardIterator first, ForwardIterator middle,
+ ForwardIterator last, OutputIterator result);
template
- ForwardIterator2 rotate_copy(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first, ForwardIterator1 middle,
- ForwardIterator1 last, ForwardIterator2 result);
+ ForwardIterator2
+ rotate_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first, ForwardIterator1 middle,
+ ForwardIterator1 last, ForwardIterator2 result);
// \ref{alg.random.sample}, sample
template
- bool is_partitioned(InputIterator first, InputIterator last, Predicate pred);
- template
+ template
+ constexpr bool is_partitioned(InputIterator first, InputIterator last, Predicate pred);
+ template
bool is_partitioned(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last, Predicate pred);
@@ -578,23 +590,23 @@
BidirectionalIterator first,
BidirectionalIterator last,
Predicate pred);
- template
- pair
+ template
+ constexpr pair
partition_copy(InputIterator first, InputIterator last,
OutputIterator1 out_true, OutputIterator2 out_false,
Predicate pred);
- template
+ template
pair
partition_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
ForwardIterator1 out_true, ForwardIterator2 out_false,
Predicate pred);
template
- ForwardIterator partition_point(ForwardIterator first,
- ForwardIterator last,
- Predicate pred);
+ constexpr ForwardIterator
+ partition_point(ForwardIterator first, ForwardIterator last,
+ Predicate pred);
// \ref{alg.sorting}, sorting and related operations
// \ref{alg.sort}, sorting
@@ -643,35 +655,35 @@
RandomAccessIterator middle,
RandomAccessIterator last, Compare comp);
template
- RandomAccessIterator partial_sort_copy(
- InputIterator first, InputIterator last,
- RandomAccessIterator result_first,
- RandomAccessIterator result_last);
+ RandomAccessIterator
+ partial_sort_copy(InputIterator first, InputIterator last,
+ RandomAccessIterator result_first,
+ RandomAccessIterator result_last);
template
- RandomAccessIterator partial_sort_copy(
- InputIterator first, InputIterator last,
- RandomAccessIterator result_first,
- RandomAccessIterator result_last,
- Compare comp);
+ RandomAccessIterator
+ partial_sort_copy(InputIterator first, InputIterator last,
+ RandomAccessIterator result_first,
+ RandomAccessIterator result_last,
+ Compare comp);
template
- RandomAccessIterator partial_sort_copy(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first, ForwardIterator last,
- RandomAccessIterator result_first,
- RandomAccessIterator result_last);
+ RandomAccessIterator
+ partial_sort_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator first, ForwardIterator last,
+ RandomAccessIterator result_first,
+ RandomAccessIterator result_last);
template
- RandomAccessIterator partial_sort_copy(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first, ForwardIterator last,
- RandomAccessIterator result_first,
- RandomAccessIterator result_last,
- Compare comp);
+ RandomAccessIterator
+ partial_sort_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator first, ForwardIterator last,
+ RandomAccessIterator result_first,
+ RandomAccessIterator result_last,
+ Compare comp);
template
- bool is_sorted(ForwardIterator first, ForwardIterator last);
+ constexpr bool is_sorted(ForwardIterator first, ForwardIterator last);
template
- bool is_sorted(ForwardIterator first, ForwardIterator last,
- Compare comp);
+ constexpr bool is_sorted(ForwardIterator first, ForwardIterator last,
+ Compare comp);
template
bool is_sorted(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last);
@@ -680,17 +692,21 @@
ForwardIterator first, ForwardIterator last,
Compare comp);
template
- ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last);
+ constexpr ForwardIterator
+ is_sorted_until(ForwardIterator first, ForwardIterator last);
template
- ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last,
- Compare comp);
+ constexpr ForwardIterator
+ is_sorted_until(ForwardIterator first, ForwardIterator last,
+ Compare comp);
template
- ForwardIterator is_sorted_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first, ForwardIterator last);
+ ForwardIterator
+ is_sorted_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator first, ForwardIterator last);
template
- ForwardIterator is_sorted_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator first, ForwardIterator last,
- Compare comp);
+ ForwardIterator
+ is_sorted_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator first, ForwardIterator last,
+ Compare comp);
// \ref{alg.nth.element}, Nth element
template
@@ -710,57 +726,67 @@
// \ref{alg.binary.search}, binary search
template
- ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,
- const T& value);
+ constexpr ForwardIterator
+ lower_bound(ForwardIterator first, ForwardIterator last,
+ const T& value);
template
- ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,
- const T& value, Compare comp);
+ constexpr ForwardIterator
+ lower_bound(ForwardIterator first, ForwardIterator last,
+ const T& value, Compare comp);
template
- ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,
- const T& value);
+ constexpr ForwardIterator
+ upper_bound(ForwardIterator first, ForwardIterator last,
+ const T& value);
template
- ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,
- const T& value, Compare comp);
+ constexpr ForwardIterator
+ upper_bound(ForwardIterator first, ForwardIterator last,
+ const T& value, Compare comp);
template
- pair
+ constexpr pair
equal_range(ForwardIterator first, ForwardIterator last,
const T& value);
template
- pair
+ constexpr pair
equal_range(ForwardIterator first, ForwardIterator last,
const T& value, Compare comp);
template
- bool binary_search(ForwardIterator first, ForwardIterator last,
- const T& value);
+ constexpr bool
+ binary_search(ForwardIterator first, ForwardIterator last,
+ const T& value);
template
- bool binary_search(ForwardIterator first, ForwardIterator last,
- const T& value, Compare comp);
+ constexpr bool
+ binary_search(ForwardIterator first, ForwardIterator last,
+ const T& value, Compare comp);
// \ref{alg.merge}, merge
template
- OutputIterator merge(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
+ constexpr OutputIterator
+ merge(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result);
template
- OutputIterator merge(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
+ constexpr OutputIterator
+ merge(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result, Compare comp);
template
- ForwardIterator merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result);
+ ForwardIterator
+ merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result);
template
- ForwardIterator merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result, Compare comp);
+ ForwardIterator
+ merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result, Compare comp);
template
void inplace_merge(BidirectionalIterator first,
@@ -783,11 +809,12 @@
// \ref{alg.set.operations}, set operations
template
- bool includes(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2);
+ constexpr bool includes(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2);
template
- bool includes(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2, Compare comp);
+ constexpr bool includes(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ Compare comp);
template
bool includes(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator1 first1, ForwardIterator1 last1,
@@ -796,103 +823,108 @@
class Compare>
bool includes(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2, Compare comp);
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ Compare comp);
template
- OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
+ constexpr OutputIterator
+ set_union(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result);
template
- OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
+ constexpr OutputIterator
+ set_union(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result, Compare comp);
template
- ForwardIterator set_union(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result);
+ ForwardIterator
+ set_union(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result);
template
- ForwardIterator set_union(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result, Compare comp);
+ ForwardIterator
+ set_union(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result, Compare comp);
template
- OutputIterator set_intersection(
- InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
+ constexpr OutputIterator
+ set_intersection(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result);
template
- OutputIterator set_intersection(
- InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
+ constexpr OutputIterator
+ set_intersection(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result, Compare comp);
template
- ForwardIterator set_intersection(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result);
+ ForwardIterator
+ set_intersection(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result);
template
- ForwardIterator set_intersection(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result, Compare comp);
+ ForwardIterator
+ set_intersection(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result, Compare comp);
template
- OutputIterator set_difference(
- InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
+ constexpr OutputIterator
+ set_difference(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result);
template
- OutputIterator set_difference(
- InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
+ constexpr OutputIterator
+ set_difference(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result, Compare comp);
template
- ForwardIterator set_difference(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result);
+ ForwardIterator
+ set_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result);
template
- ForwardIterator set_difference(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result, Compare comp);
+ ForwardIterator
+ set_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result, Compare comp);
template
- OutputIterator set_symmetric_difference(
- InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
+ constexpr OutputIterator
+ set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result);
template
- OutputIterator set_symmetric_difference(
- InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
+ constexpr OutputIterator
+ set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,
+ InputIterator2 first2, InputIterator2 last2,
+ OutputIterator result, Compare comp);
template
- ForwardIterator set_symmetric_difference(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result);
+ ForwardIterator
+ set_symmetric_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result);
template
- ForwardIterator set_symmetric_difference(
- ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
- ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- ForwardIterator result, Compare comp);
+ ForwardIterator
+ set_symmetric_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
+ ForwardIterator1 first1, ForwardIterator1 last1,
+ ForwardIterator2 first2, ForwardIterator2 last2,
+ ForwardIterator result, Compare comp);
// \ref{alg.heap.operations}, heap operations
template
@@ -920,27 +952,33 @@
Compare comp);
template
- bool is_heap(RandomAccessIterator first, RandomAccessIterator last);
+ constexpr bool is_heap(RandomAccessIterator first, RandomAccessIterator last);
template