├── report ├── .gitignore ├── header.html.in ├── Makefile └── pandoc-template.html ├── ext ├── us2 │ ├── .gitignore │ ├── config.tex │ ├── front.tex │ ├── cover-wd.tex │ ├── layout.tex │ └── us2.tex ├── adaptors │ ├── .gitignore │ ├── gram.files │ ├── tags.files │ ├── files │ ├── config.tex │ ├── acknowledgements.tex │ ├── front.tex │ ├── back.tex │ ├── cover-wd.tex │ ├── LEWG 20171107 feedback.md │ ├── Makefile │ ├── D0789R3.bib │ ├── layout.tex │ └── D0789R3.tex ├── integrate │ ├── .gitignore │ ├── gram.files │ ├── files │ ├── acknowledgements.tex │ ├── config.tex │ ├── front.tex │ ├── back.tex │ ├── Makefile │ ├── cover-wd.tex │ ├── layout.tex │ ├── D1037.bib │ └── D1037.tex ├── omnibus │ ├── .gitignore │ ├── Makefile │ ├── header.html.in │ └── pandoc-template.html ├── writable │ ├── .gitignore │ ├── Makefile │ ├── header.html.in │ └── pandoc-template.html ├── constructible │ ├── .gitignore │ ├── pandoc.css │ ├── Makefile │ ├── header.html.in │ └── pandoc-template.html ├── stdconcepts │ ├── .gitignore │ ├── gram.files │ ├── files │ ├── config.tex │ ├── front.tex │ ├── tags.files │ ├── back.tex │ ├── stdconcepts.bib │ ├── cover-wd.tex │ ├── Makefile │ ├── layout.tex │ ├── numerics.tex │ ├── 20180607 LWG review changes.txt │ ├── stdconcepts.tex │ └── cover-reg.tex ├── memory-specialisations │ ├── .gitignore │ ├── config.tex │ ├── acknowledgements.tex │ ├── front.tex │ ├── Makefile │ ├── d1033.bib │ ├── cover-proposal.tex │ ├── layout.tex │ ├── d1033.tex │ └── intro.tex ├── merge2std2 │ ├── .gitignore │ ├── config.tex │ ├── acknowledgements.tex │ ├── front.tex │ ├── back.tex │ ├── threads.tex │ ├── support.tex │ ├── compatibility.tex │ ├── Makefile │ ├── numerics.tex │ ├── cover-wd.tex │ ├── layout.tex │ ├── containers.tex │ ├── P0896.bib │ ├── strings.tex │ ├── P0896.tex │ └── cover-reg.tex ├── constexpr │ ├── .gitignore │ ├── cook │ ├── pandoc.css │ ├── header.html.in │ ├── Makefile │ └── pandoc-template.html ├── range_access │ ├── acknowledgements.tex │ ├── config.tex │ ├── front.tex │ ├── back.tex │ ├── cover-wd.tex │ ├── Makefile │ ├── D0970R1.bib │ ├── layout.tex │ └── D0970R1.tex ├── post_inc │ ├── pandoc.css │ ├── Makefile │ ├── header.html │ ├── header.html.in │ └── pandoc-template.html ├── proxy │ ├── pandoc.css │ ├── make.cmd │ ├── build.sh │ ├── header.html │ └── pandoc-template.html ├── range_for │ ├── pandoc.css │ ├── make.cmd │ ├── header.html │ └── pandoc-template.html └── variable_concepts │ ├── pandoc.css │ ├── Makefile │ ├── header.html │ ├── header.html.in │ └── pandoc-template.html ├── gram.files ├── tools ├── xrefend.tex ├── maketags ├── indexheader.sed ├── tags ├── grama.sed ├── gramb.sed ├── makegram ├── makexref ├── xref.sed ├── gram.sed ├── alphabet ├── findreqs.sh ├── arrangearray.pl ├── xrefbegin.tex ├── changemarks.sh ├── grambase.tex └── sections.cpp ├── ready ├── .gitignore ├── cook ├── pandoc.css ├── header.html.in ├── Makefile └── pandoc-template.html ├── review ├── proxy iterators review kona.txt ├── proxy iterators review kona jacksonville.txt ├── ranges issue processing 2016.11.12.txt ├── ranges review jacksonville.txt ├── ranges telecon 2.txt ├── 20180110 Pre-JAX planning.md ├── proxy iterators review telecon 9-16-2016.txt ├── ranges telecon 3.txt ├── 201703 kona ranges review (P0541 and P0547).txt ├── proxy iterators detailed review.txt ├── ranges review issaquah.txt ├── mclow DTS review.txt └── 201811 San Diego review.md ├── .gitattributes ├── files ├── config.tex ├── front.tex ├── tags.files ├── back.tex ├── cover-wd.tex ├── ranges.bib ├── acknowledgements.tex ├── Makefile ├── .gitignore ├── numerics.tex ├── layout.tex ├── ranges.tex └── cover-reg.tex /report/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | -------------------------------------------------------------------------------- /ext/us2/.gitignore: -------------------------------------------------------------------------------- 1 | us2.pdf 2 | -------------------------------------------------------------------------------- /gram.files: -------------------------------------------------------------------------------- 1 | statements.tex 2 | -------------------------------------------------------------------------------- /ext/adaptors/.gitignore: -------------------------------------------------------------------------------- 1 | D0789*.pdf 2 | -------------------------------------------------------------------------------- /ext/adaptors/gram.files: -------------------------------------------------------------------------------- 1 | statements.tex -------------------------------------------------------------------------------- /ext/integrate/.gitignore: -------------------------------------------------------------------------------- 1 | D1037.pdf 2 | -------------------------------------------------------------------------------- /ext/integrate/gram.files: -------------------------------------------------------------------------------- 1 | statements.tex -------------------------------------------------------------------------------- /ext/omnibus/.gitignore: -------------------------------------------------------------------------------- 1 | header.html 2 | -------------------------------------------------------------------------------- /ext/writable/.gitignore: -------------------------------------------------------------------------------- 1 | header.html 2 | -------------------------------------------------------------------------------- /tools/xrefend.tex: -------------------------------------------------------------------------------- 1 | \end{multicols} 2 | 3 | -------------------------------------------------------------------------------- /ext/constructible/.gitignore: -------------------------------------------------------------------------------- 1 | header.html 2 | -------------------------------------------------------------------------------- /ext/stdconcepts/.gitignore: -------------------------------------------------------------------------------- 1 | stdconcepts.pdf 2 | -------------------------------------------------------------------------------- /ext/stdconcepts/gram.files: -------------------------------------------------------------------------------- 1 | statements.tex 2 | -------------------------------------------------------------------------------- /ext/memory-specialisations/.gitignore: -------------------------------------------------------------------------------- 1 | d1033.pdf 2 | -------------------------------------------------------------------------------- /ext/merge2std2/.gitignore: -------------------------------------------------------------------------------- 1 | *.ext 2 | *.pdf 3 | *.xtr 4 | -------------------------------------------------------------------------------- /ready/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | raw.txt 3 | cooked.txt 4 | -------------------------------------------------------------------------------- /ext/constexpr/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | raw.txt 3 | cooked.txt 4 | -------------------------------------------------------------------------------- /ext/adaptors/tags.files: -------------------------------------------------------------------------------- 1 | acknowledgements.aux 2 | back.aux 3 | front.aux 4 | intro.aux -------------------------------------------------------------------------------- /ext/adaptors/files: -------------------------------------------------------------------------------- 1 | acknowledgements.tex 2 | front.tex 3 | intro.tex 4 | back.tex 5 | cover-wd.tex -------------------------------------------------------------------------------- /ext/integrate/files: -------------------------------------------------------------------------------- 1 | acknowledgements.tex 2 | front.tex 3 | intro.tex 4 | back.tex 5 | cover-wd.tex -------------------------------------------------------------------------------- /tools/maketags: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | $TOOLS/tags $(cat ./tags.files) | grep -v "^tab:" | grep -v "^defns" > tags.txt 3 | -------------------------------------------------------------------------------- /tools/indexheader.sed: -------------------------------------------------------------------------------- 1 | s/\(.*\) indexheader/\\par \\textbf\{\1\}\\par/ 2 | 3 | s/\(.*\) xref/\1\\quad\\ref\{\1\}\\\\/ 4 | -------------------------------------------------------------------------------- /review/proxy iterators review kona.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ericniebler/stl2/HEAD/review/proxy iterators review kona.txt -------------------------------------------------------------------------------- /tools/tags: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | while(<>) { 3 | if (/\\newlabel\{([^{}]*)(\{(.)\})?}\{\{([^}]*)/) { print "$1$3 $4\n"; } 4 | } 5 | -------------------------------------------------------------------------------- /tools/grama.sed: -------------------------------------------------------------------------------- 1 | # remove index "see" entries 2 | /\\index.*|see/d 3 | 4 | # insert newlines after groups 5 | /\\end/s/\(.*\)/\1\ 6 | / 7 | -------------------------------------------------------------------------------- /tools/gramb.sed: -------------------------------------------------------------------------------- 1 | # copy bnftab groups: 2 | /^\\end{bnftab}/a\ 3 | 4 | # copy simplebnf groups: 5 | /^\\end{simplebnf}/a\ 6 | 7 | # copy bnf groups: 8 | /^\\end{bnf}/a\ 9 | 10 | -------------------------------------------------------------------------------- /ext/range_access/acknowledgements.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stl2-ts.tex 2 | \infannex{acknowledgements}{Acknowledgements} 3 | 4 | This work was made possible by the support of my employer, Facebook. 5 | -------------------------------------------------------------------------------- /tools/makegram: -------------------------------------------------------------------------------- 1 | export LC_ALL=C 2 | cp $TOOLS/grambase.tex grammar.tex 3 | cat $(cat ./gram.files) | sed -n -f $TOOLS/gram.sed | sed -f $TOOLS/grama.sed | sed -f $TOOLS/gramb.sed >> grammar.tex 4 | -------------------------------------------------------------------------------- /ext/adaptors/config.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D0789R3.tex 2 | %%-------------------------------------------------- 3 | %% Version numbers 4 | \newcommand{\docno}{D0789R3} 5 | \newcommand{\cppver}{201402L} 6 | 7 | %% Release date 8 | \newcommand{\reldate}{\today} 9 | -------------------------------------------------------------------------------- /ext/memory-specialisations/config.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %%-------------------------------------------------- 3 | %% Version numbers 4 | \newcommand{\docno}{} 5 | \newcommand{\cppver}{20170XL} 6 | 7 | %% Release date 8 | \newcommand{\reldate}{\today} 9 | -------------------------------------------------------------------------------- /ext/range_access/config.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D0970R1.tex 2 | %%-------------------------------------------------- 3 | %% Version numbers 4 | \newcommand{\docno}{D0970R1} 5 | \newcommand{\cppver}{201402L} 6 | 7 | %% Release date 8 | \newcommand{\reldate}{\today} 9 | -------------------------------------------------------------------------------- /tools/makexref: -------------------------------------------------------------------------------- 1 | export LC_ALL=C 2 | cp $TOOLS/xrefbegin.tex xref.tex 3 | cp $TOOLS/alphabet xref.tmp 4 | cat $(cat ./files) | sed -n -f $TOOLS/xref.sed >> xref.tmp 5 | sort -f < xref.tmp | sed -f $TOOLS/indexheader.sed >> xref.tex 6 | cat $TOOLS/xrefend.tex >> xref.tex 7 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.hpp text 2 | *.cpp text 3 | *.txt text 4 | *.html text 5 | *.md text 6 | *.yml text 7 | *.xml text 8 | *.in text 9 | .gitattributes text 10 | .gitignore text 11 | 12 | *.cmd -text 13 | *.sln -text 14 | *.vcxproj -text 15 | *.vcxproj.filters -text 16 | -------------------------------------------------------------------------------- /ext/adaptors/acknowledgements.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stl2-ts.tex 2 | \setcounter{chapter}{0} 3 | \infannex{acknowledgements}{Acknowledgements} 4 | 5 | This work was made possible in part by a grant from the Standard C++ 6 | Foundation, and by the support of my employer, Facebook. 7 | -------------------------------------------------------------------------------- /ext/integrate/acknowledgements.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stl2-ts.tex 2 | \setcounter{chapter}{0} 3 | \infannex{acknowledgements}{Acknowledgements} 4 | 5 | This work was made possible in part by a grant from the Standard C++ 6 | Foundation, and by the support of my employer, Facebook. 7 | -------------------------------------------------------------------------------- /ready/cook: -------------------------------------------------------------------------------- 1 | s:\&:\&:g 2 | s:\&nbsp;:\ :g 3 | s:<:\<:g 4 | s:^.+$:> &: 5 | s:^$:> : 6 | s:(unspecified|see below) ;:\1;:g 7 | s:unspecified|see below:&:g 8 | s:--:-\\-:g 9 | s:\*:\\*:g 10 | 11 | : indent 12 | s:((\ )*) :\1\ : 13 | t indent 14 | -------------------------------------------------------------------------------- /ext/constexpr/cook: -------------------------------------------------------------------------------- 1 | s:\&:\&:g 2 | s:\&nbsp;:\ :g 3 | s:<:\<:g 4 | s:^.+$:> &: 5 | s:^$:> : 6 | s:(unspecified|see below) ;:\1;:g 7 | s:unspecified|see below:&:g 8 | s:--:-\\-:g 9 | s:\*:\\*:g 10 | 11 | : indent 12 | s:((\ )*) :\1\ : 13 | t indent 14 | -------------------------------------------------------------------------------- /ext/us2/config.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %%-------------------------------------------------- 3 | %% Version numbers 4 | \newcommand{\docno}{D0662R1} 5 | 6 | %% Release date 7 | \newcommand{\reldate}{\today} 8 | \newcommand{\doctitle}{Wording for Ranges TS Issue 345 / US-2: \\ Update ranged-for-loop wording} 9 | -------------------------------------------------------------------------------- /ext/memory-specialisations/acknowledgements.tex: -------------------------------------------------------------------------------- 1 | \setcounter{chapter}{0} 2 | \infannex{acknowledgements}{Acknowledgements} 3 | 4 | \doccite{N4671 Working Draft, C++ Extensions for Ranges} provided the template for the layout of 5 | P1033. 6 | 7 | Eric Niebler and Tim Song both provided invaluable feedback during the review process of this paper. 8 | -------------------------------------------------------------------------------- /files: -------------------------------------------------------------------------------- 1 | config.tex 2 | front.tex 3 | cover-wd.tex 4 | intro.tex 5 | statements.tex 6 | concepts.tex 7 | iterators.tex 8 | ranges-lib.tex 9 | algorithms.tex 10 | grammar.tex 11 | compatibility.tex 12 | future.tex 13 | back.tex 14 | acknowledgements.tex 15 | deprecated.tex 16 | lib-intro.tex 17 | numerics.tex 18 | utilities.tex 19 | tagged.tex 20 | -------------------------------------------------------------------------------- /ext/stdconcepts/files: -------------------------------------------------------------------------------- 1 | config.tex 2 | front.tex 3 | cover-wd.tex 4 | intro.tex 5 | statements.tex 6 | concepts.tex 7 | iterators.tex 8 | ranges-lib.tex 9 | algorithms.tex 10 | grammar.tex 11 | compatibility.tex 12 | future.tex 13 | back.tex 14 | acknowledgements.tex 15 | deprecated.tex 16 | lib-intro.tex 17 | numerics.tex 18 | utilities.tex 19 | tagged.tex 20 | -------------------------------------------------------------------------------- /tools/xref.sed: -------------------------------------------------------------------------------- 1 | # process ordinary section headers 2 | s/^\\rSec[[:digit:]]\[\([^]]*\)\].*$/\1 xref/p 3 | 4 | # process definitions 5 | s/^\\definition{[^}]*}{\([^}]*\)}.*$/\1 xref/p 6 | 7 | # process informative annex headers 8 | s/^\\infannex{\([^}]*\)}.*$/\1 xref/p 9 | 10 | # process normative annex headers 11 | s/^\\normannex{\([^}]*\)}.*$/\1 xref/p 12 | -------------------------------------------------------------------------------- /ext/integrate/config.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D1037.tex 2 | %%-------------------------------------------------- 3 | %% Version numbers 4 | \newcommand{\docno}{D1037} 5 | \newcommand{\cppver}{202000L} 6 | 7 | %% Release date 8 | \newcommand{\reldate}{\today} 9 | 10 | \newcommand{\firstlibchapter}{ranges.utilities} 11 | \newcommand{\lastlibchapter}{ranges.numerics} 12 | -------------------------------------------------------------------------------- /ext/post_inc/pandoc.css: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /ext/proxy/pandoc.css: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /ext/constexpr/pandoc.css: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /ext/constructible/pandoc.css: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /ext/range_for/pandoc.css: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /ext/variable_concepts/pandoc.css: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /ext/range_for/make.cmd: -------------------------------------------------------------------------------- 1 | @rem pandoc -f markdown_github -t html -o appendices.html --number-sections -s -S appendices.md 2 | pandoc -f markdown_github+yaml_metadata_block+citations -t html -o D0184.html --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html --include-in-header=pandoc.css D0184.md 3 | -------------------------------------------------------------------------------- /tools/gram.sed: -------------------------------------------------------------------------------- 1 | # extract lines marked with '%gram:' 2 | /^%gram:/s/^%gram:[[:space:]]*//p 3 | 4 | # copy bnftab groups: 5 | /^\\begin{bnftab}/,/^\\end{bnftab}/p 6 | 7 | # copy simplebnf groups: 8 | /^\\begin{simplebnf}/,/^\\end{simplebnf}/p 9 | 10 | # copy bnf groups: 11 | /^\\begin{bnf}/,/^\\end{bnf}/p 12 | 13 | # copy bnfkeywordtab groups: 14 | /^\\begin{bnfkeywordtab}/,/^\\end{bnfkeywordtab}/p 15 | -------------------------------------------------------------------------------- /config.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %%-------------------------------------------------- 3 | %% Version numbers 4 | \newcommand{\docno}{N4685} 5 | 6 | %% Release date 7 | \newcommand{\reldate}{\today} 8 | \newcommand{\doctitle}{\Cpp Extensions for Ranges} 9 | \newcommand{\frtitle}{Extensions \Cpp pour les <>} 10 | \newcommand{\firstlibchapter}{concepts.lib} 11 | \newcommand{\lastlibchapter}{numerics} 12 | -------------------------------------------------------------------------------- /ext/proxy/make.cmd: -------------------------------------------------------------------------------- 1 | pandoc -f markdown_github -t html -o appendices.html --number-sections -s -S appendices.md 2 | pandoc -f markdown_github+yaml_metadata_block+citations -t html -o P0022R1.html --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html --include-after-body=appendices.html --include-in-header=pandoc.css Dxxxx.md 3 | -------------------------------------------------------------------------------- /ext/proxy/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | pandoc -f markdown_github -t html -o appendices.html --number-sections -s -S appendices.md 3 | pandoc -f markdown_github+yaml_metadata_block+citations -t html -o P0022R2.html --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html --include-after-body=appendices.html --include-in-header=pandoc.css Dxxxx.md 4 | -------------------------------------------------------------------------------- /ext/stdconcepts/config.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stdconcepts.tex 2 | %%-------------------------------------------------- 3 | %% Version numbers 4 | \newcommand{\docno}{P0898R3} 5 | 6 | %% Release date 7 | \newcommand{\reldate}{\today} 8 | \newcommand{\doctitle}{Standard Library Concepts} 9 | \newcommand{\frtitle}{Standard Library Concepts} 10 | \newcommand{\firstlibchapter}{concepts.lib} 11 | \newcommand{\lastlibchapter}{numerics} 12 | -------------------------------------------------------------------------------- /ext/merge2std2/config.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | %%-------------------------------------------------- 3 | %% Version numbers 4 | \newcommand{\docno}{P0896R4} 5 | 6 | %% Release date 7 | \newcommand{\reldate}{\today} 8 | \newcommand{\doctitle}{Merging the Ranges TS} 9 | \newcommand{\frtitle}{Merging the Ranges TS} 10 | 11 | %% Library chapters 12 | \newcommand{\firstlibchapter}{language.support} 13 | \newcommand{\lastlibchapter}{numerics} 14 | -------------------------------------------------------------------------------- /ext/merge2std2/acknowledgements.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | \infannex{acknowledgements}{Acknowledgements} 3 | 4 | This work was made possible in part by a grant from the Standard C++ 5 | Foundation, and by the support of the authors' employers Facebook and Microsoft. 6 | 7 | We'd like to especially thank R. Tim Song for all of his work documenting Ranges 8 | on cppreference, and for all of the wording and design issues he has found and 9 | reported in the process. 10 | -------------------------------------------------------------------------------- /ext/us2/front.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | \input{cover-wd} 3 | 4 | %%-------------------------------------------------- 5 | %% The table of contents, list of tables, and list of figures 6 | \markboth{\contentsname}{} 7 | 8 | %%-------------------------------------------------- 9 | %% Make a bit more room for our long page numbers. 10 | \makeatletter 11 | \renewcommand\@pnumwidth{2.5em} 12 | \makeatother 13 | 14 | \setcounter{tocdepth}{5} 15 | 16 | %\input{preface} 17 | -------------------------------------------------------------------------------- /front.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | \input{cover-wd} 3 | %\input{cover-reg} 4 | 5 | %%-------------------------------------------------- 6 | %% The table of contents, list of tables, and list of figures 7 | \markboth{\contentsname}{} 8 | 9 | %%-------------------------------------------------- 10 | %% Make a bit more room for our long page numbers. 11 | \makeatletter 12 | \renewcommand\@pnumwidth{2.5em} 13 | \makeatother 14 | 15 | \tableofcontents* 16 | \setcounter{tocdepth}{5} 17 | \newpage 18 | -------------------------------------------------------------------------------- /tools/alphabet: -------------------------------------------------------------------------------- 1 | A indexheader 2 | B indexheader 3 | C indexheader 4 | D indexheader 5 | E indexheader 6 | F indexheader 7 | G indexheader 8 | H indexheader 9 | I indexheader 10 | J indexheader 11 | K indexheader 12 | L indexheader 13 | M indexheader 14 | N indexheader 15 | O indexheader 16 | P indexheader 17 | Q indexheader 18 | R indexheader 19 | S indexheader 20 | T indexheader 21 | U indexheader 22 | V indexheader 23 | W indexheader 24 | X indexheader 25 | Y indexheader 26 | Z indexheader 27 | 28 | -------------------------------------------------------------------------------- /ext/stdconcepts/front.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stdconcepts.tex 2 | \input{cover-wd} 3 | %\input{cover-reg} 4 | 5 | %%-------------------------------------------------- 6 | %% The table of contents, list of tables, and list of figures 7 | \markboth{\contentsname}{} 8 | 9 | %%-------------------------------------------------- 10 | %% Make a bit more room for our long page numbers. 11 | \makeatletter 12 | \renewcommand\@pnumwidth{2.5em} 13 | \makeatother 14 | 15 | \tableofcontents* 16 | \setcounter{tocdepth}{5} 17 | \newpage 18 | -------------------------------------------------------------------------------- /ext/memory-specialisations/front.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | \input{cover-proposal} 3 | 4 | %%-------------------------------------------------- 5 | %% The table of contents, list of tables, and list of figures 6 | %%\markboth{\contentsname}{} 7 | 8 | %%-------------------------------------------------- 9 | %% Make a bit more room for our long page numbers. 10 | \makeatletter 11 | \renewcommand\@pnumwidth{2.5em} 12 | \makeatother 13 | 14 | %%\tableofcontents 15 | %%\setcounter{tocdepth}{5} 16 | 17 | %\input{preface} 18 | -------------------------------------------------------------------------------- /tools/findreqs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Finds instances of requirements (like CopyConstructible) that are not formatted correctly. 3 | 4 | requirements="EqualityComparable LessThanComparable DefaultConstructible MoveConstructible CopyConstructible MoveAssignable CopyAssignable Destructible Swappable NullablePointer ValueSwappable" 5 | # These have too many false positive 6 | more_requirements="Hash Allocator" 7 | 8 | for req in $requirements ; do 9 | grep "\\<$req\\>" *.tex | grep -v "\\tcode{$req}" | grep -v "\\idxcode{$req}" 10 | done -------------------------------------------------------------------------------- /ext/adaptors/front.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D0789R3.tex 2 | \input{cover-wd} 3 | % \input{cover-reg} 4 | 5 | %%-------------------------------------------------- 6 | %% The table of contents, list of tables, and list of figures 7 | \markboth{\contentsname}{} 8 | 9 | %%-------------------------------------------------- 10 | %% Make a bit more room for our long page numbers. 11 | \makeatletter 12 | \renewcommand\@pnumwidth{2.5em} 13 | \makeatother 14 | 15 | \tableofcontents 16 | \setcounter{tocdepth}{5} 17 | % \newpage 18 | % \listoftables 19 | % \newpage 20 | % \listoffigures 21 | 22 | %\input{preface} 23 | -------------------------------------------------------------------------------- /ext/integrate/front.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D1037.tex 2 | \input{cover-wd} 3 | % \input{cover-reg} 4 | 5 | %%-------------------------------------------------- 6 | %% The table of contents, list of tables, and list of figures 7 | \markboth{\contentsname}{} 8 | 9 | %%-------------------------------------------------- 10 | %% Make a bit more room for our long page numbers. 11 | \makeatletter 12 | \renewcommand\@pnumwidth{2.5em} 13 | \makeatother 14 | 15 | \tableofcontents 16 | \setcounter{tocdepth}{5} 17 | % \newpage 18 | % \listoftables 19 | % \newpage 20 | % \listoffigures 21 | 22 | %\input{preface} 23 | -------------------------------------------------------------------------------- /ext/range_access/front.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D0970R1.tex 2 | \input{cover-wd} 3 | % \input{cover-reg} 4 | 5 | %%-------------------------------------------------- 6 | %% The table of contents, list of tables, and list of figures 7 | \markboth{\contentsname}{} 8 | 9 | %%-------------------------------------------------- 10 | %% Make a bit more room for our long page numbers. 11 | \makeatletter 12 | \renewcommand\@pnumwidth{2.5em} 13 | \makeatother 14 | 15 | \tableofcontents 16 | \setcounter{tocdepth}{5} 17 | % \newpage 18 | % \listoftables 19 | % \newpage 20 | % \listoffigures 21 | 22 | %\input{preface} 23 | -------------------------------------------------------------------------------- /ready/pandoc.css: -------------------------------------------------------------------------------- 1 | 32 | -------------------------------------------------------------------------------- /ext/memory-specialisations/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for p1033 changes 2 | 3 | LATEX=pdflatex 4 | BIBTEX=bibtex 5 | 6 | MAIN=d1033 7 | 8 | SOURCE=d1033.bib\ 9 | acknowledgements.tex\ 10 | config.tex\ 11 | cover-proposal.tex\ 12 | cxx.tex\ 13 | front.tex\ 14 | intro.tex\ 15 | layout.tex\ 16 | macros.tex\ 17 | $(MAIN).tex\ 18 | styles.tex\ 19 | tables.tex\ 20 | utilities.tex 21 | 22 | all: $(SOURCE) 23 | $(LATEX) $(MAIN).tex 24 | $(BIBTEX) $(MAIN) 25 | $(LATEX) $(MAIN).tex 26 | 27 | clean: 28 | rm d1033.pdf *.aux *.idx *.log *.out 29 | -------------------------------------------------------------------------------- /tags.files: -------------------------------------------------------------------------------- 1 | intro.aux 2 | lex.aux 3 | basic.aux 4 | conversions.aux 5 | expressions.aux 6 | statements.aux 7 | declarations.aux 8 | declarators.aux 9 | classes.aux 10 | derived.aux 11 | access.aux 12 | special.aux 13 | overloading.aux 14 | templates.aux 15 | exceptions.aux 16 | preprocessor.aux 17 | lib-intro.aux 18 | support.aux 19 | diagnostics.aux 20 | utilities.aux 21 | strings.aux 22 | locales.aux 23 | containers.aux 24 | iterators.aux 25 | ranges-lib.aux 26 | algorithms.aux 27 | numerics.aux 28 | iostreams.aux 29 | regex.aux 30 | atomics.aux 31 | threads.aux 32 | limits.aux 33 | compatibility.aux 34 | future.aux 35 | charname.aux 36 | -------------------------------------------------------------------------------- /ext/stdconcepts/tags.files: -------------------------------------------------------------------------------- 1 | intro.aux 2 | lex.aux 3 | basic.aux 4 | conversions.aux 5 | expressions.aux 6 | statements.aux 7 | declarations.aux 8 | declarators.aux 9 | classes.aux 10 | derived.aux 11 | access.aux 12 | special.aux 13 | overloading.aux 14 | templates.aux 15 | exceptions.aux 16 | preprocessor.aux 17 | lib-intro.aux 18 | support.aux 19 | diagnostics.aux 20 | utilities.aux 21 | strings.aux 22 | locales.aux 23 | containers.aux 24 | iterators.aux 25 | ranges-lib.aux 26 | algorithms.aux 27 | numerics.aux 28 | iostreams.aux 29 | regex.aux 30 | atomics.aux 31 | threads.aux 32 | limits.aux 33 | compatibility.aux 34 | future.aux 35 | charname.aux 36 | -------------------------------------------------------------------------------- /ext/merge2std2/front.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | \input{cover-wd} 3 | % \input{cover-reg} 4 | 5 | %%-------------------------------------------------- 6 | %% The table of contents 7 | \markboth{\contentsname}{} 8 | 9 | %%-------------------------------------------------- 10 | %% Make a bit more room for our long page numbers. 11 | \makeatletter 12 | \renewcommand\@pnumwidth{2.5em} 13 | \makeatother 14 | 15 | %% Include table of contents. Do not list "Contents" 16 | %% within it (per ISO request) but do include a 17 | %% bookmark for it in the PDF. 18 | \phantomsection 19 | \pdfbookmark{\contentsname}{toctarget} 20 | \hypertarget{toctarget}{\tableofcontents*} 21 | 22 | \setcounter{tocdepth}{5} 23 | -------------------------------------------------------------------------------- /ext/constructible/Makefile: -------------------------------------------------------------------------------- 1 | DOCNO = 0547R3 2 | PD = D 3 | SOURCE = constructible.md 4 | TARGET = $(PD)$(DOCNO) 5 | 6 | PANDOC = pandoc 7 | 8 | $(TARGET).html: $(SOURCE) header.html pandoc-template.html 9 | $(PANDOC) -f markdown_github+yaml_metadata_block -t html -o $@ --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html --include-in-header=pandoc.css $< 10 | 11 | $(TARGET).pdf: $(SOURCE) 12 | $(PANDOC) -f markdown_github+yaml_metadata_block -t latex -o $@ --number-sections --toc -s -S $< 13 | 14 | header.html: header.html.in Makefile 15 | sed 's/%%DOCNO%%/$(TARGET)/g' < $< > $@ 16 | 17 | clean: 18 | rm -f $(TARGET).html *~ 19 | 20 | view: $(TARGET).html 21 | gnome-www-browser $(TARGET).html 22 | -------------------------------------------------------------------------------- /tools/arrangearray.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | use strict; 3 | 4 | chomp(my $columns = ); 5 | chomp(my @entries = ); 6 | 7 | my $rows = int((@entries + $columns - 1) / $columns); 8 | my $full_rows = @entries - $rows * $columns + $rows; 9 | my $col; 10 | my $row; 11 | 12 | # Show full rows: 13 | for ($row = 0; $row < $full_rows; ++$row) { 14 | for ($col = 0; $col < $columns; ++$col) { 15 | my $entry = $row + $rows * $col; 16 | print "@entries[$entry]\n"; 17 | } 18 | print "\n"; 19 | } 20 | # Show the rest of the rows: 21 | for ( ; $row < $rows; ++$row) { 22 | for ($col = 0; $col < $columns - 1; ++$col) { 23 | my $entry = $row + $rows * $col; 24 | print "@entries[$entry]\n"; 25 | } 26 | print "\n"; 27 | } 28 | -------------------------------------------------------------------------------- /review/proxy iterators review kona jacksonville.txt: -------------------------------------------------------------------------------- 1 | Customization points in Proxy Iterators 2 | 3 | IndirectlyMovable 4 | ------------- 5 | `i` should be dereferencable?>?> 6 | 2.1 use direct init instead of potentially cast expression 7 | 2.4 s/*i/v/ 8 | 9 | projected 10 | ---- 11 | in using value_type, s/value_type_t/reference_t/. 12 | Or, operator*() requires CommonReference<...>; 13 | Remove as_function_t, std::invoke is implied with result_of_t 14 | 15 | IndirectCallable 16 | ---- 17 | Function concept is gone. 18 | 19 | iter_swap, remove _R1 _R2 template parameters, use requires see-below. 20 | remove "std::" in second iter_swap overload. 21 | Use _v version of is_nothrow_swappable instead of ::value 22 | Don't use trailing return type for iter_move if it's "see below". 23 | 24 | -------------------------------------------------------------------------------- /review/ranges issue processing 2016.11.12.txt: -------------------------------------------------------------------------------- 1 | 242 2 | 3 | * STL "dereferenceable" meaning valid expression is weird, we use that term to describe the runtime property. 4 | 5 | * "E1 and E2 both satisfy Readable" is bad. 6 | 7 | 238 8 | 9 | * decaying the argument to IndirectCallable but not to result_of is testing the result type of different cv-qualified function object types. Open a separate issue for this after applying 238. 10 | 11 | 189 12 | 13 | * Need to && the types before passing to result_of. (May occur elsewhere in the TS as well.) 14 | 15 | General: 16 | * Start a list of integration concerns. 17 | 18 | * Ensure we have an issue to sweep the concept definitions to guard against parameter decay. 19 | 20 | * Need some way to dump the issues into the document history. 21 | -------------------------------------------------------------------------------- /report/header.html.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 |
Document number: 5 | %%DOCNO%% 6 |
Date:2017-07-31
Project:C++ Extensions for Ranges
Reply-to: 19 | Casey Carter <Casey@Carter.net>
20 |
23 | -------------------------------------------------------------------------------- /ext/proxy/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 |
Document number: 5 | P0022R2 6 |
Date:2016-10-17
Project:Programming Language C++, Library Working Group
Reply-to: 19 | Eric Niebler <eniebler@boost.org>,
20 |
23 | -------------------------------------------------------------------------------- /ready/header.html.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 |
Document number: 5 | %%DOCNO%% 6 |
Date:2017-07-14
Project:C++ Extensions for Ranges, Library Working Group
Reply-to: 19 | Casey Carter <Casey@Carter.net>
20 |
23 | -------------------------------------------------------------------------------- /ext/constexpr/header.html.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 |
Document number: 5 | %%DOCNO%% 6 |
Date:2017-07-10
Project:C++ Extensions for Ranges, Library Working Group
Reply-to: 19 | Casey Carter <Casey@Carter.net>
20 |
23 | -------------------------------------------------------------------------------- /ext/range_for/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 |
Document number: 5 | D0184 6 |
Date:2016-XX-XX
Project:Programming Language C++, Evolution Working Group
Reply-to: 19 | Eric Niebler <eniebler@boost.org>,
20 |
23 | -------------------------------------------------------------------------------- /ext/variable_concepts/Makefile: -------------------------------------------------------------------------------- 1 | DOCNO = 0651R2 2 | PD = D 3 | SOURCE = variable_concepts.md 4 | TARGET = $(PD)$(DOCNO) 5 | 6 | PANDOC = pandoc 7 | 8 | $(TARGET).html: $(SOURCE) header.html pandoc-template.html 9 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t html -o $@ --csl=acm-sig-proceedings.csl --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html --include-in-header=pandoc.css $< 10 | 11 | $(TARGET).pdf: $(SOURCE) 12 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t latex -o $@ --csl=acm-sig-proceedings.csl --number-sections --toc -s -S $< 13 | 14 | header.html: header.html.in Makefile 15 | sed 's/%%DOCNO%%/$(TARGET)/g' < $< > $@ 16 | 17 | clean: 18 | rm -f $(TARGET).html *~ 19 | 20 | view: $(TARGET).html 21 | gnome-www-browser $(TARGET).html 22 | -------------------------------------------------------------------------------- /ext/memory-specialisations/d1033.bib: -------------------------------------------------------------------------------- 1 | @MISC{memory-proposal, 2 | author = {Niebler, Eric and Carter, Casey and Di Bella, Christopher}, 3 | title = "Should there be a range equivalent of std::uninitialized_X?", 4 | howpublished = {\url{https://github.com/ericniebler/stl2/issues/223}}, 5 | note = {Accessed: 2016-10-15} 6 | } 7 | @MISC{cmcstl2, 8 | author = {Carter, Casey and Niebler, Eric}, 9 | title = "{CMCSTL2}: An Implementation of {C}++ Extensions for Ranges", 10 | howpublished = {\url{https://github.com/caseycarter/cmcstl2/}}, 11 | note = {Accessed: 2016-10-15} 12 | } 13 | @MISC{ts2-request, 14 | author = {Niebler, Eric and Carter, Casey and Di Bella, Christopher}, 15 | title = "", 16 | howpublished = {\url{https://github.com/ericniebler/stl2/pull/224}}, 17 | note = {Accessed: 2016-10-18} 18 | } 19 | -------------------------------------------------------------------------------- /ext/omnibus/Makefile: -------------------------------------------------------------------------------- 1 | DOCNO = 0370 2 | REV = 3 3 | PD = P 4 | SOURCE = P$(DOCNO).md 5 | TARGET = $(PD)$(DOCNO)R$(REV) 6 | PANDOC = pandoc 7 | 8 | $(TARGET).html: $(SOURCE) header.html pandoc-template.html 9 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t html -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html $< 10 | 11 | $(TARGET).pdf: $(SOURCE) 12 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t latex -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S $< 13 | 14 | header.html: header.html.in Makefile 15 | sed 's/%%DOCNO%%/$(TARGET)/g' < $< > $@ 16 | 17 | clean: 18 | rm -f $(TARGET).html *~ 19 | 20 | view: $(TARGET).html 21 | gnome-www-browser $(TARGET).html 22 | -------------------------------------------------------------------------------- /ext/writable/Makefile: -------------------------------------------------------------------------------- 1 | DOCNO = 0441 2 | REV = 1 3 | PD = P 4 | SOURCE = P$(DOCNO).md 5 | TARGET = $(PD)$(DOCNO)R$(REV) 6 | PANDOC = pandoc 7 | 8 | $(TARGET).html: $(SOURCE) header.html pandoc-template.html 9 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t html -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html $< 10 | 11 | $(TARGET).pdf: $(SOURCE) 12 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t latex -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S $< 13 | 14 | header.html: header.html.in Makefile 15 | sed 's/%%DOCNO%%/$(TARGET)/g' < $< > $@ 16 | 17 | clean: 18 | rm -f $(TARGET).html *~ 19 | 20 | view: $(TARGET).html 21 | gnome-www-browser $(TARGET).html 22 | -------------------------------------------------------------------------------- /back.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stl2-ts.tex 2 | \printindex[generalindex] 3 | 4 | \clearpage 5 | \renewcommand{\indexname}{Index of grammar productions} 6 | \renewcommand{\preindexhook}{The first page number for each entry is the page in the 7 | general text where the grammar production is defined. The second page number is the 8 | corresponding page in the Grammar summary (Annex~\ref{gram}).\\} 9 | \printindex[grammarindex] 10 | 11 | \clearpage 12 | \renewcommand{\preindexhook}{} 13 | \renewcommand{\indexname}{Index of library names} 14 | \printindex[libraryindex] 15 | 16 | \clearpage 17 | \renewcommand{\preindexhook}{The entries in this section are rough descriptions; exact 18 | specifications are at the indicated page in the general text.\\} 19 | \renewcommand{\indexname}{Index of implementation-defined behavior} 20 | \printindex[impldefindex] 21 | -------------------------------------------------------------------------------- /ext/adaptors/back.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stl2-ts.tex 2 | \printindex[generalindex] 3 | 4 | \clearpage 5 | \renewcommand{\indexname}{Index of grammar productions} 6 | \renewcommand{\preindexhook}{The first page number for each entry is the page in the 7 | general text where the grammar production is defined. The second page number is the 8 | corresponding page in the Grammar summary (Annex~\ref{gram}).\\} 9 | \printindex[grammarindex] 10 | 11 | \clearpage 12 | \renewcommand{\preindexhook}{} 13 | \renewcommand{\indexname}{Index of library names} 14 | \printindex[libraryindex] 15 | 16 | \clearpage 17 | \renewcommand{\preindexhook}{The entries in this section are rough descriptions; exact 18 | specifications are at the indicated page in the general text.\\} 19 | \renewcommand{\indexname}{Index of implementation-defined behavior} 20 | \printindex[impldefindex] 21 | -------------------------------------------------------------------------------- /report/Makefile: -------------------------------------------------------------------------------- 1 | DOCNO = 4686 2 | PD = N 3 | SOURCE = report.md 4 | TARGET = $(PD)$(DOCNO) 5 | 6 | PANDOC = pandoc 7 | PANDOC_FORMAT = markdown_github+yaml_metadata_block+citations 8 | 9 | $(TARGET).html: $(SOURCE) header.html pandoc-template.html 10 | $(PANDOC) -f $(PANDOC_FORMAT) -t html -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html $< 11 | 12 | $(TARGET).pdf: $(SOURCE) 13 | $(PANDOC) -f $(PANDOC_FORMAT) -t latex -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S $< 14 | 15 | header.html: header.html.in Makefile 16 | sed 's/%%DOCNO%%/$(TARGET)/g' < $< > $@ 17 | 18 | clean: 19 | rm -f $(TARGET).html $(TARGET).pdf header.html *~ 20 | 21 | view: $(TARGET).html 22 | gnome-www-browser $(TARGET).html 23 | -------------------------------------------------------------------------------- /ext/integrate/back.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stl2-ts.tex 2 | \printindex[generalindex] 3 | 4 | \clearpage 5 | \renewcommand{\indexname}{Index of grammar productions} 6 | \renewcommand{\preindexhook}{The first page number for each entry is the page in the 7 | general text where the grammar production is defined. The second page number is the 8 | corresponding page in the Grammar summary (Annex~\ref{gram}).\\} 9 | \printindex[grammarindex] 10 | 11 | \clearpage 12 | \renewcommand{\preindexhook}{} 13 | \renewcommand{\indexname}{Index of library names} 14 | \printindex[libraryindex] 15 | 16 | \clearpage 17 | \renewcommand{\preindexhook}{The entries in this section are rough descriptions; exact 18 | specifications are at the indicated page in the general text.\\} 19 | \renewcommand{\indexname}{Index of implementation-defined behavior} 20 | \printindex[impldefindex] 21 | -------------------------------------------------------------------------------- /ext/post_inc/Makefile: -------------------------------------------------------------------------------- 1 | DOCNO = 0541R2 2 | PD = D 3 | SOURCE = post_inc.md 4 | TARGET = $(PD)$(DOCNO) 5 | 6 | PANDOC = pandoc 7 | 8 | $(TARGET).html: $(SOURCE) header.html pandoc-template.html 9 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t html -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html --include-in-header=pandoc.css $< 10 | 11 | $(TARGET).pdf: $(SOURCE) 12 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t latex -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S $< 13 | 14 | header.html: header.html.in Makefile 15 | sed 's/%%DOCNO%%/$(TARGET)/g' < $< > $@ 16 | 17 | clean: 18 | rm -f $(TARGET).html *~ 19 | 20 | view: $(TARGET).html 21 | gnome-www-browser $(TARGET).html 22 | -------------------------------------------------------------------------------- /ext/range_access/back.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stl2-ts.tex 2 | \printindex[generalindex] 3 | 4 | \clearpage 5 | \renewcommand{\indexname}{Index of grammar productions} 6 | \renewcommand{\preindexhook}{The first page number for each entry is the page in the 7 | general text where the grammar production is defined. The second page number is the 8 | corresponding page in the Grammar summary (Annex~\ref{gram}).\\} 9 | \printindex[grammarindex] 10 | 11 | \clearpage 12 | \renewcommand{\preindexhook}{} 13 | \renewcommand{\indexname}{Index of library names} 14 | \printindex[libraryindex] 15 | 16 | \clearpage 17 | \renewcommand{\preindexhook}{The entries in this section are rough descriptions; exact 18 | specifications are at the indicated page in the general text.\\} 19 | \renewcommand{\indexname}{Index of implementation-defined behavior} 20 | \printindex[impldefindex] 21 | -------------------------------------------------------------------------------- /ext/stdconcepts/back.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stdconcepts.tex 2 | \printindex[generalindex] 3 | 4 | \clearpage 5 | \renewcommand{\indexname}{Index of grammar productions} 6 | \renewcommand{\preindexhook}{The first page number for each entry is the page in the 7 | general text where the grammar production is defined. The second page number is the 8 | corresponding page in the Grammar summary (Annex~\ref{gram}).\\} 9 | \printindex[grammarindex] 10 | 11 | \clearpage 12 | \renewcommand{\preindexhook}{} 13 | \renewcommand{\indexname}{Index of library names} 14 | \printindex[libraryindex] 15 | 16 | \clearpage 17 | \renewcommand{\preindexhook}{The entries in this section are rough descriptions; exact 18 | specifications are at the indicated page in the general text.\\} 19 | \renewcommand{\indexname}{Index of implementation-defined behavior} 20 | \printindex[impldefindex] 21 | -------------------------------------------------------------------------------- /ext/merge2std2/back.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | \printindex[generalindex] 3 | 4 | %% \clearpage 5 | %% \renewcommand{\indexname}{Index of grammar productions} 6 | %% \renewcommand{\preindexhook}{The first page number for each entry is the page in the 7 | %% general text where the grammar production is defined. The second page number is the 8 | %% corresponding page in the Grammar summary (Annex~\ref{gram}).\\} 9 | %% \printindex[grammarindex] 10 | 11 | \clearpage 12 | \renewcommand{\preindexhook}{} 13 | \renewcommand{\indexname}{Index of library names} 14 | \printindex[libraryindex] 15 | 16 | \clearpage 17 | \renewcommand{\preindexhook}{The entries in this section are rough descriptions; exact 18 | specifications are at the indicated page in the general text.\\} 19 | \renewcommand{\indexname}{Index of implementation-defined behavior} 20 | \printindex[impldefindex] 21 | -------------------------------------------------------------------------------- /tools/xrefbegin.tex: -------------------------------------------------------------------------------- 1 | \infannex{xref}{Cross references} 2 | 3 | This annex lists each section label and the corresponding section number, in 4 | alphabetical order by label. All of the section labels are the same as in the 5 | 2003 standard, except: 6 | 7 | \begin{itemize} 8 | \item labels that begin with \tcode{lib.} in the 2003 standard have had the 9 | \tcode{lib.} removed so that they do not all appear in the same part of this list. 10 | For example, in the 2003 standard, the non-modifying sequence algorithms were found 11 | in a section with the label \tcode{[lib.alg.nonmodifying]}. The label for that 12 | section is now \tcode{[alg.nonmodifying]}. 13 | \item the label for Annex~\ref{implimits} has been changed from \tcode{[limits]} 14 | to \tcode{[implimits]}. The label \tcode{[limits]} refers to section~\ref{limits}. 15 | \end{itemize} 16 | 17 | \begin{multicols}{2} 18 | 19 | -------------------------------------------------------------------------------- /ext/us2/cover-wd.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %%-------------------------------------------------- 3 | %% Title page for the C++ Standard 4 | 5 | 6 | \thispagestyle{empty} 7 | \begingroup 8 | \def\hd{\begin{tabular}{lll} 9 | \textbf{Document Number:} & {\larger\docno} \\ 10 | \textbf{Date:} & \reldate \\ 11 | \textbf{Reply to:} & Casey Carter \\ 12 | & casey@carter.net \\ 13 | \textbf{Reply to:} & Eric Niebler \\ 14 | & eric.niebler@gmail.com 15 | \end{tabular} 16 | } 17 | \newlength{\hdwidth} 18 | \settowidth{\hdwidth}{\hd} 19 | \hfill\begin{minipage}{\hdwidth}\hd\end{minipage} 20 | \endgroup 21 | 22 | \vspace{2.5cm} 23 | \begin{center} 24 | \textbf{\Huge \doctitle} 25 | \end{center} 26 | \newpage 27 | -------------------------------------------------------------------------------- /review/ranges review jacksonville.txt: -------------------------------------------------------------------------------- 1 | Starting with the Sentinel Rework Annex 2 | 3 | 24.2/p7 4 | s/A sentinel and an iterator denoting/An iterator and a sentinel denoting/ 5 | 6 | p9 7 | s/Range [i,s)/A range [i,s)/ 8 | 9 | 24.2.2 Readable 10 | spaces between value_type class template specializations 11 | 12 | 24.2.3 Writable 13 | p/2, change the name of 'v' in the paragraph 14 | 15 | WeaklyIncrementable 16 | p/2 pre- and post-incrementable 17 | 18 | 24.2.8 Sentinel 19 | "Let s and i be values" needs a paragraph number. 20 | 21 | 24.2.9 SizedSentinel 22 | p/1 23 | s/a Iterator/an Iterator/ 24 | p/4 25 | s/The disable_sized_sentinal predicate/disable_sized_sentinel/ 26 | Note after p/5 should have a paragraph number 27 | Strike editorial note about the strength of move_iterator 28 | 29 | 24.3.2 30 | There should be no gold in the purple. 31 | 32 | 24.3.3 33 | class...Is <- space after ... globally. 34 | 35 | -------------------------------------------------------------------------------- /ext/omnibus/header.html.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 22 | 23 |
Document number: 5 | %%DOCNO%% 6 |
Date:2016-11-17
Project:C++ Extensions for Ranges, Library Working Group
Reply-to: 19 | Casey Carter <Casey@Carter.net>
20 | Eric Niebler <Eric.Niebler@gmail.com> 21 |
24 | -------------------------------------------------------------------------------- /ext/writable/header.html.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 22 | 23 |
Document number: 5 | %%DOCNO%% 6 |
Date:2016-11-17
Project:C++ Extensions for Ranges, Library Working Group
Reply-to: 19 | Casey Carter <Casey@Carter.net>
20 | Eric Niebler <Eric.Niebler@gmail.com> 21 |
24 | -------------------------------------------------------------------------------- /ready/Makefile: -------------------------------------------------------------------------------- 1 | DOCNO = 0740 2 | REV = 1 3 | PD = D 4 | SOURCE = P0XXX.md 5 | TARGET = $(PD)$(DOCNO)R$(REV) 6 | 7 | PANDOC = pandoc 8 | PANDOC_FMT = markdown_github+yaml_metadata_block+citations 9 | 10 | $(TARGET).html: $(SOURCE) header.html pandoc-template.html pandoc.css 11 | $(PANDOC) -f $(PANDOC_FMT) -t html -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl -s -S --template=pandoc-template --include-before-body=header.html --include-in-header=pandoc.css $< 12 | 13 | $(TARGET).pdf: $(SOURCE) 14 | $(PANDOC) -f $(PANDOC_FMT) -t latex -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl -s -S $< 15 | 16 | header.html: header.html.in Makefile 17 | sed 's/%%DOCNO%%/$(TARGET)/g' < $< > $@ || rm -f $@ 18 | 19 | clean: 20 | rm -f header.html $(TARGET).html $(TARGET).pdf *~ 21 | 22 | view: $(TARGET).html 23 | gnome-www-browser $(TARGET).html 24 | 25 | cooked.txt: raw.txt 26 | sed -rf cook < $< > $@ || rm -f $@ 27 | -------------------------------------------------------------------------------- /ext/post_inc/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 24 | 27 | 28 |
Document number: 5 | P0541R1 6 |
Date:2017-07-10
Project:C++ Extensions for Ranges
Reply-to: 19 | Eric Niebler <eniebler@boost.org> 20 |
Audience: 25 | Library Working Group 26 |
29 | -------------------------------------------------------------------------------- /ext/constexpr/Makefile: -------------------------------------------------------------------------------- 1 | DOCNO = 0579 2 | REV = 2 3 | PD = D 4 | SOURCE = P$(DOCNO).md 5 | TARGET = $(PD)$(DOCNO)R$(REV) 6 | 7 | PANDOC = pandoc 8 | 9 | $(TARGET).html: $(SOURCE) header.html pandoc-template.html 10 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t html -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S --template=pandoc-template --include-before-body=header.html --include-in-header=pandoc.css $< 11 | 12 | $(TARGET).pdf: $(SOURCE) 13 | $(PANDOC) -f markdown_github+yaml_metadata_block+citations -t latex -o $@ --filter pandoc-citeproc --csl=acm-sig-proceedings.csl --number-sections --toc -s -S $< 14 | 15 | header.html: header.html.in Makefile 16 | sed 's/%%DOCNO%%/$(TARGET)/g' < $< > $@ || rm -f $@ 17 | 18 | clean: 19 | rm -f $(TARGET).html *~ 20 | 21 | view: $(TARGET).html 22 | gnome-www-browser $(TARGET).html 23 | 24 | cooked.txt: raw.txt 25 | sed -rf cook < $< > $@ || rm -f $@ 26 | -------------------------------------------------------------------------------- /ext/post_inc/header.html.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 24 | 27 | 28 |
Document number: 5 | %%DOCNO%% 6 |
Date:2017-07-10
Project:C++ Extensions for Ranges
Reply-to: 19 | Eric Niebler <eniebler@boost.org> 20 |
Audience: 25 | Library Working Group 26 |
29 | -------------------------------------------------------------------------------- /ext/constructible/header.html.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 24 | 27 | 28 |
Document number: 5 | %%DOCNO%% 6 |
Date:2017-07-11
Project:C++ Extensions for Ranges
Reply-to: 19 | Eric Niebler <eniebler@boost.org> 20 |
Audience: 25 | Library Working Group 26 |
29 | -------------------------------------------------------------------------------- /ext/variable_concepts/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 24 | 27 | 28 |
Document number: 5 | P0651R1 6 |
Date:2017-07-10
Project:C++ Extensions for Ranges
Reply-to: 19 | Eric Niebler <eniebler@boost.org> 20 |
Audience: 25 | Library Working Group 26 |
29 | -------------------------------------------------------------------------------- /ext/variable_concepts/header.html.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 24 | 27 | 28 |
Document number: 5 | %%DOCNO%% 6 |
Date:2017-07-10
Project:C++ Extensions for Ranges
Reply-to: 19 | Eric Niebler <eniebler@boost.org> 20 |
Audience: 25 | Library Working Group 26 |
29 | -------------------------------------------------------------------------------- /ext/merge2std2/threads.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | 3 | \setcounter{chapter}{30} 4 | \rSec0[thread]{Thread support library} 5 | 6 | [...] 7 | 8 | \setcounter{section}{1} 9 | \rSec1[thread.req]{Requirements} 10 | 11 | [...] 12 | 13 | \setcounter{subsection}{5} 14 | \rSec2[thread.decaycopy]{\tcode{decay_copy}} 15 | 16 | \pnum 17 | In several places in this Clause the operation 18 | \indextext{DECAY_COPY@\tcode{\placeholder{DECAY_COPY}}}% 19 | \indexlibrary{DECAY_COPY@\tcode{\placeholder{DECAY_COPY}}}% 20 | {\tcode{\placeholdernc{DECAY_COPY}(x)}} is used. All 21 | such uses mean call the function \tcode{decay_copy(x)} and use the 22 | result, where \tcode{decay_copy} is defined as follows: 23 | 24 | \begin{codeblock} 25 | template 26 | @\added{constexpr}@ decay_t decay_copy(T&& v) 27 | @\added{noexcept(is_nothrow_convertible_v>)}@ 28 | { return std::forward(v); } 29 | \end{codeblock} 30 | 31 | [...] 32 | -------------------------------------------------------------------------------- /review/ranges telecon 2.txt: -------------------------------------------------------------------------------- 1 | 19.2.7 document char as such a type 2 | 3 | 19.2.9 question about why -> Same? Accepted as is. Suggestion for me to maintain a FAQ. 4 | 19.2.10 Swappable, take args by forwarding references 5 | 6 | 7 | 19.3.2 Example should be a numbered paragraph. Note that neither pointers nor types with explicit conversion to bool model Boolean. 8 | 9 | 19.3.3 Don't suggest that moved-from states are not well-formed. In other places as well. Walter: what should we say instead of "well-formed". 10 | 11 | Remove editors note about Common and overconstraint 12 | 13 | 19.3.4 Common doesn't need to be checked explicitly. It's reuired by EqualityComparable 14 | 15 | "non-modifying" -> "equality preserving" 16 | 17 | 19.4: update the rationale! It talks about objects, references are not objects. 18 | 19 | 19.4.1 20 | 21 | 19.4.2 Education: Constructible != is_constructible 22 | 23 | 19.4.4 MoveConstructible: references? What about 1.2. 24 | 25 | 26 | -------------------------------------------------------------------------------- /ext/memory-specialisations/cover-proposal.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %%-------------------------------------------------- 3 | %% Title page for the C++ Standard 4 | 5 | 6 | \thispagestyle{empty} 7 | \begingroup 8 | \def\hd{\begin{tabular}{lll} 9 | \textbf{Document number:} & D1033R1 \\ 10 | \textbf{Date:} & \reldate \\ 11 | \textbf{Audience:} & LEWG \\ 12 | \textbf{Authors:} & Casey Carter \\ 13 | & Christopher Di Bella \\ 14 | \textbf{Reply to:} & christopher@codeplay.com \\ 15 | \end{tabular} 16 | } 17 | \newlength{\hdwidth} 18 | \settowidth{\hdwidth}{\hd} 19 | \hfill\begin{minipage}{\hdwidth}\hd\end{minipage} 20 | \endgroup 21 | 22 | \vspace{2.5cm} 23 | \begin{center} 24 | \textbf{\Huge Rangify the uninitialised memory algorithms!} 25 | \end{center} 26 | \newpage 27 | -------------------------------------------------------------------------------- /ext/merge2std2/support.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | \rSec0[language.support]{Language support library} 3 | 4 | [...] 5 | 6 | \setcounter{section}{2} 7 | \rSec1[support.limits]{Implementation properties} 8 | 9 | \rSec2[support.limits.general]{General} 10 | 11 | [...] 12 | 13 | \setcounter{table}{34} 14 | 15 | \begin{LongTable}{Standard library feature-test macros} 16 | {tab:support.ft}{llx{.3\hsize}} 17 | \\ \topline 18 | \lhdr{Macro name} & \chdr{Value} & \rhdr{Header(s)} \\ \capsep 19 | \endfirsthead 20 | \continuedcaption \\ 21 | \hline 22 | \lhdr{Macro name} & \chdr{Value} & \rhdr{Header(s)} \\ \capsep 23 | \endhead 24 | [...] & [...] & [...] \\ \rowsep 25 | {\color{addclr} \defnlibxname{cpp_lib_ranges}} & {\color{addclr} \tcode{TBD}} & 26 | {\color{addclr} \tcode{} \tcode{} \tcode{} \tcode{} 27 | \tcode{}} \\ \rowsep 28 | [...] & [...] & [...] \\ \rowsep 29 | \end{LongTable} 30 | 31 | [...] 32 | -------------------------------------------------------------------------------- /ext/adaptors/cover-wd.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D0789R3.tex 2 | %%-------------------------------------------------- 3 | %% Title page for the C++ Standard 4 | 5 | \thispagestyle{empty} 6 | \begingroup 7 | \def\hd{\begin{tabular}{lll} 8 | \textbf{Document Number:} & {\larger\docno} \\ 9 | \textbf{Date:} & \reldate \\ 10 | \textbf{Reply to:} & Eric Niebler \\ 11 | & eric.niebler@gmail.com \\ 12 | \end{tabular} 13 | } 14 | \newlength{\hdwidth} 15 | \settowidth{\hdwidth}{\hd} 16 | \hfill\begin{minipage}{\hdwidth}\hd\end{minipage} 17 | \endgroup 18 | 19 | \vspace{2.5cm} 20 | \begin{center} 21 | \textbf{\Huge 22 | Range Adaptors and Utilities} 23 | \end{center} 24 | \vfill 25 | \textbf{Note: this is an early draft. It's known to be incomplet and 26 | incorrekt, and it has lots of 27 | b\kern-1.2pta\kern1ptd\hspace{1.5em}for\kern-3ptmat\kern0.6ptti\raise0.15ex\hbox{n}g.} 28 | \newpage 29 | -------------------------------------------------------------------------------- /ext/adaptors/LEWG 20171107 feedback.md: -------------------------------------------------------------------------------- 1 | * Consider refining the `View` heuristic with `is_nothrow_copy_constructible` 2 | * Concern about constraining `operator|` for range adaptors with the current minimal specification. 3 | * Concern about the currying of arguments in range adaptor objects, and possible ambiguity for a range adaptor that accepts a variadic number of ranges. 4 | * `iota_view` should allow asymmetric deduction unless the two types are integral types with differing "signed-ness" 5 | * Paper should have a section on "surprising" design decisions. 6 | * No one cares that adaptors are intermixed with factories in namespace `view` 7 | 8 | Large group feedback: 9 | * Don't bother with `view::remove_if` 10 | * Don't provide `view::filter_out` 11 | * `BoundedRange` bikeshed: 12 | * `ClassicRange` 13 13 | * `SameTypeRange` 6 14 | * `IteratorPairRange` 3 15 | * `BoundedRange` 3 16 | * `UniformRange` 2 17 | * `IteratorRange` 5 18 | * `IteratorBoundedRange` 12 19 | * `NonSentinelRange` 9 20 | * `HomogenousRange` 5 21 | * `ConsistentRange` 0 22 | -------------------------------------------------------------------------------- /cover-wd.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %%-------------------------------------------------- 3 | %% Title page for the C++ Standard 4 | 5 | 6 | \thispagestyle{empty} 7 | \begingroup 8 | \def\hd{\begin{tabular}{lll} 9 | \textbf{Document Number:} & {\larger\docno} \\ 10 | \textbf{Date:} & \reldate \\ 11 | \textbf{Reply to:} & Eric Niebler \\ 12 | & eric.niebler@gmail.com \\ 13 | \textbf{Reply to:} & Casey Carter \\ 14 | & casey@carter.net 15 | \end{tabular} 16 | } 17 | \newlength{\hdwidth} 18 | \settowidth{\hdwidth}{\hd} 19 | \hfill\begin{minipage}{\hdwidth}\hd\end{minipage} 20 | \endgroup 21 | 22 | \vspace{2.5cm} 23 | \begin{center} 24 | \textbf{\Huge Working Draft, \doctitle} 25 | \end{center} 26 | \vfill 27 | \textbf{Note: this is an early draft. It's known to be incomplet and 28 | incorrekt, and it has lots of 29 | b\kern-1.2pta\kern1ptd\hspace{1.5em}for\kern-3ptmat\kern0.6ptti\raise0.15ex\hbox{n}g.} 30 | \newpage 31 | -------------------------------------------------------------------------------- /ranges.bib: -------------------------------------------------------------------------------- 1 | @MISC{ASL, 2 | title = {Adobe Source Libraries}, 3 | howpublished = {\url{http://stlab.adobe.com}}, 4 | note = {Accessed: 2014-10-8} 5 | } 6 | @MISC{range-v3, 7 | author = {Niebler, Eric}, 8 | title = {Range-v3}, 9 | howpublished = {\url{https://github.com/ericniebler/range-v3}}, 10 | note = {Accessed: 2015-4-6} 11 | } 12 | @MISC{palo-alto, 13 | author = {Stroustrup, Bjarne and Sutton, Andrew}, 14 | title = "N3351: A Concept Design for the STL", 15 | year = {2012}, 16 | month = {1}, 17 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3351.pdf}}, 18 | } 19 | @MISC{niebler2014, 20 | author = {Niebler, Eric and Parent, Sean and Sutton, Andrew}, 21 | title = "N4128: Ranges for the Standard Library, Revision 1", 22 | year = {2014}, 23 | month = {10}, 24 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html}}, 25 | } 26 | @BOOK{Stepanov:2009:EP:1614221, 27 | author = {Stepanov, Alexander and McJones, Paul}, 28 | title = {Elements of Programming}, 29 | year = {2009}, 30 | isbn = {032163537X, 9780321635372}, 31 | edition = {1st}, 32 | publisher = {Addison-Wesley Professional}, 33 | } 34 | -------------------------------------------------------------------------------- /ext/range_access/cover-wd.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D0970R1.tex 2 | %%-------------------------------------------------- 3 | %% Title page for the C++ Standard 4 | 5 | \thispagestyle{empty} 6 | \begingroup 7 | \def\hd{\begin{tabular}{lll} 8 | \textbf{Document Number:} & {\larger\docno} \\ 9 | \textbf{Date:} & \reldate \\ 10 | \textbf{Project:} & C++ Extensions for Ranges, \\ 11 | & Library Evolution Working Group \\ 12 | \textbf{Reply to:} & Eric Niebler \\ 13 | & eric.niebler@gmail.com \\ 14 | \end{tabular} 15 | } 16 | \newlength{\hdwidth} 17 | \settowidth{\hdwidth}{\hd} 18 | \hfill\begin{minipage}{\hdwidth}\hd\end{minipage} 19 | \endgroup 20 | 21 | \vspace{2.5cm} 22 | \begin{center} 23 | \textbf{\Huge 24 | Better, Safer Range Access Customization Points} 25 | \end{center} 26 | \vfill 27 | \textbf{Note: this is an early draft. It's known to be incomplet and 28 | incorrekt, and it has lots of 29 | b\kern-1.2pta\kern1ptd\hspace{1.5em}for\kern-3ptmat\kern0.6ptti\raise0.15ex\hbox{n}g.} 30 | \newpage 31 | -------------------------------------------------------------------------------- /acknowledgements.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stl2-ts.tex 2 | \infannex{acknowledgements}{Acknowledgements} 3 | 4 | The design of this specification is based, in part, on a concept 5 | specification of the algorithms part of the \Cpp standard library, known 6 | as the ``Palo Alto report''~(\cite{palo-alto}), which was developed by a large 7 | group of experts as a test of the expressive power of the idea of 8 | concepts. 9 | 10 | The authors would like to thank Andrew Sutton for his work on the Concepts TS~(\ref{intro.refs}), 11 | for his help formalizing the ideas of the range-v3 library~\cite{range-v3} on which this 12 | work is based, and for his review of this document. 13 | 14 | Sean Parent has made major contributions to both the foundations and the wording of this 15 | document. 16 | 17 | Stephan T. Lavavej offered a careful review of much of this document, a non-trivial undertaking. 18 | 19 | We would also like to thank the members of the Ranges SG who offered feedback on early drafts, 20 | especially Tony Van Eerd and Walter Brown. 21 | 22 | Christopher Di Bella has contributed many editorial fixes. 23 | 24 | This work was made possible by a generous grant from the Standard \Cpp Foundation. 25 | -------------------------------------------------------------------------------- /ext/merge2std2/compatibility.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | \setcounter{chapter}{2} 3 | \infannex{diff}{Compatibility} 4 | 5 | \rSec1[diff.iso]{\Cpp{} and ISO C} 6 | 7 | [...] 8 | 9 | \setcounter{section}{4} 10 | \rSec1[diff.cpp17]{\Cpp{} and ISO \CppXVII{}} 11 | 12 | [...] 13 | 14 | \setcounter{subsection}{7} 15 | \rSec2[diff.cpp17.containers]{\ref{containers}: containers library} 16 | 17 | [...] 18 | 19 | \begin{addedblock} 20 | \rSec2[diff.cpp17.alg.reqs]{\ref{algorithms}: algorithms library} 21 | \diffref{algorithms.requirements} 22 | \change 23 | The number and order of deducible template parameters for algorithm declarations 24 | is now unspecified, instead of being as-declared. 25 | \rationale Increase implementor freedom and allow some function templates 26 | to be implemented as function objects with templated call operators. 27 | \effect 28 | A valid \CppXVII{} program that passes explicit template arguments to 29 | algorithms not explicitly specified to allow such in this version of \Cpp{} 30 | may fail to compile or have undefined behavior. 31 | \end{addedblock} 32 | 33 | \rSec2[diff.cpp17.depr]{Annex D: compatibility features} 34 | 35 | [...] 36 | -------------------------------------------------------------------------------- /ext/stdconcepts/stdconcepts.bib: -------------------------------------------------------------------------------- 1 | @MISC{ASL, 2 | title = {Adobe Source Libraries}, 3 | howpublished = {\url{http://stlab.adobe.com}}, 4 | note = {Accessed: 2014-10-8} 5 | } 6 | @MISC{range-v3, 7 | author = {Niebler, Eric}, 8 | title = {Range-v3}, 9 | howpublished = {\url{https://github.com/ericniebler/range-v3}}, 10 | note = {Accessed: 2015-4-6} 11 | } 12 | @MISC{palo-alto, 13 | author = {Stroustrup, Bjarne and Sutton, Andrew}, 14 | title = "N3351: A Concept Design for the STL", 15 | year = {2012}, 16 | month = {1}, 17 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3351.pdf}}, 18 | } 19 | @MISC{niebler2014, 20 | author = {Niebler, Eric and Parent, Sean and Sutton, Andrew}, 21 | title = "N4128: Ranges for the Standard Library, Revision 1", 22 | year = {2014}, 23 | month = {10}, 24 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html}}, 25 | } 26 | @BOOK{Stepanov:2009:EP:1614221, 27 | author = {Stepanov, Alexander and McJones, Paul}, 28 | title = {Elements of Programming}, 29 | year = {2009}, 30 | isbn = {032163537X, 9780321635372}, 31 | edition = {1st}, 32 | publisher = {Addison-Wesley Professional}, 33 | } 34 | -------------------------------------------------------------------------------- /ext/stdconcepts/cover-wd.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stdconcepts.tex 2 | %%-------------------------------------------------- 3 | %% Title page for this document 4 | 5 | 6 | \thispagestyle{empty} 7 | \begingroup 8 | \def\hd{\begin{tabular}{lll} 9 | \textbf{Document Number:} & {\larger\docno} \\ 10 | \textbf{Date:} & \reldate \\ 11 | \textbf{Audience:} & Library Working Group \\ 12 | \textbf{Authors:} & Casey Carter \\ 13 | & Eric Niebler \\ 14 | \textbf{Reply to:} & Casey Carter \\ 15 | & casey@carter.net 16 | \end{tabular} 17 | } 18 | \newlength{\hdwidth} 19 | \settowidth{\hdwidth}{\hd} 20 | \hfill\begin{minipage}{\hdwidth}\hd\end{minipage} 21 | \endgroup 22 | 23 | \vspace{2.5cm} 24 | \begin{center} 25 | \textbf{\Huge \doctitle} 26 | \end{center} 27 | \vfill 28 | \textbf{Note: this is an early draft. It's known to be incomplet and 29 | incorrekt, and it has lots of 30 | b\kern-1.2pta\kern1ptd\hspace{1.5em}for\kern-3ptmat\kern0.6ptti\raise0.15ex\hbox{n}g.} 31 | \newpage 32 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ### -*- mode: makefile-gmake -*- 2 | 3 | # Note: If building on Mac OS X, and if you use MacPorts, the following ports 4 | # should be installed: 5 | # 6 | # texlive-latex 7 | # texlive-plain-extra 8 | # texlive-latex-recommended 9 | # texlive-latex-extra 10 | # texlive-fonts-recommended 11 | # texlive-fonts-extra 12 | # texlive-generic-recommended 13 | 14 | FIGURES = $(patsubst %.dot,%.pdf,$(wildcard *.dot)) 15 | 16 | TSPDF = pdflatex -jobname=$(TARGET) $(TARGET).tex | grep -av "^Overfull" 17 | 18 | TARGET = ranges 19 | 20 | export TOOLS=./tools 21 | 22 | default: rebuild 23 | 24 | clean: 25 | rm -f *.aux $(TARGET).pdf *.idx *.ilg *.ind *.log *.lot *.lof *.tmp *.out 26 | 27 | refresh: 28 | $(TSPDF) 29 | 30 | rebuild: 31 | $(TSPDF) 32 | bibtex $(TARGET) 33 | $(TSPDF) 34 | $(TSPDF) 35 | 36 | full: $(FIGURES) grammar xrefs reindex 37 | 38 | %.pdf: %.dot 39 | dot -o $@ -Tpdf $< 40 | 41 | grammar: 42 | sh $(TOOLS)/makegram 43 | 44 | xrefs: 45 | sh $(TOOLS)/makexref 46 | 47 | reindex: 48 | $(TSPDF) 49 | $(TSPDF) 50 | $(TSPDF) 51 | makeindex generalindex 52 | makeindex libraryindex 53 | makeindex grammarindex 54 | makeindex impldefindex 55 | $(TSPDF) 56 | $(TSPDF) 57 | 58 | ### Makefile ends here 59 | -------------------------------------------------------------------------------- /ext/adaptors/Makefile: -------------------------------------------------------------------------------- 1 | ### -*- mode: makefile-gmake -*- 2 | 3 | # Note: If building on Mac OS X, and if you use MacPorts, the following ports 4 | # should be installed: 5 | # 6 | # texlive-latex 7 | # texlive-plain-extra 8 | # texlive-latex-recommended 9 | # texlive-latex-extra 10 | # texlive-fonts-recommended 11 | # texlive-fonts-extra 12 | # texlive-generic-recommended 13 | 14 | FIGURES = $(patsubst %.dot,%.pdf,$(wildcard *.dot)) 15 | 16 | TSPDF = pdflatex -jobname=$(TARGET) $(TARGET).tex | grep -v "^Overfull" 17 | 18 | TARGET = D0789R3 19 | 20 | export TOOLS=../../tools 21 | 22 | default: rebuild 23 | 24 | clean: 25 | rm -f *.aux $(TARGET).pdf *.idx *.ilg *.ind *.log *.lot *.lof *.tmp *.out 26 | 27 | refresh: 28 | $(TSPDF) 29 | 30 | rebuild: 31 | $(TSPDF) 32 | bibtex $(TARGET) 33 | $(TSPDF) 34 | $(TSPDF) 35 | 36 | full: $(FIGURES) grammar xrefs reindex 37 | 38 | %.pdf: %.dot 39 | dot -o $@ -Tpdf $< 40 | 41 | grammar: 42 | sh $(TOOLS)/makegram 43 | 44 | xrefs: 45 | sh $(TOOLS)/makexref 46 | 47 | reindex: 48 | $(TSPDF) 49 | $(TSPDF) 50 | $(TSPDF) 51 | makeindex generalindex 52 | makeindex libraryindex 53 | makeindex grammarindex 54 | makeindex impldefindex 55 | $(TSPDF) 56 | $(TSPDF) 57 | 58 | ### Makefile ends here 59 | -------------------------------------------------------------------------------- /ext/integrate/Makefile: -------------------------------------------------------------------------------- 1 | ### -*- mode: makefile-gmake -*- 2 | 3 | # Note: If building on Mac OS X, and if you use MacPorts, the following ports 4 | # should be installed: 5 | # 6 | # texlive-latex 7 | # texlive-plain-extra 8 | # texlive-latex-recommended 9 | # texlive-latex-extra 10 | # texlive-fonts-recommended 11 | # texlive-fonts-extra 12 | # texlive-generic-recommended 13 | 14 | FIGURES = $(patsubst %.dot,%.pdf,$(wildcard *.dot)) 15 | 16 | TSPDF = pdflatex -jobname=$(TARGET) $(TARGET).tex | grep -v "^Overfull" 17 | 18 | TARGET = D1037 19 | 20 | export TOOLS=../../tools 21 | 22 | default: rebuild 23 | 24 | clean: 25 | rm -f *.aux $(TARGET).pdf *.idx *.ilg *.ind *.log *.lot *.lof *.tmp *.out 26 | 27 | refresh: 28 | $(TSPDF) 29 | 30 | rebuild: 31 | $(TSPDF) 32 | bibtex $(TARGET) 33 | $(TSPDF) 34 | $(TSPDF) 35 | 36 | full: $(FIGURES) grammar xrefs reindex 37 | 38 | %.pdf: %.dot 39 | dot -o $@ -Tpdf $< 40 | 41 | grammar: 42 | sh $(TOOLS)/makegram 43 | 44 | xrefs: 45 | sh $(TOOLS)/makexref 46 | 47 | reindex: 48 | $(TSPDF) 49 | $(TSPDF) 50 | $(TSPDF) 51 | makeindex generalindex 52 | makeindex libraryindex 53 | makeindex grammarindex 54 | makeindex impldefindex 55 | $(TSPDF) 56 | $(TSPDF) 57 | 58 | ### Makefile ends here 59 | -------------------------------------------------------------------------------- /ext/merge2std2/Makefile: -------------------------------------------------------------------------------- 1 | ### -*- mode: makefile-gmake -*- 2 | 3 | # Note: If building on Mac OS X, and if you use MacPorts, the following ports 4 | # should be installed: 5 | # 6 | # texlive-latex 7 | # texlive-plain-extra 8 | # texlive-latex-recommended 9 | # texlive-latex-extra 10 | # texlive-fonts-recommended 11 | # texlive-fonts-extra 12 | # texlive-generic-recommended 13 | 14 | FIGURES = $(patsubst %.dot,%.pdf,$(wildcard *.dot)) 15 | 16 | TSPDF = pdflatex -jobname=$(TARGET) $(TARGET).tex | grep -av "^Overfull" 17 | 18 | TARGET = P0896 19 | 20 | export TOOLS=../../tools 21 | 22 | default: rebuild 23 | 24 | clean: 25 | rm -f *.aux $(TARGET).pdf *.idx *.ilg *.ind *.log *.lot *.lof *.tmp *.out 26 | 27 | refresh: 28 | $(TSPDF) 29 | 30 | rebuild: 31 | $(TSPDF) 32 | bibtex $(TARGET) 33 | $(TSPDF) 34 | $(TSPDF) 35 | 36 | full: $(FIGURES) grammar xrefs reindex 37 | 38 | %.pdf: %.dot 39 | dot -o $@ -Tpdf $< 40 | 41 | grammar: 42 | sh $(TOOLS)/makegram 43 | 44 | xrefs: 45 | sh $(TOOLS)/makexref 46 | 47 | reindex: 48 | $(TSPDF) 49 | $(TSPDF) 50 | $(TSPDF) 51 | makeindex generalindex 52 | makeindex libraryindex 53 | makeindex grammarindex 54 | makeindex impldefindex 55 | $(TSPDF) 56 | $(TSPDF) 57 | 58 | ### Makefile ends here 59 | -------------------------------------------------------------------------------- /ext/range_access/Makefile: -------------------------------------------------------------------------------- 1 | ### -*- mode: makefile-gmake -*- 2 | 3 | # Note: If building on Mac OS X, and if you use MacPorts, the following ports 4 | # should be installed: 5 | # 6 | # texlive-latex 7 | # texlive-plain-extra 8 | # texlive-latex-recommended 9 | # texlive-latex-extra 10 | # texlive-fonts-recommended 11 | # texlive-fonts-extra 12 | # texlive-generic-recommended 13 | 14 | FIGURES = $(patsubst %.dot,%.pdf,$(wildcard *.dot)) 15 | 16 | TSPDF = pdflatex -jobname=$(TARGET) $(TARGET).tex | grep -v "^Overfull" 17 | 18 | TARGET = D0970R1 19 | 20 | export TOOLS=../../tools 21 | 22 | default: rebuild 23 | 24 | clean: 25 | rm -f *.aux $(TARGET).pdf *.idx *.ilg *.ind *.log *.lot *.lof *.tmp *.out 26 | 27 | refresh: 28 | $(TSPDF) 29 | 30 | rebuild: 31 | $(TSPDF) 32 | bibtex $(TARGET) 33 | $(TSPDF) 34 | $(TSPDF) 35 | 36 | full: $(FIGURES) grammar xrefs reindex 37 | 38 | %.pdf: %.dot 39 | dot -o $@ -Tpdf $< 40 | 41 | grammar: 42 | sh $(TOOLS)/makegram 43 | 44 | xrefs: 45 | sh $(TOOLS)/makexref 46 | 47 | reindex: 48 | $(TSPDF) 49 | $(TSPDF) 50 | $(TSPDF) 51 | makeindex generalindex 52 | makeindex libraryindex 53 | makeindex grammarindex 54 | makeindex impldefindex 55 | $(TSPDF) 56 | $(TSPDF) 57 | 58 | ### Makefile ends here 59 | -------------------------------------------------------------------------------- /ext/stdconcepts/Makefile: -------------------------------------------------------------------------------- 1 | ### -*- mode: makefile-gmake -*- 2 | 3 | # Note: If building on Mac OS X, and if you use MacPorts, the following ports 4 | # should be installed: 5 | # 6 | # texlive-latex 7 | # texlive-plain-extra 8 | # texlive-latex-recommended 9 | # texlive-latex-extra 10 | # texlive-fonts-recommended 11 | # texlive-fonts-extra 12 | # texlive-generic-recommended 13 | 14 | FIGURES = $(patsubst %.dot,%.pdf,$(wildcard *.dot)) 15 | 16 | TSPDF = pdflatex -jobname=$(TARGET) $(TARGET).tex | grep -av "^Overfull" 17 | 18 | TARGET = stdconcepts 19 | 20 | export TOOLS=../tools 21 | 22 | default: rebuild 23 | 24 | clean: 25 | rm -f *.aux $(TARGET).pdf *.idx *.ilg *.ind *.log *.lot *.lof *.tmp *.out 26 | 27 | refresh: 28 | $(TSPDF) 29 | 30 | rebuild: 31 | $(TSPDF) 32 | bibtex $(TARGET) 33 | $(TSPDF) 34 | $(TSPDF) 35 | 36 | full: $(FIGURES) grammar xrefs reindex 37 | 38 | %.pdf: %.dot 39 | dot -o $@ -Tpdf $< 40 | 41 | grammar: 42 | sh $(TOOLS)/makegram 43 | 44 | xrefs: 45 | sh $(TOOLS)/makexref 46 | 47 | reindex: 48 | $(TSPDF) 49 | $(TSPDF) 50 | $(TSPDF) 51 | makeindex generalindex 52 | makeindex libraryindex 53 | makeindex grammarindex 54 | makeindex impldefindex 55 | $(TSPDF) 56 | $(TSPDF) 57 | 58 | ### Makefile ends here 59 | -------------------------------------------------------------------------------- /ext/adaptors/D0789R3.bib: -------------------------------------------------------------------------------- 1 | @MISC{range-v3, 2 | author = {Niebler, Eric}, 3 | title = {Range-v3}, 4 | howpublished = {\url{https://github.com/ericniebler/range-v3}}, 5 | note = {Accessed: 2015-4-6} 6 | } 7 | @MISC{N4128, 8 | author = {Niebler, Eric and Parent, Sean and Sutton, Andrew}, 9 | title = "N4128: Ranges for the Standard Library, Revision 1", 10 | year = {2014}, 11 | month = {10}, 12 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html}}, 13 | } 14 | @MISC{ranges-ts, 15 | author = {Niebler, Eric and Carter, Casey}, 16 | title = "N4685: C++ Extensions for Ranges", 17 | year = {2017}, 18 | month = {7}, 19 | note = {\url{http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2017/n4685.pdf}}, 20 | } 21 | @MISC{P0896, 22 | author = {Niebler, Eric and Carter, Casey}, 23 | title = "P0896R1: Merging the Ranges TS", 24 | year = {2018}, 25 | month = {05}, 26 | note = {\url{http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2018/P0896R1.pdf}}, 27 | } 28 | @BOOK{Stepanov:2009:EP:1614221, 29 | author = {Stepanov, Alexander and McJones, Paul}, 30 | title = {Elements of Programming}, 31 | year = {2009}, 32 | isbn = {032163537X, 9780321635372}, 33 | edition = {1st}, 34 | publisher = {Addison-Wesley Professional}, 35 | } 36 | -------------------------------------------------------------------------------- /ext/merge2std2/numerics.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | 3 | \rSec0[numerics]{Numerics library} 4 | 5 | [...] 6 | 7 | \setcounter{section}{7} 8 | \rSec1[numarray]{Numeric arrays} 9 | 10 | [...] 11 | 12 | \setcounter{subsection}{9} 13 | \rSec2[valarray.range]{\tcode{valarray} range access} 14 | 15 | \pnum 16 | In the \tcode{begin} and \tcode{end} function templates that follow, \unspec{1} 17 | is a type that meets the requirements of a mutable \removed{random access 18 | iterator} \added{\oldconcept{RandomAccessIterator}}\iref{random.access.iterators} 19 | \removed{and of a contiguous iterator\iref{iterator.requirements.general}} 20 | \added{and models \libconcept{ContiguousIterator}\iref{iterator.concept.contiguous},} 21 | whose \tcode{value_type} is the template 22 | parameter \tcode{T} and whose \tcode{reference} type is \tcode{T\&}. \unspec{2} is a 23 | type that meets the requirements of a constant \removed{random access 24 | iterator\iref{random.access.iterators}} \added{\oldconcept{RandomAccessIterator}} 25 | \removed{and of a contiguous iterator\iref{iterator.requirements.general}} 26 | \added{and models \libconcept{ContiguousIterator},} 27 | whose \tcode{value_type} is the template 28 | parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. 29 | 30 | [...] 31 | -------------------------------------------------------------------------------- /ext/integrate/cover-wd.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D1037.tex 2 | %%-------------------------------------------------- 3 | %% Title page for the C++ Standard 4 | 5 | \thispagestyle{empty} 6 | \begingroup 7 | \def\hd{\begin{tabular}{lll} 8 | \textbf{Document Number:} & {\larger\docno} \\ 9 | \textbf{Date:} & \reldate \\ 10 | \textbf{Project:} & \Cpp Extensions for Ranges, \\ 11 | & Library Evolution Working Group \\ 12 | \textbf{Authors:} & Eric Niebler \\ 13 | & Casey Carter \\ 14 | \textbf{Reply to:} & Eric Niebler \\ 15 | & eric.niebler@gmail.com \\ 16 | \end{tabular} 17 | } 18 | \newlength{\hdwidth} 19 | \settowidth{\hdwidth}{\hd} 20 | \hfill\begin{minipage}{\hdwidth}\hd\end{minipage} 21 | \endgroup 22 | 23 | \vspace{2.5cm} 24 | \begin{center} 25 | \textbf{\Huge 26 | Deep Integration of the Ranges TS} 27 | \end{center} 28 | \vfill 29 | \textbf{Note: this is an early draft. It's known to be incomplet and 30 | incorrekt, and it has lots of 31 | b\kern-1.2pta\kern1ptd\hspace{1.5em}for\kern-3ptmat\kern0.6ptti\raise0.15ex\hbox{n}g.} 32 | \newpage 33 | -------------------------------------------------------------------------------- /tools/changemarks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | function usage () { 6 | echo "Usage: $0 old-commit new-commit" 7 | exit 1 8 | } 9 | 10 | BEFORE="$1" 11 | AFTER="$2" 12 | 13 | if [ -z $BEFORE ] ; then 14 | usage 15 | fi 16 | 17 | if [ -z $AFTER ] ; then 18 | usage 19 | fi 20 | 21 | mkdir before 22 | mkdir after 23 | 24 | git archive $BEFORE *.tex | tar xC before 25 | git archive $AFTER *.tex | tar xC after 26 | 27 | 28 | TEXTCMDS=tcode,term,grammarterm,techterm,defnx,defn,Fundescx,Fundesc,state,leftshift,EnterBlock,ExitBlock,NTS,EXPO,impdefx,UNSP,xname,mname,diffdef,stage,doccite,cvqual,numconst,logop 29 | SAFECMDS=Rplus,Cpp,CppIII,opt,shl,shr,dcr,exor,bigoh,tilde,bitand,bitor,xor,rightshift,enternote,enterexample,exitexample,required,requires,effects,postconditions,postcondition,preconditions,precondition,returns,throws,default,complexity,remark,remarks,note,notes,realnote,realnotes,errors,sync,implimits,replaceable,exceptionsafety,returntype,cvalue,ctype,ctypes,dtype,ctemplate,templalias,xref,xsee,ntbs,ntmbs,ntwcs,ntcxvis,ntcxxxiis,expos,impdef,notdef,unspec,unspecbool,seebelow,unspecuniqtype,unspecalloctype,unun,change,rationale,effect,difficulty,howwide,uniquens,cv 30 | for i in *.tex ; do 31 | latexdiff --append-textcmd=$TEXTCMDS --append-safecmd=$SAFECMDS -c PICTUREENV='(?:picture|DIFnomarkup|codeblock)[\w\d*@]*' before/$i after/$i > $i 32 | done 33 | 34 | -------------------------------------------------------------------------------- /review/20180110 Pre-JAX planning.md: -------------------------------------------------------------------------------- 1 | * Whither CPOs? Follow concepts? `swap` can't. CPOs default to `std2`. 2 | * Remove the deprecated rvalue behavior for the `c?r?begin`, `c?r?end`, and `c?data` CPO variants. 3 | * Do we want to propose `cdata` at all? Casey made it up for consistency, and was hoping to get user feedback to decide whether or not to standardize. 4 | * Everything in `std2` should go into a `v1` inline namespace. 5 | * Division into `std` and `std2`: 6 | * Clause 6 & 7 into namespace `std` 7 | * Make `WeaklyEqualityComparable` exposition-only 8 | * How to access `std` concepts from `std2`? pull in with `using`? Always qualify? 9 | * Clause 8: 10 | * `std`: 11 | * Constraining `std::exchange` is probably fine 12 | * `invoke` is already in C++17 - we can simply omit. 13 | * `common_type` and `common_reference` can merge into namespace `std`. 14 | * `std2`: 15 | * function objects *must* go into `std2`. What about ericniebler/stl2#21? No consensus for change for JAX. 16 | * swappable traits, although they are identical to those in std except for using the `std2` CPO. 17 | * `tagged` 18 | * Clause 9-11 Iterators/Ranges/Algorithms into `std2` 19 | * What about the fact that algs in `std` are more specialized since they take iterator pairs? (ericniebler/stl2#371) 20 | * Clause 12 into `std` (this is literally only the URNG concept, which should be renamed URBG) 21 | -------------------------------------------------------------------------------- /ext/range_access/D0970R1.bib: -------------------------------------------------------------------------------- 1 | @MISC{range-v3, 2 | author = {Niebler, Eric}, 3 | title = {Range-v3}, 4 | howpublished = {\url{https://github.com/ericniebler/range-v3}}, 5 | note = {Accessed: 2015-4-6} 6 | } 7 | @MISC{N4128, 8 | author = {Niebler, Eric and Parent, Sean and Sutton, Andrew}, 9 | title = "N4128: Ranges for the Standard Library, Revision 1", 10 | year = {2014}, 11 | month = {10}, 12 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html}}, 13 | } 14 | @MISC{P0789, 15 | author = {Niebler, Eric}, 16 | title = "P0789R3: Range Adaptors and Utilities", 17 | year = {2018}, 18 | month = {05}, 19 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0789r3.pdf}}, 20 | } 21 | @MISC{P0896, 22 | author = {Niebler, Eric and Casey, Carter}, 23 | title = "P0896R1: Merging the Ranges TS", 24 | year = {2018}, 25 | month = {05}, 26 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r1.pdf}}, 27 | } 28 | @MISC{ranges-ts, 29 | author = {Niebler, Eric and Carter, Casey}, 30 | title = "N4685: C++ Extensions for Ranges", 31 | year = {2017}, 32 | month = {7}, 33 | note = {\url{http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2017/n4685.pdf}}, 34 | } 35 | @BOOK{Stepanov:2009:EP:1614221, 36 | author = {Stepanov, Alexander and McJones, Paul}, 37 | title = {Elements of Programming}, 38 | year = {2009}, 39 | isbn = {032163537X, 9780321635372}, 40 | edition = {1st}, 41 | publisher = {Addison-Wesley Professional}, 42 | } 43 | -------------------------------------------------------------------------------- /review/proxy iterators review telecon 9-16-2016.txt: -------------------------------------------------------------------------------- 1 | (Starting after iter_swap specification) 2 | 3 | Casey 4 | Eric 5 | Ville 6 | Jonathan Wakely 7 | Marshall 8 | 9 | iter_swap 10 | --- 11 | Alisdair: make _Dereferencable a real concept? Consensus: no. 12 | _Capitol names are ok! 13 | 14 | Review wording validity of references after iterator operations (like increment) 15 | 16 | iter_move: 17 | "1. The return type is Ret where Ret is 18 | remove_reference_t>&& if I is 19 | a reference type; decay_t, otherwise." 20 | 21 | "1. The return type is Ret where Ret is 22 | remove_reference_t>&& if reference_t is 23 | a reference type; decay_t>, otherwise." 24 | 25 | [iterator.traits] 26 | Marshall: do we really want to call this section iterator.traits? Answer: no we don't! 27 | Use _v variable templates. 28 | Jonathan: use std::conjunction. Wait, no, that's C++17. Leave it. 29 | Remove bool_constant 30 | Slurp in is_nothrow_swappable_with_v and friends. 31 | Check Ranges TS for is_swappable_with conformance 32 | Strike "Overload resolution" about iter_swap and iter_move customization point objects. 33 | 34 | Make sure common_type_t works. 35 | Confer with Walter about specializing on types that depend on UDT (std::pair). 36 | 37 | Marshall: Shall we bring this to plenary to integrate into the Ranges TS? 38 | Jonathan: ... subject to review of changes in Issaquah. 39 | **No objections.** 40 | 41 | TODO: Get updated Proxy Iterators paper into the pre-meeting mailing. 42 | Bonus: have an updated Ranges TS for the post-meeting mailing. 43 | -------------------------------------------------------------------------------- /ready/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 | $if(toc)$ 52 |
53 | $toc$ 54 |
55 | $endif$ 56 | $body$ 57 | $for(include-after)$ 58 | $include-after$ 59 | $endfor$ 60 | 61 | 62 | -------------------------------------------------------------------------------- /report/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 | $if(toc)$ 52 |
53 | $toc$ 54 |
55 | $endif$ 56 | $body$ 57 | $for(include-after)$ 58 | $include-after$ 59 | $endfor$ 60 | 61 | 62 | -------------------------------------------------------------------------------- /ext/constexpr/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 | $if(toc)$ 52 |
53 | $toc$ 54 |
55 | $endif$ 56 | $body$ 57 | $for(include-after)$ 58 | $include-after$ 59 | $endfor$ 60 | 61 | 62 | -------------------------------------------------------------------------------- /ext/omnibus/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 | $if(toc)$ 52 |
53 | $toc$ 54 |
55 | $endif$ 56 | $body$ 57 | $for(include-after)$ 58 | $include-after$ 59 | $endfor$ 60 | 61 | 62 | -------------------------------------------------------------------------------- /ext/post_inc/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 | $if(toc)$ 52 |
53 | $toc$ 54 |
55 | $endif$ 56 | $body$ 57 | $for(include-after)$ 58 | $include-after$ 59 | $endfor$ 60 | 61 | 62 | -------------------------------------------------------------------------------- /ext/writable/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 | $if(toc)$ 52 |
53 | $toc$ 54 |
55 | $endif$ 56 | $body$ 57 | $for(include-after)$ 58 | $include-after$ 59 | $endfor$ 60 | 61 | 62 | -------------------------------------------------------------------------------- /ext/constructible/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 | $if(toc)$ 52 |
53 | $toc$ 54 |
55 | $endif$ 56 | $body$ 57 | $for(include-after)$ 58 | $include-after$ 59 | $endfor$ 60 | 61 | 62 | -------------------------------------------------------------------------------- /ext/variable_concepts/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 | $if(toc)$ 52 |
53 | $toc$ 54 |
55 | $endif$ 56 | $body$ 57 | $for(include-after)$ 58 | $include-after$ 59 | $endfor$ 60 | 61 | 62 | -------------------------------------------------------------------------------- /tools/grambase.tex: -------------------------------------------------------------------------------- 1 | \infannex{gram}{Grammar summary} 2 | 3 | \begin{paras} 4 | 5 | \pnum 6 | \index{grammar}% 7 | \index{summary, syntax}% 8 | This summary of \Cpp\ syntax is intended to be an aid to comprehension. 9 | It is not an exact statement of the language. 10 | In particular, the grammar described here accepts 11 | a superset of valid \Cpp\ constructs. 12 | Disambiguation rules (\ref{stmt.ambig}, \ref{dcl.spec}, \ref{class.member.lookup}) 13 | must be applied to distinguish expressions from declarations. 14 | Further, access control, ambiguity, and type rules must be used 15 | to weed out syntactically valid but meaningless constructs. 16 | 17 | \rSec1[gram.key]{Keywords} 18 | 19 | \pnum 20 | \index{keyword}% 21 | New context-dependent keywords are introduced into a program by 22 | \tcode{typedef}~(\ref{dcl.typedef}), 23 | \tcode{namespace}~(\ref{namespace.def}), 24 | \tcode{class}~(clause \ref{class}), \tcode{enumeration}~(\ref{dcl.enum}), and 25 | \tcode{template}~(clause \ref{temp}) 26 | declarations. 27 | 28 | \begin{bnf} 29 | typedef-name:\br 30 | identifier 31 | \end{bnf} 32 | 33 | \begin{bnf} 34 | namespace-name:\br 35 | original-namespace-name\br 36 | namespace-alias 37 | 38 | original-namespace-name:\br 39 | identifier 40 | 41 | namespace-alias:\br 42 | identifier 43 | \end{bnf} 44 | 45 | \begin{bnf} 46 | class-name:\br 47 | identifier\br 48 | simple-template-id 49 | \end{bnf} 50 | 51 | \begin{bnf} 52 | enum-name:\br 53 | identifier 54 | \end{bnf} 55 | 56 | \begin{bnf} 57 | template-name:\br 58 | identifier 59 | \end{bnf} 60 | 61 | Note that a 62 | \textit{typedef-name}\ 63 | naming a class is also a 64 | \textit{class-name}\ 65 | (\ref{class.name}). 66 | 67 | \end{paras} 68 | 69 | % machine generated after this line; do not edit 70 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Core latex/pdflatex auxiliary files: 2 | *.aux 3 | *.lof 4 | *.log 5 | *.lot 6 | *.fls 7 | *.out 8 | *.toc 9 | 10 | ## Intermediate documents: 11 | *.dvi 12 | *-converted-to.* 13 | # these rules might exclude image files for figures etc. 14 | # *.ps 15 | # *.eps 16 | # *.pdf 17 | 18 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 19 | *.bbl 20 | *.bcf 21 | *.blg 22 | *-blx.aux 23 | *-blx.bib 24 | *.brf 25 | *.run.xml 26 | 27 | ## Build tool auxiliary files: 28 | *.fdb_latexmk 29 | *.synctex.gz 30 | *.synctex.gz(busy) 31 | *.pdfsync 32 | 33 | ## Auxiliary and intermediate files from other packages: 34 | 35 | # algorithms 36 | *.alg 37 | *.loa 38 | 39 | # amsthm 40 | *.thm 41 | 42 | # beamer 43 | *.nav 44 | *.snm 45 | *.vrb 46 | 47 | #(e)ledmac/(e)ledpar 48 | *.end 49 | *.[1-9] 50 | *.[1-9][0-9] 51 | *.[1-9][0-9][0-9] 52 | *.[1-9]R 53 | *.[1-9][0-9]R 54 | *.[1-9][0-9][0-9]R 55 | *.eledsec[1-9] 56 | *.eledsec[1-9]R 57 | *.eledsec[1-9][0-9] 58 | *.eledsec[1-9][0-9]R 59 | *.eledsec[1-9][0-9][0-9] 60 | *.eledsec[1-9][0-9][0-9]R 61 | 62 | # glossaries 63 | *.acn 64 | *.acr 65 | *.glg 66 | *.glo 67 | *.gls 68 | 69 | # hyperref 70 | *.brf 71 | 72 | # listings 73 | *.lol 74 | 75 | # makeidx 76 | *.idx 77 | *.ilg 78 | *.ind 79 | *.ist 80 | 81 | # minitoc 82 | *.maf 83 | *.mtc 84 | *.mtc0 85 | 86 | # minted 87 | *.pyg 88 | 89 | # morewrites 90 | *.mw 91 | 92 | # nomencl 93 | *.nlo 94 | 95 | # sagetex 96 | *.sagetex.sage 97 | *.sagetex.py 98 | *.sagetex.scmd 99 | 100 | # sympy 101 | *.sout 102 | *.sympy 103 | sympy-plots-for-*.tex/ 104 | 105 | # todonotes 106 | *.tdo 107 | 108 | # xindy 109 | *.xdy 110 | 111 | # emacs 112 | *~ 113 | .#.* 114 | .vscode/ 115 | 116 | grammar.tex 117 | xref.tex 118 | xref.tmp 119 | ranges.pdf 120 | -------------------------------------------------------------------------------- /review/ranges telecon 3.txt: -------------------------------------------------------------------------------- 1 | separate para number for synopsis 2 | 3 | 20.2.2 is_nothrow_destructible is implied 4 | 5 | Make function objects non-template classes? (No.) 6 | 7 | Function objects: remove nested typedefs 8 | 9 | Find old issue about naming of "identity". #700 (Talk to PJ.) 10 | 11 | Tagged 12 | ====== 13 | 14 | 20.15.1 /p1 Examples of tuple-like types 15 | 16 | Ville suggests a separate paper for tagged. (Doesn't need to be an official document; can be published after the mailing deadline.) 17 | 18 | /p2 Walter doesn't like "in order". 19 | 20 | Ville: duplicate text between make_pair and make_tagged_pair 21 | 22 | Walter: what about tagged and array? Open an issue. 23 | 24 | 25 | Iterators 26 | ========= 27 | 28 | IndirectlySwappable s/value types/reference types/ 29 | 30 | WeaklyIncrementable: s/moves i to the next element/advances i to denote the next (possibly past the last) element/ ??? 31 | "describes an ordered sequence of values"?? 32 | Open an issue! 33 | "both/and" not "either/or" 34 | 35 | 24.2.10/2 s/effectively//. s/deducable/deduceable/ 36 | 37 | Sentinel 38 | -- 39 | s/past-the-end/past-the-last/ 40 | 41 | WeakOutputIterator 42 | -- 43 | "comparable for equality" -> "EqualityComparable" 44 | 45 | ForwardIterator 46 | ------- 47 | unstrike "to other value initialized iterators of the same type" 48 | "describe" -> specify 49 | 50 | RandomAccessIterator 51 | -- 52 | p1, add op- to constant-time advance list. 53 | "++a, bool(a == b)" -> "++a, then bool(a == b)". 54 | 55 | Projected iterator 56 | --------- 57 | iterator -> readable 58 | Define projections or add a reference 59 | section name should not be "indirectcallables" 60 | 61 | 62 | meta: stable names are backwards. use parent.child 63 | 64 | 65 | 66 | 24.3.3 is the last covered subsection. 67 | 68 | 25 Sept is the mailing deadline!! 69 | -------------------------------------------------------------------------------- /numerics.tex: -------------------------------------------------------------------------------- 1 | \rSec0[numerics]{Numerics library} 2 | 3 | \synopsis{Header \tcode{} synopsis} 4 | 5 | \begin{codeblock} 6 | namespace std { namespace experimental { namespace ranges { inline namespace v1 { 7 | template 8 | concept bool UniformRandomNumberGenerator = @\seebelow@; 9 | }}}} 10 | \end{codeblock} 11 | 12 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 13 | % Uniform Random Number Generator requirements: 14 | 15 | \rSec1[rand.req.urng]{Uniform random number generator requirements}% 16 | \indextext{uniform random number generator!requirements|(}% 17 | \indextext{requirements!uniform random number generator|(} 18 | 19 | \begin{codeblock} 20 | template 21 | concept bool UniformRandomNumberGenerator = 22 | Invocable && 23 | UnsignedIntegral> && 24 | requires { 25 | { G::min() } -> Same>&&; 26 | { G::max() } -> Same>&&; 27 | }; 28 | \end{codeblock} 29 | 30 | \pnum 31 | A \techterm{uniform random number generator} 32 | \tcode{g} of type \tcode{G} 33 | is a function object 34 | returning unsigned integer values 35 | such that each value 36 | in the range of possible results 37 | has (ideally) equal probability 38 | of being returned. 39 | \enternote 40 | The degree to which \tcode{g}'s results 41 | approximate the ideal 42 | is often determined statistically. 43 | \exitnote 44 | 45 | \pnum 46 | Let \tcode{g} be any object of type \tcode{G}. 47 | \tcode{UniformRandomNumberGenerator} is satisfied only if 48 | 49 | \begin{itemize} 50 | \item Both \tcode{G::min()} and \tcode{G::max()} are constant expressions~(\cxxref{expr.const}). 51 | \item \tcode{G::min() < G::max()}. 52 | \item \tcode{G::min() <= g()}. 53 | \item \tcode{g() <= G::max()}. 54 | \item \tcode{g()} has amortized constant complexity. 55 | \end{itemize} 56 | -------------------------------------------------------------------------------- /ext/proxy/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 |
52 |

“Never do that by proxy which you can do yourself.”

53 |

54 | – Italian proverb 55 |

56 |
57 | $if(toc)$ 58 |
59 | $toc$ 60 |
61 | $endif$ 62 | $body$ 63 | $for(include-after)$ 64 | $include-after$ 65 | $endfor$ 66 | 67 | 68 | -------------------------------------------------------------------------------- /review/201703 kona ranges review (P0541 and P0547).txt: -------------------------------------------------------------------------------- 1 | P0547: 2 | 3 | Assignable 1.2.2 needs "valid but unspecified" 4 | 5 | Assignable short circuits correctly with "weird" types? require { typename T&&; } // preconditions may make this moot? 6 | 7 | Don't forbid types traits, make it unspecified. "need not be". STL: Blanket wording is better? 8 | 9 | merge 1.2.1 into 1.2. 10 | 11 | (Reference lib.types.movedfrom in 20 to save on words) 12 | 13 | Destructible "of all types" insert a comma "instances of which" 14 | 15 | MC wants a note on Destructible indicating that it forbids noexcept(true) destructors. 16 | 17 | Don't qualify addressof. 18 | 19 | Don't forbid overloaded &. strike 2 & 3. 20 | 21 | Think about a new term for "implicit expression variants" 22 | 23 | Copy and MoveConstructible, merge 1.1 into 1. 24 | 25 | 1.1.1 say "u is equal to v" 26 | 27 | Use "In" for Readable. 28 | 29 | Writable should work with rvalue Out. 30 | 31 | P0541: 32 | 33 | Ranges TS wide: be consistent about explicitly requiring typename constraints. 34 | 35 | replace "see below" with "decltype(auto)" in 36 | 37 | basic guarantee in counted_iterator's postincrement and postdecrement. (If that results in inconsistently ordered operations, STL wants a note to explain why.) 38 | 39 | simplify common_/counted_iterator++ to be in terms of pre-increment and inherit requirements. 40 | 41 | #155: 42 | 43 | Consider reducing Boolean to Integral 44 | 45 | WeaklyEqualityComparable: "respectively" 46 | 47 | EqualityComparable and Relation: a -> t, b -> u 48 | 49 | StrictTotallyOrdered: STL prefers bool(a >b) to bool (b < a) 50 | 51 | #167 needs the "valid but unspecified" boilerplate fix as well. 52 | 53 | 54 | LWG: 55 | 56 | After applying this, consider making a sweep of the TS to see where "expression-equivalent" could be used to simplify the existing wording. `iter_exchange` is *unlike* `exchange`, in that it always moves from the right-hand operand. It should either have a different / better name, or be exposition-only. 57 | -------------------------------------------------------------------------------- /ext/range_for/pandoc-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $for(author-meta)$ 8 | 9 | $endfor$ 10 | $if(date-meta)$ 11 | 12 | $endif$ 13 | $if(title-prefix)$$title-prefix$ - $endif$$pagetitle$ 14 | 15 | $if(quotes)$ 16 | 17 | $endif$ 18 | $if(highlighting-css)$ 19 | 22 | $endif$ 23 | $for(css)$ 24 | 25 | $endfor$ 26 | $if(math)$ 27 | $math$ 28 | $endif$ 29 | $for(header-includes)$ 30 | $header-includes$ 31 | $endfor$ 32 | 33 | 34 | $for(include-before)$ 35 | $include-before$ 36 | $endfor$ 37 | $if(title)$ 38 |
39 |

$title$

40 | $if(subtitle)$ 41 |

$subtitle$

42 | $endif$ 43 | $for(author)$ 44 |

$author$

45 | $endfor$ 46 | $if(date)$ 47 |

$date$

48 | $endif$ 49 |
50 | $endif$ 51 |
52 |

“In the end, we are self-perceiving, self-inventing, locked-in mirages that are little miracles of self-reference.”

53 |

54 | – Douglas Hofstadter, I Am a [St]range Loop 55 |

56 |
57 | $if(toc)$ 58 |
59 | $toc$ 60 |
61 | $endif$ 62 | $body$ 63 | $for(include-after)$ 64 | $include-after$ 65 | $endfor$ 66 | 67 | 68 | -------------------------------------------------------------------------------- /layout.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %% layout.tex -- set overall page appearance 3 | 4 | %%-------------------------------------------------- 5 | %% set page size, type block size, type block position 6 | 7 | %%\setstocksize{11in}{8.5in} 8 | %%\settrimmedsize{11in}{8.5in}{*} 9 | \setlrmarginsandblock{1in}{1in}{*} 10 | \setulmarginsandblock{1in}{*}{1.618} 11 | 12 | %%-------------------------------------------------- 13 | %% set header and footer positions and sizes 14 | 15 | \setheadfoot{\onelineskip}{2\onelineskip} 16 | \setheaderspaces{*}{2\onelineskip}{*} 17 | 18 | %%-------------------------------------------------- 19 | %% make miscellaneous adjustments, then finish the layout 20 | \setmarginnotes{7pt}{7pt}{0pt} 21 | \checkandfixthelayout 22 | 23 | %%-------------------------------------------------- 24 | %% Paragraph and bullet numbering 25 | 26 | \newcounter{Paras} 27 | \counterwithin{Paras}{chapter} 28 | \counterwithin{Paras}{section} 29 | \counterwithin{Paras}{subsection} 30 | \counterwithin{Paras}{subsubsection} 31 | \counterwithin{Paras}{paragraph} 32 | \counterwithin{Paras}{subparagraph} 33 | 34 | \newcounter{Bullets1}[Paras] 35 | \newcounter{Bullets2}[Bullets1] 36 | \newcounter{Bullets3}[Bullets2] 37 | \newcounter{Bullets4}[Bullets3] 38 | 39 | \makeatletter 40 | \newcommand{\parabullnum}[2]{% 41 | \stepcounter{#1}% 42 | \noindent\makebox[0pt][l]{\makebox[#2][r]{% 43 | \scriptsize\raisebox{.7ex}% 44 | {% 45 | \ifnum \value{Paras}>0 46 | \ifnum \value{Bullets1}>0 (\fi% 47 | \arabic{Paras}% 48 | \ifnum \value{Bullets1}>0 .\arabic{Bullets1}% 49 | \ifnum \value{Bullets2}>0 .\arabic{Bullets2}% 50 | \ifnum \value{Bullets3}>0 .\arabic{Bullets3}% 51 | \fi\fi\fi% 52 | \ifnum \value{Bullets1}>0 )\fi% 53 | \fi% 54 | }% 55 | \hspace{\@totalleftmargin}\quad% 56 | }}} 57 | \makeatother 58 | 59 | \def\pnum{\parabullnum{Paras}{0pt}} 60 | 61 | % Leave more room for section numbers in TOC 62 | \cftsetindents{section}{1.5em}{3.0em} 63 | 64 | % For compatibility only. We no longer need this environment. 65 | \newenvironment{paras}{}{} 66 | -------------------------------------------------------------------------------- /ext/us2/layout.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %% layout.tex -- set overall page appearance 3 | 4 | %%-------------------------------------------------- 5 | %% set page size, type block size, type block position 6 | 7 | \setstocksize{11in}{8.5in} 8 | \settrimmedsize{11in}{8.5in}{*} 9 | \setlrmarginsandblock{1in}{1in}{*} 10 | \setulmarginsandblock{1in}{*}{1.618} 11 | 12 | %%-------------------------------------------------- 13 | %% set header and footer positions and sizes 14 | 15 | \setheadfoot{\onelineskip}{2\onelineskip} 16 | \setheaderspaces{*}{2\onelineskip}{*} 17 | 18 | %%-------------------------------------------------- 19 | %% make miscellaneous adjustments, then finish the layout 20 | \setmarginnotes{7pt}{7pt}{0pt} 21 | \checkandfixthelayout 22 | 23 | %%-------------------------------------------------- 24 | %% Paragraph and bullet numbering 25 | 26 | \newcounter{Paras} 27 | \counterwithin{Paras}{chapter} 28 | \counterwithin{Paras}{section} 29 | \counterwithin{Paras}{subsection} 30 | \counterwithin{Paras}{subsubsection} 31 | \counterwithin{Paras}{paragraph} 32 | \counterwithin{Paras}{subparagraph} 33 | 34 | \newcounter{Bullets1}[Paras] 35 | \newcounter{Bullets2}[Bullets1] 36 | \newcounter{Bullets3}[Bullets2] 37 | \newcounter{Bullets4}[Bullets3] 38 | 39 | \makeatletter 40 | \newcommand{\parabullnum}[2]{% 41 | \stepcounter{#1}% 42 | \noindent\makebox[0pt][l]{\makebox[#2][r]{% 43 | \scriptsize\raisebox{.7ex}% 44 | {% 45 | \ifnum \value{Paras}>0 46 | \ifnum \value{Bullets1}>0 (\fi% 47 | \arabic{Paras}% 48 | \ifnum \value{Bullets1}>0 .\arabic{Bullets1}% 49 | \ifnum \value{Bullets2}>0 .\arabic{Bullets2}% 50 | \ifnum \value{Bullets3}>0 .\arabic{Bullets3}% 51 | \fi\fi\fi% 52 | \ifnum \value{Bullets1}>0 )\fi% 53 | \fi% 54 | }% 55 | \hspace{\@totalleftmargin}\quad% 56 | }}} 57 | \makeatother 58 | 59 | \def\pnum{\parabullnum{Paras}{0pt}} 60 | 61 | % Leave more room for section numbers in TOC 62 | \cftsetindents{section}{1.5em}{3.0em} 63 | 64 | % For compatibility only. We no longer need this environment. 65 | \newenvironment{paras}{}{} 66 | -------------------------------------------------------------------------------- /ext/adaptors/layout.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D0789R3.tex 2 | %% layout.tex -- set overall page appearance 3 | 4 | %%-------------------------------------------------- 5 | %% set page size, type block size, type block position 6 | 7 | \setstocksize{11in}{8.5in} 8 | \settrimmedsize{11in}{8.5in}{*} 9 | \setlrmarginsandblock{1in}{1in}{*} 10 | \setulmarginsandblock{1in}{*}{1.618} 11 | 12 | %%-------------------------------------------------- 13 | %% set header and footer positions and sizes 14 | 15 | \setheadfoot{\onelineskip}{2\onelineskip} 16 | \setheaderspaces{*}{2\onelineskip}{*} 17 | 18 | %%-------------------------------------------------- 19 | %% make miscellaneous adjustments, then finish the layout 20 | \setmarginnotes{7pt}{7pt}{0pt} 21 | \checkandfixthelayout 22 | 23 | %%-------------------------------------------------- 24 | %% Paragraph and bullet numbering 25 | 26 | \newcounter{Paras} 27 | \counterwithin{Paras}{chapter} 28 | \counterwithin{Paras}{section} 29 | \counterwithin{Paras}{subsection} 30 | \counterwithin{Paras}{subsubsection} 31 | \counterwithin{Paras}{paragraph} 32 | \counterwithin{Paras}{subparagraph} 33 | 34 | \newcounter{Bullets1}[Paras] 35 | \newcounter{Bullets2}[Bullets1] 36 | \newcounter{Bullets3}[Bullets2] 37 | \newcounter{Bullets4}[Bullets3] 38 | 39 | \makeatletter 40 | \newcommand{\parabullnum}[2]{% 41 | \stepcounter{#1}% 42 | \noindent\makebox[0pt][l]{\makebox[#2][r]{% 43 | \scriptsize\raisebox{.7ex}% 44 | {% 45 | \ifnum \value{Paras}>0 46 | \ifnum \value{Bullets1}>0 (\fi% 47 | \arabic{Paras}% 48 | \ifnum \value{Bullets1}>0 .\arabic{Bullets1}% 49 | \ifnum \value{Bullets2}>0 .\arabic{Bullets2}% 50 | \ifnum \value{Bullets3}>0 .\arabic{Bullets3}% 51 | \fi\fi\fi% 52 | \ifnum \value{Bullets1}>0 )\fi% 53 | \fi% 54 | }% 55 | \hspace{\@totalleftmargin}\quad% 56 | }}} 57 | \makeatother 58 | 59 | \def\pnum{\parabullnum{Paras}{0pt}} 60 | 61 | % Leave more room for section numbers in TOC 62 | \cftsetindents{section}{1.5em}{3.0em} 63 | 64 | % For compatibility only. We no longer need this environment. 65 | \newenvironment{paras}{}{} 66 | -------------------------------------------------------------------------------- /ext/integrate/layout.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D1037.tex 2 | %% layout.tex -- set overall page appearance 3 | 4 | %%-------------------------------------------------- 5 | %% set page size, type block size, type block position 6 | 7 | \setstocksize{11in}{8.5in} 8 | \settrimmedsize{11in}{8.5in}{*} 9 | \setlrmarginsandblock{1in}{1in}{*} 10 | \setulmarginsandblock{1in}{*}{1.618} 11 | 12 | %%-------------------------------------------------- 13 | %% set header and footer positions and sizes 14 | 15 | \setheadfoot{\onelineskip}{2\onelineskip} 16 | \setheaderspaces{*}{2\onelineskip}{*} 17 | 18 | %%-------------------------------------------------- 19 | %% make miscellaneous adjustments, then finish the layout 20 | \setmarginnotes{7pt}{7pt}{0pt} 21 | \checkandfixthelayout 22 | 23 | %%-------------------------------------------------- 24 | %% Paragraph and bullet numbering 25 | 26 | \newcounter{Paras} 27 | \counterwithin{Paras}{chapter} 28 | \counterwithin{Paras}{section} 29 | \counterwithin{Paras}{subsection} 30 | \counterwithin{Paras}{subsubsection} 31 | \counterwithin{Paras}{paragraph} 32 | \counterwithin{Paras}{subparagraph} 33 | 34 | \newcounter{Bullets1}[Paras] 35 | \newcounter{Bullets2}[Bullets1] 36 | \newcounter{Bullets3}[Bullets2] 37 | \newcounter{Bullets4}[Bullets3] 38 | 39 | \makeatletter 40 | \newcommand{\parabullnum}[2]{% 41 | \stepcounter{#1}% 42 | \noindent\makebox[0pt][l]{\makebox[#2][r]{% 43 | \scriptsize\raisebox{.7ex}% 44 | {% 45 | \ifnum \value{Paras}>0 46 | \ifnum \value{Bullets1}>0 (\fi% 47 | \arabic{Paras}% 48 | \ifnum \value{Bullets1}>0 .\arabic{Bullets1}% 49 | \ifnum \value{Bullets2}>0 .\arabic{Bullets2}% 50 | \ifnum \value{Bullets3}>0 .\arabic{Bullets3}% 51 | \fi\fi\fi% 52 | \ifnum \value{Bullets1}>0 )\fi% 53 | \fi% 54 | }% 55 | \hspace{\@totalleftmargin}\quad% 56 | }}} 57 | \makeatother 58 | 59 | \def\pnum{\parabullnum{Paras}{0pt}} 60 | 61 | % Leave more room for section numbers in TOC 62 | \cftsetindents{section}{1.5em}{3.0em} 63 | 64 | % For compatibility only. We no longer need this environment. 65 | \newenvironment{paras}{}{} 66 | -------------------------------------------------------------------------------- /ext/range_access/layout.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = D0970R1.tex 2 | %% layout.tex -- set overall page appearance 3 | 4 | %%-------------------------------------------------- 5 | %% set page size, type block size, type block position 6 | 7 | \setstocksize{11in}{8.5in} 8 | \settrimmedsize{11in}{8.5in}{*} 9 | \setlrmarginsandblock{1in}{1in}{*} 10 | \setulmarginsandblock{1in}{*}{1.618} 11 | 12 | %%-------------------------------------------------- 13 | %% set header and footer positions and sizes 14 | 15 | \setheadfoot{\onelineskip}{2\onelineskip} 16 | \setheaderspaces{*}{2\onelineskip}{*} 17 | 18 | %%-------------------------------------------------- 19 | %% make miscellaneous adjustments, then finish the layout 20 | \setmarginnotes{7pt}{7pt}{0pt} 21 | \checkandfixthelayout 22 | 23 | %%-------------------------------------------------- 24 | %% Paragraph and bullet numbering 25 | 26 | \newcounter{Paras} 27 | \counterwithin{Paras}{chapter} 28 | \counterwithin{Paras}{section} 29 | \counterwithin{Paras}{subsection} 30 | \counterwithin{Paras}{subsubsection} 31 | \counterwithin{Paras}{paragraph} 32 | \counterwithin{Paras}{subparagraph} 33 | 34 | \newcounter{Bullets1}[Paras] 35 | \newcounter{Bullets2}[Bullets1] 36 | \newcounter{Bullets3}[Bullets2] 37 | \newcounter{Bullets4}[Bullets3] 38 | 39 | \makeatletter 40 | \newcommand{\parabullnum}[2]{% 41 | \stepcounter{#1}% 42 | \noindent\makebox[0pt][l]{\makebox[#2][r]{% 43 | \scriptsize\raisebox{.7ex}% 44 | {% 45 | \ifnum \value{Paras}>0 46 | \ifnum \value{Bullets1}>0 (\fi% 47 | \arabic{Paras}% 48 | \ifnum \value{Bullets1}>0 .\arabic{Bullets1}% 49 | \ifnum \value{Bullets2}>0 .\arabic{Bullets2}% 50 | \ifnum \value{Bullets3}>0 .\arabic{Bullets3}% 51 | \fi\fi\fi% 52 | \ifnum \value{Bullets1}>0 )\fi% 53 | \fi% 54 | }% 55 | \hspace{\@totalleftmargin}\quad% 56 | }}} 57 | \makeatother 58 | 59 | \def\pnum{\parabullnum{Paras}{0pt}} 60 | 61 | % Leave more room for section numbers in TOC 62 | \cftsetindents{section}{1.5em}{3.0em} 63 | 64 | % For compatibility only. We no longer need this environment. 65 | \newenvironment{paras}{}{} 66 | -------------------------------------------------------------------------------- /ext/memory-specialisations/layout.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %% layout.tex -- set overall page appearance 3 | 4 | %%-------------------------------------------------- 5 | %% set page size, type block size, type block position 6 | 7 | \setstocksize{11in}{8.5in} 8 | \settrimmedsize{11in}{8.5in}{*} 9 | \setlrmarginsandblock{1in}{1in}{*} 10 | \setulmarginsandblock{1in}{*}{1.618} 11 | 12 | %%-------------------------------------------------- 13 | %% set header and footer positions and sizes 14 | 15 | \setheadfoot{\onelineskip}{2\onelineskip} 16 | \setheaderspaces{*}{2\onelineskip}{*} 17 | 18 | %%-------------------------------------------------- 19 | %% make miscellaneous adjustments, then finish the layout 20 | \setmarginnotes{7pt}{7pt}{0pt} 21 | \checkandfixthelayout 22 | 23 | %%-------------------------------------------------- 24 | %% Paragraph and bullet numbering 25 | 26 | \newcounter{Paras} 27 | \counterwithin{Paras}{chapter} 28 | \counterwithin{Paras}{section} 29 | \counterwithin{Paras}{subsection} 30 | \counterwithin{Paras}{subsubsection} 31 | \counterwithin{Paras}{paragraph} 32 | \counterwithin{Paras}{subparagraph} 33 | 34 | \newcounter{Bullets1}[Paras] 35 | \newcounter{Bullets2}[Bullets1] 36 | \newcounter{Bullets3}[Bullets2] 37 | \newcounter{Bullets4}[Bullets3] 38 | 39 | \makeatletter 40 | \newcommand{\parabullnum}[2]{% 41 | \stepcounter{#1}% 42 | \noindent\makebox[0pt][l]{\makebox[#2][r]{% 43 | \scriptsize\raisebox{.7ex}% 44 | {% 45 | \ifnum \value{Paras}>0 46 | \ifnum \value{Bullets1}>0 (\fi% 47 | \arabic{Paras}% 48 | \ifnum \value{Bullets1}>0 .\arabic{Bullets1}% 49 | \ifnum \value{Bullets2}>0 .\arabic{Bullets2}% 50 | \ifnum \value{Bullets3}>0 .\arabic{Bullets3}% 51 | \fi\fi\fi% 52 | \ifnum \value{Bullets1}>0 )\fi% 53 | \fi% 54 | }% 55 | \hspace{\@totalleftmargin}\quad% 56 | }}} 57 | \makeatother 58 | 59 | \def\pnum{\parabullnum{Paras}{0pt}} 60 | 61 | % Leave more room for section numbers in TOC 62 | \cftsetindents{section}{1.5em}{3.0em} 63 | 64 | % For compatibility only. We no longer need this environment. 65 | \newenvironment{paras}{}{} 66 | -------------------------------------------------------------------------------- /review/proxy iterators detailed review.txt: -------------------------------------------------------------------------------- 1 | CommonReference 2 | ----- 3 | s/or bound// 4 | Change explicitly convertible to "models ConvertibleTo" 5 | 6 | Handle function references, don't lvalue-ify objects 7 | - "objects of type"-> "variables of type" ?? 8 | - Let t1 be declval() ?? 9 | 10 | STL: equal -> equivalant to 11 | JW: Prefer equal 12 | 13 | STL: is a user defined type -> depends on a user defined type 14 | 15 | Common 16 | ---- 17 | Why CommonType& <- why mutable lvalue in the CommonReference? 18 | 19 | is_nothrow_swappable 20 | ----- 21 | don't use R1 and R2. Use T and U 22 | don't use is_nothrow_swappable_t, it doesn't exist. 23 | don't use short template introducer syntax. 24 | use magic wording about how swap gets found. 25 | 26 | basic_common_reference 27 | ----- 28 | Note that basic_common_reference_t is intentionally not provided. (STL: doesn't need a standard note probably.) 29 | 30 | common_type 31 | ----- 32 | is a user-defined type -> depends on a user-defined type 33 | 34 | basic_common_reference 35 | ----- 36 | "shall be no member typedef type" -> the primary template shall have no member typedef type. if users specialize it, the type may be defined or omitted. 37 | 38 | cv qualifiers on the lef 39 | "end example" instead of "exit example" 40 | space before ? in ternary operators 41 | These bullets all need "otherwise" 42 | (3.2) COMMON_RES -> COMMON_REF. LWG is not happy with the wording of (3.2). Maybe introduce a pseudo macro for COMMON_REF(X&,Y&) (don't repeat yourself!) 43 | Don't reuse letters across bullets when they mean something different! 44 | 45 | 46 | common_type 47 | --- 48 | "Let D0 by decay_t" use D0 and D1 instead of X and Y. 49 | (4.4) T1,T2 and R -> T0,T1 and Rest 50 | 51 | common_reference 52 | --- 53 | Same edits as above. 54 | valid reference type -> well-formed and denotes a reference type 55 | uses basic_common_reference_t but doesn't define it. 56 | "denotes a valid type" -> "is well formed" (globally) 57 | 58 | 59 | No __lower or _Cap in the standard!(?) 60 | 61 | Draft new version and schedule a telecon to review. 62 | -------------------------------------------------------------------------------- /ext/merge2std2/cover-wd.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | %%-------------------------------------------------- 3 | %% Title page for this document 4 | 5 | 6 | \thispagestyle{empty} 7 | \begingroup 8 | \def\hd{\begin{tabular}{lll} 9 | \textbf{Document Number:} & {\larger\docno} \\ 10 | \textbf{Date:} & \reldate \\ 11 | \textbf{Audience:} & Library Evolution Working Group, \\ 12 | & Library Working Group \\ 13 | \textbf{Authors:} & Eric Niebler \\ 14 | & Casey Carter \\ 15 | & Christopher Di Bella \\ 16 | \textbf{Reply to:} & Casey Carter \\ 17 | & casey@carter.net 18 | \end{tabular} 19 | } 20 | \newlength{\hdwidth} 21 | \settowidth{\hdwidth}{\hd} 22 | \hfill\begin{minipage}{\hdwidth}\hd\end{minipage} 23 | \endgroup 24 | 25 | \vspace{2.5cm} 26 | \begin{center} 27 | \textbf{\Huge The One Range{\normalsize s Proposal}} \\ 28 | \textbf{(was \doctitle)} 29 | 30 | \vspace{0.5cm} 31 | \textbf{Three Proposals for \libconcept{View}s under the Sky,} \\ 32 | \textbf{Seven for LEWG in their halls of stone,} \\ 33 | \textbf{Nine for the Ranges TS doomed to die,} \\ 34 | \textbf{One for LWG on its dark throne} \\ 35 | \textbf{in the Land of Geneva where the Standards lie.} 36 | 37 | \textbf{One Proposal to \tcode{ranges::merge} them all, One Proposal to \tcode{ranges::find} them,} \\ 38 | \textbf{One Proposal to bring them all and in \tcode{namespace ranges} \tcode{bind} them,} \\ 39 | \textbf{In the Land of Geneva where the Standards lie.} 40 | 41 | \vspace{0.5cm} 42 | With apologies to J.R.R. Tolkien. 43 | \end{center} 44 | \vfill 45 | \textbf{Note: \changed{t}{T}his is an \changed{early}{final} draft. It's known to be \added{both} \removed{in}complet\added{e} and 46 | \removed{in}corre\changed{k}{c}t, and it has \changed{lots of}{no} 47 | b\kern-1.2pta\kern1ptd\hspace{1.5em}for\kern-3ptmat\kern0.6ptti\raise0.15ex\hbox{n}g.} 48 | \newpage 49 | -------------------------------------------------------------------------------- /ext/stdconcepts/layout.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stdconcepts.tex 2 | %% layout.tex -- set overall page appearance 3 | 4 | %%-------------------------------------------------- 5 | %% set page size, type block size, type block position 6 | 7 | \setlrmarginsandblock{2.245cm}{2.245cm}{*} 8 | \setulmarginsandblock{2.5cm}{2.5cm}{*} 9 | 10 | %%-------------------------------------------------- 11 | %% set header and footer positions and sizes 12 | 13 | \setheadfoot{\onelineskip}{2\onelineskip} 14 | \setheaderspaces{*}{2\onelineskip}{*} 15 | 16 | %%-------------------------------------------------- 17 | %% make miscellaneous adjustments, then finish the layout 18 | \setmarginnotes{7pt}{7pt}{0pt} 19 | \checkandfixthelayout 20 | 21 | %%-------------------------------------------------- 22 | %% If there is insufficient stretchable vertical space on a page, 23 | %% TeX will not properly consider penalties for a good page break, 24 | %% even if \raggedbottom (default) is in effect. 25 | \addtolength{\topskip}{0pt plus 20pt} 26 | 27 | %%-------------------------------------------------- 28 | %% Paragraph and bullet numbering 29 | 30 | \newcounter{Paras} 31 | \counterwithin{Paras}{chapter} 32 | \counterwithin{Paras}{section} 33 | \counterwithin{Paras}{subsection} 34 | \counterwithin{Paras}{subsubsection} 35 | \counterwithin{Paras}{paragraph} 36 | \counterwithin{Paras}{subparagraph} 37 | 38 | \newcounter{Bullets1}[Paras] 39 | \newcounter{Bullets2}[Bullets1] 40 | \newcounter{Bullets3}[Bullets2] 41 | \newcounter{Bullets4}[Bullets3] 42 | 43 | \makeatletter 44 | \newcommand{\parabullnum}[2]{% 45 | \stepcounter{#1}% 46 | \noindent\makebox[0pt][l]{\makebox[#2][r]{% 47 | \scriptsize\raisebox{.7ex}% 48 | {% 49 | \ifnum \value{Paras}>0 50 | \ifnum \value{Bullets1}>0 (\fi% 51 | \arabic{Paras}% 52 | \ifnum \value{Bullets1}>0 .\arabic{Bullets1}% 53 | \ifnum \value{Bullets2}>0 .\arabic{Bullets2}% 54 | \ifnum \value{Bullets3}>0 .\arabic{Bullets3}% 55 | \fi\fi\fi% 56 | \ifnum \value{Bullets1}>0 )\fi% 57 | \fi% 58 | }% 59 | \hspace{\@totalleftmargin}\quad% 60 | }}} 61 | \makeatother 62 | 63 | \def\pnum{\parabullnum{Paras}{0pt}} 64 | 65 | % Leave more room for section numbers in TOC 66 | \cftsetindents{section}{1.5em}{3.0em} 67 | -------------------------------------------------------------------------------- /ext/merge2std2/layout.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | %% layout.tex -- set overall page appearance 3 | 4 | %%-------------------------------------------------- 5 | %% set page size, type block size, type block position 6 | 7 | \setlrmarginsandblock{2.245cm}{2.245cm}{*} 8 | \setulmarginsandblock{2.5cm}{2.5cm}{*} 9 | 10 | %%-------------------------------------------------- 11 | %% set header and footer positions and sizes 12 | 13 | \setheadfoot{\onelineskip}{2\onelineskip} 14 | \setheaderspaces{*}{2\onelineskip}{*} 15 | 16 | %%-------------------------------------------------- 17 | %% make miscellaneous adjustments, then finish the layout 18 | \setmarginnotes{7pt}{7pt}{0pt} 19 | \checkandfixthelayout 20 | 21 | %%-------------------------------------------------- 22 | %% If there is insufficient stretchable vertical space on a page, 23 | %% TeX will not properly consider penalties for a good page break, 24 | %% even if \raggedbottom (default) is in effect. 25 | \addtolength{\topskip}{0pt plus 20pt} 26 | 27 | %%-------------------------------------------------- 28 | %% Place footnotes at the bottom of the page, rather 29 | %% than immediately following the main text. 30 | \feetatbottom 31 | 32 | %%-------------------------------------------------- 33 | %% Paragraph and bullet numbering 34 | 35 | \newcounter{Paras} 36 | \counterwithin{Paras}{chapter} 37 | \counterwithin{Paras}{section} 38 | \counterwithin{Paras}{subsection} 39 | \counterwithin{Paras}{subsubsection} 40 | \counterwithin{Paras}{paragraph} 41 | \counterwithin{Paras}{subparagraph} 42 | 43 | \newcounter{Bullets1}[Paras] 44 | \newcounter{Bullets2}[Bullets1] 45 | \newcounter{Bullets3}[Bullets2] 46 | \newcounter{Bullets4}[Bullets3] 47 | 48 | \makeatletter 49 | \newcommand{\parabullnum}[2]{% 50 | \stepcounter{#1}% 51 | \noindent\makebox[0pt][l]{\makebox[#2][r]{% 52 | \scriptsize\raisebox{.7ex}% 53 | {% 54 | \ifnum \value{Paras}>0 55 | \ifnum \value{Bullets1}>0 (\fi% 56 | \arabic{Paras}% 57 | \ifnum \value{Bullets1}>0 .\arabic{Bullets1}% 58 | \ifnum \value{Bullets2}>0 .\arabic{Bullets2}% 59 | \ifnum \value{Bullets3}>0 .\arabic{Bullets3}% 60 | \fi\fi\fi% 61 | \ifnum \value{Bullets1}>0 )\fi% 62 | \fi% 63 | }% 64 | \hspace{\@totalleftmargin}\quad% 65 | }}} 66 | \makeatother 67 | 68 | \def\pnum{\parabullnum{Paras}{0pt}} 69 | 70 | % Leave more room for section numbers in TOC 71 | \cftsetindents{section}{1.5em}{3.0em} 72 | -------------------------------------------------------------------------------- /ext/integrate/D1037.bib: -------------------------------------------------------------------------------- 1 | @MISC{range-v3, 2 | author = {Niebler, Eric}, 3 | title = {Range-v3}, 4 | howpublished = {\url{https://github.com/ericniebler/range-v3}}, 5 | note = {Accessed: 2018-1-31} 6 | } 7 | @MISC{cmcstl2, 8 | author = {Carter, Casey}, 9 | title = {CMCSTL2}, 10 | howpublished = {\url{https://github.com/CaseyCarter/CMCSTL2}}, 11 | note = {Accessed: 2018-1-31} 12 | } 13 | @MISC{N4128, 14 | author = {Niebler, Eric and Parent, Sean and Sutton, Andrew}, 15 | title = "N4128: Ranges for the Standard Library, Revision 1", 16 | year = {2014}, 17 | month = {10}, 18 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html}}, 19 | } 20 | @MISC{P0789, 21 | author = {Niebler, Eric}, 22 | title = "P0789R3: Range Adaptors and Utilities", 23 | year = {2018}, 24 | month = {05}, 25 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0789r3.pdf}}, 26 | } 27 | @MISC{P0898, 28 | author = {Carter, Casey and Niebler, Eric}, 29 | title = "P0898: Standard Library Concepts", 30 | year = {2018}, 31 | month = {05}, 32 | note = {\url{http://wg21.link/P0898}}, 33 | } 34 | @MISC{P0944, 35 | author = {Carter, Casey}, 36 | title = "P0944: Contiguous Ranges", 37 | year = {2018}, 38 | month = {02}, 39 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0944r0.html}}, 40 | } 41 | @MISC{P0896, 42 | author = {Niebler, Eric and Carter, Casey}, 43 | title = "P0896: Merging the Ranges TS", 44 | year = {2018}, 45 | month = {05}, 46 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r1.pdf}}, 47 | } 48 | @MISC{ranges-ts, 49 | author = {Niebler, Eric and Carter, Casey}, 50 | title = "N4685: C++ Extensions for Ranges", 51 | year = {2017}, 52 | month = {7}, 53 | note = {\url{http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2017/n4685.pdf}}, 54 | } 55 | @BOOK{Stepanov:2009:EP:1614221, 56 | author = {Stepanov, Alexander and McJones, Paul}, 57 | title = {Elements of Programming}, 58 | year = {2009}, 59 | isbn = {032163537X, 9780321635372}, 60 | edition = {1st}, 61 | publisher = {Addison-Wesley Professional}, 62 | } 63 | @MISC{expr-sfinae, 64 | author = {Spicer, John and Adamczyk, J. Stephen}, 65 | title = "Solving the SFINAE problem for expressions", 66 | year = {2008}, 67 | month = {5}, 68 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html}}, 69 | } 70 | 71 | -------------------------------------------------------------------------------- /ext/stdconcepts/numerics.tex: -------------------------------------------------------------------------------- 1 | \setcounter{chapter}{28} 2 | \rSec0[numerics]{Numerics library} 3 | 4 | \setcounter{section}{5} 5 | \rSec1[rand]{Random number generation} 6 | 7 | \ednote{Relocate \cxxref{rand.synopsis} "Header /tcode{} synopsis" [rand.synopsis] before \cxxref{rand.req} "Requirements" [rand.req]} 8 | 9 | \rSec2[rand.synopsis]{Header \tcode{} synopsis} 10 | \ednote{Modify the \tcode{} synopsis as follows:} 11 | \begin{codeblock} 12 | #include 13 | 14 | namespace std { 15 | @\added{// \ref{rand.req.urng}, concept UniformRandomBitGenerator}@ 16 | @\added{template }@ 17 | @\added{concept UniformRandom\oldtxt{Number}\newtxt{Bit}Generator = \seebelow;}@ 18 | 19 | // \tcode{\cxxref{rand.eng.lcong}, class template linear_congruential_engine} 20 | template 21 | class linear_congruential_engine; 22 | 23 | [...] 24 | \end{codeblock} 25 | 26 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27 | % Uniform Random Number Generator requirements: 28 | 29 | \rSec3[rand.req.urng]{Uniform random bit generator requirements}% 30 | \indextext{uniform random bit generator!requirements|(}% 31 | \indextext{requirements!uniform random bit generator|(} 32 | 33 | \ednote{Add new paragraphs after the existing content:} 34 | \setcounter{Paras}{3} 35 | 36 | \begin{addedblock} 37 | \begin{codeblock} 38 | template 39 | concept UniformRandom@\oldtxt{Number}\newtxt{Bit}@Generator = 40 | Invocable && UnsignedIntegral<@\oldtxt{result_of_t}\newtxt{invoke_result_t}@> && 41 | requires { 42 | @\oldtxt{\{ G::min() \} -> Same{>}\&\&;}@ 43 | @\newtxt{G::min(); requires Same{>};}@ 44 | @\oldtxt{\{ G::max() \} -> Same{>}\&\&;}@ 45 | @\newtxt{G::max(); requires Same{>};}@ 46 | }; 47 | \end{codeblock} 48 | 49 | \pnum 50 | Let \tcode{g} be an object of type \tcode{G}. 51 | \tcode{UniformRandom\oldtxt{Number}\newtxt{Bit}Generator} is satisfied only if 52 | 53 | \begin{itemize} 54 | \item Both \tcode{G::min()} and \tcode{G::max()} are constant expressions~(\cxxref{expr.const}). 55 | \item \tcode{G::min() < G::max()}. 56 | \item \tcode{G::min() <= g()}. 57 | \item \tcode{g() <= G::max()}. 58 | \item \tcode{g()} has amortized constant complexity. 59 | \end{itemize} 60 | \end{addedblock} 61 | -------------------------------------------------------------------------------- /ext/merge2std2/containers.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | 3 | \rSec0[containers]{Containers library} 4 | 5 | [...] 6 | 7 | \setcounter{section}{1} 8 | \rSec1[container.requirements]{Container requirements} 9 | \rSec2[container.requirements.general]{General container requirements} 10 | 11 | [...] 12 | 13 | \setcounter{Paras}{12} 14 | \pnum 15 | \indextext{container!contiguous}% 16 | A \defn{contiguous container} 17 | is a container \removed{that supports random access iterators\iref{random.access.iterators} 18 | and} whose member types \tcode{iterator} and \tcode{const_iterator} 19 | \changed{are contiguous iterators\iref{iterator.requirements.general}}{meet the 20 | \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators} and 21 | model \libconcept{ContiguousIterator}}\iref{iterator.concept.contiguous}. 22 | 23 | [...] 24 | 25 | \setcounter{section}{6} 26 | \rSec1[views]{Views} 27 | 28 | [...] 29 | 30 | \setcounter{subsection}{2} 31 | \rSec2[views.span]{Class template \tcode{span}} 32 | \rSec3[span.overview]{Overview} 33 | 34 | [...] 35 | 36 | \setcounter{Paras}{1} 37 | \pnum 38 | The iterator types \tcode{span::iterator} and \tcode{span::const_iterator} 39 | \changed{are random access iterators\iref{random.access.iterators}, 40 | contiguous iterators\iref{iterator.requirements.general}, and}{each 41 | model \libconcept{ContiguousIterator}\iref{iterator.concept.contiguous}, meet 42 | the \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators}, 43 | and meet the requirements for} 44 | constexpr iterators\iref{iterator.requirements.general}. 45 | All requirements on container iterators\iref{container.requirements} apply to 46 | \tcode{span::iterator} and \tcode{span::const_iterator} as well. 47 | 48 | \pnum 49 | All member functions of \tcode{span} have constant time complexity. 50 | 51 | \indexlibrary{\idxcode{span}}% 52 | \begin{codeblock} 53 | namespace std { 54 | template 55 | class span { 56 | public: 57 | [...] 58 | 59 | // \cxxref{span.iterators}, iterator support 60 | constexpr iterator begin() const noexcept; 61 | constexpr iterator end() const noexcept; 62 | constexpr const_iterator cbegin() const noexcept; 63 | constexpr const_iterator cend() const noexcept; 64 | constexpr reverse_iterator rbegin() const noexcept; 65 | constexpr reverse_iterator rend() const noexcept; 66 | constexpr const_reverse_iterator crbegin() const noexcept; 67 | constexpr const_reverse_iterator crend() const noexcept; 68 | 69 | @\added{friend constexpr iterator begin(span s) noexcept \{ return s.begin(); \}}@ 70 | @\added{friend constexpr iterator end(span s) noexcept \{ return s.end(); \}}@ 71 | 72 | [...] 73 | }; 74 | } 75 | \end{codeblock} 76 | 77 | [...] 78 | -------------------------------------------------------------------------------- /ext/merge2std2/P0896.bib: -------------------------------------------------------------------------------- 1 | @MISC{ASL, 2 | title = {Adobe Source Libraries}, 3 | howpublished = {\url{http://stlab.adobe.com}}, 4 | note = {Accessed: 2014-10-8} 5 | } 6 | @MISC{range-v3, 7 | author = {Niebler, Eric}, 8 | title = {Range-v3}, 9 | howpublished = {\url{https://github.com/ericniebler/range-v3}}, 10 | note = {Accessed: 2018-1-31} 11 | } 12 | @MISC{palo-alto, 13 | author = {Stroustrup, Bjarne and Sutton, Andrew}, 14 | title = "N3351: A Concept Design for the STL", 15 | year = {2012}, 16 | month = {1}, 17 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3351.pdf}}, 18 | } 19 | @MISC{cmcstl2, 20 | author = {Carter, Casey}, 21 | title = {CMCSTL2}, 22 | howpublished = {\url{https://github.com/CaseyCarter/CMCSTL2}}, 23 | note = {Accessed: 2018-1-31} 24 | } 25 | @MISC{N4128, 26 | author = {Niebler, Eric and Parent, Sean and Sutton, Andrew}, 27 | title = "N4128: Ranges for the Standard Library, Revision 1", 28 | year = {2014}, 29 | month = {10}, 30 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html}}, 31 | } 32 | @MISC{P0789, 33 | author = {Niebler, Eric}, 34 | title = "P0789R3: Range Adaptors and Utilities", 35 | year = {2018}, 36 | month = {05}, 37 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0789r3.pdf}}, 38 | } 39 | @MISC{P0898, 40 | author = {Carter, Casey and Niebler, Eric}, 41 | title = "P0898: Standard Library Concepts", 42 | year = {2018}, 43 | month = {05}, 44 | note = {\url{http://wg21.link/P0898}}, 45 | } 46 | @MISC{P0944, 47 | author = {Carter, Casey}, 48 | title = "P0944: Contiguous Ranges", 49 | year = {2018}, 50 | month = {02}, 51 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0944r0.html}}, 52 | } 53 | @MISC{P0896, 54 | author = {Niebler, Eric and Carter, Casey}, 55 | title = "P0896: Merging the Ranges TS", 56 | year = {2018}, 57 | month = {05}, 58 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r1.pdf}}, 59 | } 60 | @MISC{ranges-ts, 61 | author = {Niebler, Eric and Carter, Casey}, 62 | title = "N4685: C++ Extensions for Ranges", 63 | year = {2017}, 64 | month = {7}, 65 | note = {\url{http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2017/n4685.pdf}}, 66 | } 67 | @BOOK{Stepanov:2009:EP:1614221, 68 | author = {Stepanov, Alexander and McJones, Paul}, 69 | title = {Elements of Programming}, 70 | year = {2009}, 71 | isbn = {032163537X, 9780321635372}, 72 | edition = {1st}, 73 | publisher = {Addison-Wesley Professional}, 74 | } 75 | @MISC{expr-sfinae, 76 | author = {Spicer, John and Adamczyk, J. Stephen}, 77 | title = "Solving the SFINAE problem for expressions", 78 | year = {2008}, 79 | month = {5}, 80 | note = {\url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html}}, 81 | } 82 | -------------------------------------------------------------------------------- /ext/merge2std2/strings.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | 3 | \rSec0[strings]{Strings library} 4 | 5 | [...] 6 | 7 | \setcounter{section}{3} 8 | \rSec1[string.view]{String view classes} 9 | 10 | [...] 11 | 12 | \setcounter{subsection}{1} 13 | \rSec2[string.view.template]{Class template \tcode{basic_string_view}} 14 | 15 | \indexlibrary{\idxcode{basic_string_view}}% 16 | \indexlibrarymember{traits_type}{basic_string_view}% 17 | \indexlibrarymember{value_type}{basic_string_view}% 18 | \indexlibrarymember{pointer}{basic_string_view}% 19 | \indexlibrarymember{const_pointer}{basic_string_view}% 20 | \indexlibrarymember{reference}{basic_string_view}% 21 | \indexlibrarymember{const_reference}{basic_string_view}% 22 | \indexlibrarymember{const_iterator}{basic_string_view}% 23 | \indexlibrarymember{iterator}{basic_string_view}% 24 | \indexlibrarymember{const_reverse_iterator}{basic_string_view}% 25 | \indexlibrarymember{reverse_iterator}{basic_string_view}% 26 | \indexlibrarymember{size_type}{basic_string_view}% 27 | \indexlibrarymember{difference_type}{basic_string_view}% 28 | \begin{codeblock} 29 | template> 30 | class basic_string_view { 31 | public: 32 | [...] 33 | 34 | // \ref{string.view.iterators}, iterator support 35 | constexpr const_iterator begin() const noexcept; 36 | constexpr const_iterator end() const noexcept; 37 | constexpr const_iterator cbegin() const noexcept; 38 | constexpr const_iterator cend() const noexcept; 39 | constexpr const_reverse_iterator rbegin() const noexcept; 40 | constexpr const_reverse_iterator rend() const noexcept; 41 | constexpr const_reverse_iterator crbegin() const noexcept; 42 | constexpr const_reverse_iterator crend() const noexcept; 43 | 44 | @\added{friend constexpr const_iterator begin(basic_string_view sv) noexcept \{ return sv.begin(); \}}@ 45 | @\added{friend constexpr const_iterator end(basic_string_view sv) noexcept \{ return sv.end(); \}}@ 46 | 47 | // \cxxref{string.view.capacity}, capacity 48 | constexpr size_type size() const noexcept; 49 | constexpr size_type length() const noexcept; 50 | constexpr size_type max_size() const noexcept; 51 | [[nodiscard]] constexpr bool empty() const noexcept; 52 | 53 | [...] 54 | }; 55 | \end{codeblock} 56 | 57 | [...] 58 | 59 | \setcounter{subsubsection}{1} 60 | \rSec3[string.view.iterators]{Iterator support} 61 | \begin{itemdecl} 62 | using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterator}}@; 63 | \end{itemdecl} 64 | 65 | \begin{itemdescr} 66 | \pnum 67 | A type that meets the requirements 68 | of a constant \removed{random access iterator} 69 | \added{\oldconcept{RandomAccessIterator}}\iref{random.access.iterators} and 70 | \removed{of a contiguous iterator\iref{iterator.concept.contiguous}} 71 | \added{models \libconcept{ContiguousIterator}\iref{iterator.concept.contiguous},} 72 | whose \tcode{value_type} is the template parameter \tcode{charT}. 73 | 74 | \pnum [...] 75 | \end{itemdescr} 76 | 77 | [...] 78 | -------------------------------------------------------------------------------- /review/ranges review issaquah.txt: -------------------------------------------------------------------------------- 1 | -- P0370R2 -- 2 | 3 | [X] alg.general/16 "implementations shall provide" => remove shall 4 | 5 | [X] 17 seems to fall short; i.e., could ask to convert to function pointer. (Tracked as issue 261) 6 | 7 | [X] 18 Wording makes STL nervous ... We could get rid of the weasel wording after removing the deprecated APIs. Limit the possible damage to just these deprecated overloads. (Tracked as issue 261) 8 | 9 | [X] Assignable should require a non-const lvalue LHS. (Issue 229) 10 | 11 | [X] "Args.." typo 12 | 13 | [X] 5.1/7 "customization points objects" s/points/point/ 14 | 15 | [X] ranges::swap; if overload resolution selects some function [utility.swap]/1.1 (Corrected with "if that expression is valid" wording.) 16 | 17 | [X] STL: Missing conditional noexcept on 1.1? (No, intent is that noexcept and constexpr come from the equivalent expression.) Different meaning than typically used for "equivalent to" in the library; Need blanket wording to indicate this usage implies constexpr and noexcept as well. (Tracked as issue 262) 18 | 19 | [X] remove "ranges::swap has type void" in utility.swap/1.3 20 | 21 | [X] strike [taggedtup.tag]/25 "throws" 22 | 23 | [X] Cleanup consistency in the last para of swap "if blah is satisfied" should consistently use the arguments or not. (Consistently do not repeat the parameters.) 24 | 25 | [X] "if that expression is valid" on every bullet of every customization point. 26 | 27 | [X] Dont redundantly specify "If Foo is not satisfied, then ill-formed NDR" after specifying an equivalent expression that already applies that same requirement. (Specifically, ranges::rbegin and rend need not specify this for BidiIterator when they are equivalent to make_reverse_iterator(...) which already imposes that requirement.) 28 | 29 | [X] missing rparens in ranges::end 30 | 31 | [X] Cast with static_cast for all the (const T&) casts in the customization points. 32 | 33 | [X] nuke bullet 2 of rbegin and rend (let arrays fall through) 34 | 35 | [X] "whenever ranges::size(E) is a valid expression, *its* type" 36 | 37 | [X] remark vs note when observing the postconditions of CPOs (specifically empty) 38 | 39 | [X] != in empty should be ==. Wow. 40 | 41 | [X] constexpr things that are constexpr in the WP; specifically advance, distance, next prev. (Tracked as issue 256) 42 | 43 | [X] delete excess ">" from advance p6. 44 | 45 | [X] Consider removing the allowance for Writable's operator* to be modifying, especially in common_iterator. (Tracked as issue 260) 46 | 47 | [X] common_iterator::sent is a bad name (Rename to "sentinel") 48 | 49 | [X] common_iterator: We can't assign something that is not initialized. (Tracked as issue 250) 50 | 51 | [X] ~common_iterator: destroys **all** members that are initialized. 52 | 53 | [X] op< for counted_iterator shouldn't that be a note? 54 | 55 | -- P0441 -- 56 | 57 | [X] "decltype(E) is T" should be "decltype((E)) is T" 58 | 59 | [X] move_sentinel constructor mis-use of literal type. shall -> is. 60 | 61 | [X] move_sentinel assignment operator returns what? 62 | 63 | [X] stray ``` 64 | 65 | [X] equivalent to **return** xxx 66 | 67 | [X] adn -> and 68 | -------------------------------------------------------------------------------- /review/mclow DTS review.txt: -------------------------------------------------------------------------------- 1 | * [structure.requirements]/1: “program that extends the Ranges library” — is that the correct term? 2 | Also, it would be nice if the reference in /3 was a link, but I don’t think were set up for cross-document links. 3 | 4 | The wording in [structure.requirements] comes straight from C++14, with the obvious replacement of "standard library" with "Ranges library." It may not be the correct term, but it's at least as correct as the standard. Agreed on both counts about linking into the Concepts TS: would be nice, I don't now how to do it and won't find out before the post-meeting mailing deadline tomorrow morning. (Filed issue ericniebler/stl2#291.) 5 | 6 | 7 | * [concepts.lib.corelang.assignable]/1.2.1: In other places in the document, you use the phrase “the previous value of”, when describing the result of a move-assignment. Here you introduce a new variable “uu”. Why is this different? (See [concepts.lib.object.moveconstructible]/1.1 for an example). 8 | 9 | Since "value" is never defined, we've been gradually removing uses thereof - previous or otherwise - from the formal semantics. We *do* have a strong notion of equality via substitution in equality-preserving expressions, so it's easier to define two things that "are equal" than two things that "have the same value." In general, though it's not really the case here, it's also nice to have a name for things like "the value of x before ." 10 | 11 | (Filed issue ericniebler/stl2#293 to ensure that this principle is applied consistently.) 12 | 13 | 14 | * [utility.swap]/1.2 has text spilling off the page to the right. 15 | 16 | Fixed. (In commit 378e5a3e). 17 | 18 | 19 | * [iterators.bidirectional]/3.3: This looks very odd to me. Is “bool((a—, a), == —b)” the correct expression? 20 | 21 | This is a "clever" encoding of "after evaluating a--, bool(a == --b) is true." Would "If bool(a == b), then after evaluating both a-- and --b, bool(a == b) still holds." be clearer? Or perhaps the more terse "If bool(a == b), then (a--, --b, bool(a == b)) is true."? (Filed issue ericniebler/stl2#292.) 22 | 23 | 24 | * [move.sentinel] could use an introductory sentence or two. 25 | 26 | * So could [counted.iterator] 27 | 28 | I think adding just-barely-normative introductory material is editorial. We'll cobble something together. (Fixed in commits 2f21473f and a580da79.) 29 | 30 | 31 | * The title of the section [alg.find.first_of] should probably be “Find First Of”, not “Find First” 32 | 33 | Fixed. (In commit 2f21473f.) 34 | 35 | 36 | * I wonder if it would be simpler to describe mismatch’s results in terms of “equal". [Definitely not editorial] 37 | 38 | (Filed issue ericniebler/stl2#290.) 39 | 40 | 41 | * [alg.copy] Does copy_n need a “Requires:” element stating that [result, result + n) is a valid range? 42 | 43 | * same concern for fill_n and generate_n. 44 | 45 | We have "The result of the application of functions in the library to invalid ranges is undefined." in [iterator.requirements.general]/10 where "range" is defined: "A range is an iterator and a sentinel that designate the beginning and end of the computation." Instead of adding a requirement to every _n algorithm, we should expand the blanket wording to cover (iterator, count) ranges as well. (Filed issue ericniebler/stl2#289.) 46 | 47 | 48 | * And, of course: search doesn’t return a range ;-) 49 | 50 | Pre-existing issue ericniebler/stl2#180 ;) 51 | -------------------------------------------------------------------------------- /ext/us2/us2.tex: -------------------------------------------------------------------------------- 1 | %% main file for the Ranges TS. 2 | %% 3 | 4 | %%-------------------------------------------------- 5 | %% basics 6 | % \documentclass[letterpaper,oneside,openany]{memoir} 7 | \documentclass[ebook,10pt,oneside,openany,final]{memoir} 8 | % \includeonly{declarations} 9 | 10 | \usepackage[american] 11 | {babel} % needed for iso dates 12 | \usepackage[iso,american] 13 | {isodate} % use iso format for dates 14 | \usepackage[final] 15 | {listings} % code listings 16 | \usepackage{longtable} % auto-breaking tables 17 | \usepackage{ltcaption} % fix captions for long tables 18 | \usepackage{booktabs} % fancy tables 19 | \usepackage{relsize} % provide relative font size changes 20 | \usepackage{textcomp} % provide \text{l,r}angle 21 | \usepackage{underscore} % remove special status of '_' in ordinary text 22 | \usepackage{verbatim} % improved verbatim environment 23 | \usepackage{parskip} % handle non-indented paragraphs "properly" 24 | \usepackage{array} % new column definitions for tables 25 | \usepackage[normalem]{ulem} 26 | \usepackage{color} % define colors for strikeouts and underlines 27 | \usepackage{amsmath} % additional math symbols 28 | \usepackage{mathrsfs} % mathscr font 29 | \usepackage{multicol} 30 | \usepackage{xspace} 31 | \usepackage{fixme} 32 | \usepackage{lmodern} 33 | \usepackage[T1]{fontenc} 34 | \usepackage[pdftex, final]{graphicx} 35 | \usepackage[pdftex, 36 | pdftitle={Working Draft, C++ Extensions for Ranges}, 37 | pdfsubject={Working Draft, C++ Extensions for Ranges}, 38 | pdfcreator={Eric Niebler}, 39 | bookmarks=true, 40 | bookmarksnumbered=true, 41 | pdfpagelabels=true, 42 | pdfpagemode=UseOutlines, 43 | pdfstartview=FitH, 44 | linktocpage=true, 45 | colorlinks=true, 46 | linkcolor=blue, 47 | plainpages=false 48 | ]{hyperref} 49 | \usepackage{memhfixc} % fix interactions between hyperref and memoir 50 | 51 | \input{layout} 52 | \input{styles} 53 | \input{macros} 54 | \input{tables} 55 | \input{cxx} 56 | 57 | \makeindex[generalindex] 58 | \makeindex[libraryindex] 59 | \makeindex[grammarindex] 60 | \makeindex[impldefindex] 61 | 62 | %%-------------------------------------------------- 63 | %% fix interaction between hyperref and other 64 | %% commands 65 | \pdfstringdefDisableCommands{\def\smaller#1{#1}} 66 | \pdfstringdefDisableCommands{\def\textbf#1{#1}} 67 | \pdfstringdefDisableCommands{\def\raisebox#1{}} 68 | \pdfstringdefDisableCommands{\def\hspace#1{}} 69 | 70 | %%-------------------------------------------------- 71 | %% add special hyphenation rules 72 | \hyphenation{tem-plate ex-am-ple in-put-it-er-a-tor name-space name-spaces} 73 | 74 | \begin{document} 75 | \chapterstyle{cppstd} 76 | \pagestyle{cpppage} 77 | \bibliographystyle{plain} 78 | 79 | %%-------------------------------------------------- 80 | %% configuration 81 | \input{config} 82 | 83 | %%-------------------------------------------------- 84 | %% front matter 85 | \frontmatter 86 | \include{front} 87 | 88 | %%-------------------------------------------------- 89 | %% main body of the document 90 | \mainmatter 91 | \setglobalstyles 92 | 93 | \include{statements} 94 | 95 | %%-------------------------------------------------- 96 | %% End of document 97 | \end{document} 98 | -------------------------------------------------------------------------------- /ext/stdconcepts/20180607 LWG review changes.txt: -------------------------------------------------------------------------------- 1 | Casey questions: 2 | * What about feature test macros? Specify the macro in ``? 3 | * [meta.trans.other]/6: I changed "may not" to "shall not" 4 | 5 | [X] DR I have a comment about Expression #1 on page 8; a == d appears twice, but a == move(d) is probably intended for one. 6 | 7 | [X] MC Yeah all the moves should be std::move. 8 | 9 | [X] WB I have a nit, do we have to say "or not" in "unspecified whether or not" on page 8? 10 | 11 | [X] WB Why does it say see below on the additional signatures; e.g. in [concepts.lib.corelang.same] 12 | 13 | [X] PS Whatever Casey explained but I can't rephrase it. Maybe an example showing the failing subsumption relationship. 14 | 15 | [X] DR I have a comment about DerivedFrom, there's a deleted line but the text below it still refers to the deleted line. [concepts.lib.corelang.derived] 16 | 17 | [X] WB Would you be averse to a note here [ConvertibleTo]? The sentence explaination is really really clear. 18 | 19 | [ ] CC Yes, it's weird that they're so similar [the intro for Common and CommonReference], but they differ in subtle ways. It would be better if the specification was harmonized between the two. Is that the comment? 20 | 21 | [X] MC I think it would be better to use might [not] instead of may [not] in these places. [everywhere] 22 | 23 | [ ] CC When experts are confused about the meaning of the requirements [implicit expression variations], that's an indication that the requirements need to be made more clear. I don't think it would need to be a normative change. [Decline for now absent suggestions for improvement.] 24 | 25 | [X] WB I'd like to point out something I particularly like in [...swappable] p3, where you say "need be no subsumption relationship" where elsewhere you said "need not be any" -- can you use the former in all places? 26 | 27 | [X] CC I think paragraph 4 in [...swappable] is horrible. MC Would it be better if you changed all the lets into a bulleted list? [Yes.] 28 | 29 | [X] WB Except for the last bit, 4.1 needs to be combined. 30 | 31 | [X] DK I'm concerned about the struck [Swappable/SwappableWith] example; there were a lot of misunderstandings cleared up by the example that are gone. 32 | 33 | [X] CC Jonathan, now that you've pointed out "const lvalue of type" it's bothering me too. Would people mind if "const lvalue of type" to be "lvalue of type const" 34 | 35 | [X] WB Where it says "may satisfy" in Invocable, should it be "can satisfy"? 36 | 37 | [X] WB I think Invocable p2 seems more like an example than a note. 38 | 39 | [ ] JW You could say "An invocable type that generates random results would not satisfy RegularInvocable" or similar. [Decline absent ] 40 | 41 | [X] JW I think just putting a break before the note [in [concepts.lib.callable.strictweakorder]] would fix that. 42 | 43 | [X] WB Where it says "unary template T", class template, alias template? CC Should say class template. 44 | 45 | [X] CC That's [`COMMON_REF` spec] miscolored; it should be cyan text; this all clearly came from the ranges TS because common_reference_t isn't in the standard. 46 | 47 | [X] BO Could declval() be bool{}? ... BO I see regarding the declval comment earlier, that common_type uses false for this. We should use false, not true, as previously suggested. 48 | 49 | [X] WB Grammar note, where it says any are ill formed [], it should say any is ill formed. 50 | 51 | [X] DK 4.3.4, I'm concerned that this uses decay_t; because decay_t is always defined. It needs to exist if COND_RES(CREF(D1), CREF(D2)) exists, and then decay_t that. 52 | -------------------------------------------------------------------------------- /ext/memory-specialisations/d1033.tex: -------------------------------------------------------------------------------- 1 | %% main file for the Ranges TS. 2 | %% 3 | 4 | %%-------------------------------------------------- 5 | %% basics 6 | % \documentclass[letterpaper,oneside,openany]{memoir} 7 | \documentclass[ebook,10pt,oneside,openany,final]{memoir} 8 | % \includeonly{declarations} 9 | 10 | \usepackage[american] 11 | {babel} % needed for iso dates 12 | \usepackage[iso,american] 13 | {isodate} % use iso format for dates 14 | \usepackage[final] 15 | {listings} % code listings 16 | \usepackage{longtable} % auto-breaking tables 17 | \usepackage{ltcaption} % fix captions for long tables 18 | \usepackage{booktabs} % fancy tables 19 | \usepackage{relsize} % provide relative font size changes 20 | \usepackage{underscore} % remove special status of '_' in ordinary text 21 | \usepackage{verbatim} % improved verbatim environment 22 | \usepackage{parskip} % handle non-indented paragraphs "properly" 23 | \usepackage{array} % new column definitions for tables 24 | \usepackage[normalem]{ulem} 25 | \usepackage{color} % define colors for strikeouts and underlines 26 | \usepackage{amsmath} % additional math symbols 27 | \usepackage{mathrsfs} % mathscr font 28 | \usepackage{multicol} 29 | \usepackage{xspace} 30 | \usepackage{fixme} 31 | \usepackage{lmodern} 32 | \usepackage[T1]{fontenc} 33 | \usepackage[pdftex, final]{graphicx} 34 | \usepackage[pdftex, 35 | pdftitle={D1033R1 Rangify the uninitialised memory algorithms!}, 36 | pdfsubject={D1033R1 Rangify the uninitialised memory algorithms!}, 37 | pdfcreator={Christopher Di Bella}, 38 | bookmarks=true, 39 | bookmarksnumbered=true, 40 | pdfpagelabels=true, 41 | pdfpagemode=UseOutlines, 42 | pdfstartview=FitH, 43 | linktocpage=true, 44 | colorlinks=true, 45 | linkcolor=blue, 46 | plainpages=false 47 | ]{hyperref} 48 | \usepackage{memhfixc} % fix interactions between hyperref and memoir 49 | 50 | \input{layout} 51 | \input{styles} 52 | \input{macros} 53 | \input{tables} 54 | \input{cxx} 55 | 56 | \makeindex[generalindex] 57 | \makeindex[libraryindex] 58 | \makeindex[grammarindex] 59 | \makeindex[impldefindex] 60 | 61 | %%-------------------------------------------------- 62 | %% fix interaction between hyperref and other 63 | %% commands 64 | \pdfstringdefDisableCommands{\def\smaller#1{#1}} 65 | \pdfstringdefDisableCommands{\def\textbf#1{#1}} 66 | \pdfstringdefDisableCommands{\def\raisebox#1{}} 67 | \pdfstringdefDisableCommands{\def\hspace#1{}} 68 | 69 | %%-------------------------------------------------- 70 | %% add special hyphenation rules 71 | \hyphenation{tem-plate ex-am-ple in-put-it-er-a-tor name-space name-spaces} 72 | 73 | \begin{document} 74 | \chapterstyle{cppstd} 75 | \pagestyle{cpppage} 76 | \bibliographystyle{plain} 77 | 78 | %%-------------------------------------------------- 79 | %% configuration 80 | \input{config} 81 | 82 | %%-------------------------------------------------- 83 | %% front matter 84 | \frontmatter 85 | \include{front} 86 | 87 | %%-------------------------------------------------- 88 | %% main body of the document 89 | \mainmatter 90 | \setglobalstyles 91 | 92 | \include{intro} 93 | \include{utilities} 94 | 95 | \appendix 96 | \include{acknowledgements} 97 | 98 | %%-------------------------------------------------- 99 | %% bibliography 100 | \bibliography{d1033} 101 | 102 | %%-------------------------------------------------- 103 | %% back matter 104 | \backmatter 105 | \include{back} 106 | \nocite{*} 107 | %%-------------------------------------------------- 108 | %% End of document 109 | \end{document} 110 | -------------------------------------------------------------------------------- /ext/adaptors/D0789R3.tex: -------------------------------------------------------------------------------- 1 | %% main file for the Ranges TS. 2 | %% 3 | 4 | %%-------------------------------------------------- 5 | %% basics 6 | % \documentclass[letterpaper,oneside,openany]{memoir} 7 | \documentclass[ebook,10pt,oneside,openany,final]{memoir} 8 | % \includeonly{declarations} 9 | 10 | \usepackage[american] 11 | {babel} % needed for iso dates 12 | \usepackage[iso,american] 13 | {isodate} % use iso format for dates 14 | \usepackage[final] 15 | {listings} % code listings 16 | \usepackage{longtable} % auto-breaking tables 17 | \usepackage{ltcaption} % fix captions for long tables 18 | \usepackage{booktabs} % fancy tables 19 | \usepackage{relsize} % provide relative font size changes 20 | \usepackage{underscore} % remove special status of '_' in ordinary text 21 | \usepackage{verbatim} % improved verbatim environment 22 | \usepackage{parskip} % handle non-indented paragraphs "properly" 23 | \usepackage{array} % new column definitions for tables 24 | \usepackage[normalem]{ulem} 25 | \usepackage{color} % define colors for strikeouts and underlines 26 | \usepackage{amsmath} % additional math symbols 27 | \usepackage{mathrsfs} % mathscr font 28 | \usepackage{multicol} 29 | \usepackage{xspace} 30 | \usepackage{fixme} 31 | \usepackage{lmodern} 32 | \usepackage[T1]{fontenc} 33 | \usepackage[pdftex, final]{graphicx} 34 | \usepackage[pdftex, 35 | pdftitle={Range Adaptors and Utilities}, 36 | pdfsubject={Range Adaptors and Utilities}, 37 | pdfcreator={Eric Niebler}, 38 | bookmarks=true, 39 | bookmarksnumbered=true, 40 | pdfpagelabels=true, 41 | pdfpagemode=UseOutlines, 42 | pdfstartview=FitH, 43 | linktocpage=true, 44 | colorlinks=true, 45 | linkcolor=blue, 46 | plainpages=false 47 | ]{hyperref} 48 | \usepackage{memhfixc} % fix interactions between hyperref and memoir 49 | 50 | \input{layout} 51 | \input{styles} 52 | \input{macros} 53 | \input{tables} 54 | \input{cxx} 55 | 56 | \makeindex[generalindex] 57 | \makeindex[libraryindex] 58 | \makeindex[grammarindex] 59 | \makeindex[impldefindex] 60 | 61 | %%-------------------------------------------------- 62 | %% fix interaction between hyperref and other 63 | %% commands 64 | \pdfstringdefDisableCommands{\def\smaller#1{#1}} 65 | \pdfstringdefDisableCommands{\def\textbf#1{#1}} 66 | \pdfstringdefDisableCommands{\def\raisebox#1{}} 67 | \pdfstringdefDisableCommands{\def\hspace#1{}} 68 | 69 | %%-------------------------------------------------- 70 | %% add special hyphenation rules 71 | \hyphenation{tem-plate ex-am-ple in-put-it-er-a-tor name-space name-spaces} 72 | 73 | \begin{document} 74 | \chapterstyle{cppstd} 75 | \pagestyle{cpppage} 76 | \bibliographystyle{plain} 77 | 78 | %%-------------------------------------------------- 79 | %% configuration 80 | \input{config} 81 | 82 | %%-------------------------------------------------- 83 | %% front matter 84 | \frontmatter 85 | \include{front} 86 | 87 | %%-------------------------------------------------- 88 | %% main body of the document 89 | \mainmatter 90 | \setglobalstyles 91 | 92 | \include{intro} 93 | \include{ranges-lib} 94 | 95 | %%-------------------------------------------------- 96 | %% appendices 97 | \appendix 98 | \include{acknowledgements} 99 | 100 | %%-------------------------------------------------- 101 | %% bibliography 102 | \bibliography{D0789R3} 103 | 104 | %%-------------------------------------------------- 105 | %% back matter 106 | \backmatter 107 | \include{back} 108 | 109 | %%-------------------------------------------------- 110 | %% End of document 111 | \end{document} 112 | -------------------------------------------------------------------------------- /ext/stdconcepts/stdconcepts.tex: -------------------------------------------------------------------------------- 1 | %% main file for this document 2 | %% 3 | 4 | %%-------------------------------------------------- 5 | %% basics 6 | % \documentclass[letterpaper,oneside,openany]{memoir} 7 | \documentclass[a4paper,10pt,oneside,openany,article,final]{memoir} 8 | 9 | \usepackage[american] 10 | {babel} % needed for iso dates 11 | \usepackage[iso,american] 12 | {isodate} % use iso format for dates 13 | \usepackage[final] 14 | {listings} % code listings 15 | \usepackage{longtable} % auto-breaking tables 16 | \usepackage{ltcaption} % fix captions for long tables 17 | \usepackage{booktabs} % fancy tables 18 | \usepackage{relsize} % provide relative font size changes 19 | \usepackage{textcomp} % provide \text{l,r}angle 20 | \usepackage{underscore} % remove special status of '_' in ordinary text 21 | \usepackage{verbatim} % improved verbatim environment 22 | \usepackage{parskip} % handle non-indented paragraphs "properly" 23 | \usepackage{array} % new column definitions for tables 24 | \usepackage[normalem]{ulem} 25 | \usepackage{color} % define colors for strikeouts and underlines 26 | \usepackage{amsmath} % additional math symbols 27 | \usepackage{mathrsfs} % mathscr font 28 | \usepackage{multicol} 29 | \usepackage{xspace} 30 | \usepackage{fixme} 31 | \usepackage{lmodern} 32 | \usepackage[T1]{fontenc} 33 | \usepackage[pdftex, final]{graphicx} 34 | \usepackage[pdftex, 35 | pdftitle={Standard Library Concepts}, 36 | pdfsubject={Standard Library Concepts}, 37 | pdfcreator={Casey Carter}, 38 | bookmarks=true, 39 | bookmarksnumbered=true, 40 | pdfpagelabels=true, 41 | pdfpagemode=UseOutlines, 42 | pdfstartview=FitH, 43 | linktocpage=true, 44 | colorlinks=true, 45 | linkcolor=blue, 46 | plainpages=false 47 | ]{hyperref} 48 | \usepackage{memhfixc} % fix interactions between hyperref and memoir 49 | 50 | \input{layout} 51 | \input{styles} 52 | \input{macros} 53 | \input{tables} 54 | \input{cxx} 55 | 56 | \makeindex[generalindex] 57 | \makeindex[libraryindex] 58 | \makeindex[grammarindex] 59 | \makeindex[impldefindex] 60 | 61 | %%-------------------------------------------------- 62 | %% fix interaction between hyperref and other 63 | %% commands 64 | \pdfstringdefDisableCommands{\def\smaller#1{#1}} 65 | \pdfstringdefDisableCommands{\def\textbf#1{#1}} 66 | \pdfstringdefDisableCommands{\def\raisebox#1{}} 67 | \pdfstringdefDisableCommands{\def\hspace#1{}} 68 | 69 | %%-------------------------------------------------- 70 | %% add special hyphenation rules 71 | \hyphenation{tem-plate ex-am-ple in-put-it-er-a-tor name-space name-spaces non-zero} 72 | 73 | \begin{document} 74 | \chapterstyle{cppstd} 75 | \pagestyle{cpppage} 76 | \bibliographystyle{plain} 77 | 78 | %%-------------------------------------------------- 79 | %% configuration 80 | \input{config} 81 | 82 | %%-------------------------------------------------- 83 | %% front matter 84 | \frontmatter 85 | \include{front} 86 | 87 | %%-------------------------------------------------- 88 | %% main body of the document 89 | \mainmatter 90 | \setglobalstyles 91 | 92 | \input{intro} 93 | \input{lib-intro} 94 | \input{concepts} 95 | \input{utilities} 96 | \input{numerics} 97 | 98 | %%-------------------------------------------------- 99 | %% appendices 100 | \appendix 101 | 102 | %%-------------------------------------------------- 103 | %% bibliography 104 | %\bibliography{stdconcepts} 105 | 106 | %%-------------------------------------------------- 107 | %% back matter 108 | \backmatter 109 | \include{back} 110 | 111 | %%-------------------------------------------------- 112 | %% End of document 113 | \end{document} 114 | -------------------------------------------------------------------------------- /ext/range_access/D0970R1.tex: -------------------------------------------------------------------------------- 1 | %% main file for the Ranges TS. 2 | %% 3 | 4 | %%-------------------------------------------------- 5 | %% basics 6 | % \documentclass[letterpaper,oneside,openany]{memoir} 7 | \documentclass[ebook,10pt,oneside,openany,final,book]{memoir} 8 | % \includeonly{declarations} 9 | 10 | \usepackage[american] 11 | {babel} % needed for iso dates 12 | \usepackage[iso,american] 13 | {isodate} % use iso format for dates 14 | \usepackage[final] 15 | {listings} % code listings 16 | \usepackage{longtable} % auto-breaking tables 17 | \usepackage{ltcaption} % fix captions for long tables 18 | \usepackage{booktabs} % fancy tables 19 | \usepackage{relsize} % provide relative font size changes 20 | \usepackage{underscore} % remove special status of '_' in ordinary text 21 | \usepackage{verbatim} % improved verbatim environment 22 | \usepackage{parskip} % handle non-indented paragraphs "properly" 23 | \usepackage{array} % new column definitions for tables 24 | \usepackage[normalem]{ulem} 25 | \usepackage{color} % define colors for strikeouts and underlines 26 | \usepackage{amsmath} % additional math symbols 27 | \usepackage{mathrsfs} % mathscr font 28 | \usepackage{multicol} 29 | \usepackage{xspace} 30 | \usepackage{fixme} 31 | \usepackage{lmodern} 32 | \usepackage[T1]{fontenc} 33 | \usepackage[pdftex, final]{graphicx} 34 | \usepackage[pdftex, 35 | pdftitle={Better, Safer Range Access Customization Points}, 36 | pdfsubject={Better, Safer Range Access Customization Points}, 37 | pdfcreator={Eric Niebler}, 38 | bookmarks=true, 39 | bookmarksnumbered=true, 40 | pdfpagelabels=true, 41 | pdfpagemode=UseOutlines, 42 | pdfstartview=FitH, 43 | linktocpage=true, 44 | colorlinks=true, 45 | linkcolor=blue, 46 | plainpages=false 47 | ]{hyperref} 48 | \usepackage{memhfixc} % fix interactions between hyperref and memoir 49 | 50 | \input{layout} 51 | \input{styles} 52 | \input{macros} 53 | \input{tables} 54 | \input{cxx} 55 | 56 | \makeindex[generalindex] 57 | \makeindex[libraryindex] 58 | \makeindex[grammarindex] 59 | \makeindex[impldefindex] 60 | 61 | %%-------------------------------------------------- 62 | %% fix interaction between hyperref and other 63 | %% commands 64 | \pdfstringdefDisableCommands{\def\smaller#1{#1}} 65 | \pdfstringdefDisableCommands{\def\textbf#1{#1}} 66 | \pdfstringdefDisableCommands{\def\raisebox#1{}} 67 | \pdfstringdefDisableCommands{\def\hspace#1{}} 68 | 69 | %%-------------------------------------------------- 70 | %% add special hyphenation rules 71 | \hyphenation{tem-plate ex-am-ple in-put-it-er-a-tor name-space name-spaces} 72 | 73 | \begin{document} 74 | \chapterstyle{cppstd} 75 | \pagestyle{cpppage} 76 | \bibliographystyle{plain} 77 | 78 | %%-------------------------------------------------- 79 | %% configuration 80 | \input{config} 81 | 82 | %%-------------------------------------------------- 83 | %% front matter 84 | \frontmatter 85 | \include{front} 86 | 87 | %%-------------------------------------------------- 88 | %% main body of the document 89 | \mainmatter 90 | \setglobalstyles 91 | 92 | \include{intro} 93 | \ChapterInsidePart 94 | \include{p0896} 95 | \include{p0789} 96 | \ChapterOutsidePart 97 | 98 | %%-------------------------------------------------- 99 | %% appendices 100 | \appendix 101 | \include{acknowledgements} 102 | 103 | %%-------------------------------------------------- 104 | %% bibliography 105 | \bibliography{D0970R1} 106 | 107 | %%-------------------------------------------------- 108 | %% back matter 109 | \backmatter 110 | \include{back} 111 | 112 | %%-------------------------------------------------- 113 | %% End of document 114 | \end{document} 115 | -------------------------------------------------------------------------------- /tools/sections.cpp: -------------------------------------------------------------------------------- 1 | // Prints out section numbers, short names, and long names. 2 | // 3 | // Typical usage: 4 | // 5 | // cd draft/source/ 6 | // ../tools/sections D4382.tex > section_names.txt 7 | // 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | class counter { 16 | public: 17 | counter() 18 | : m_data{0} 19 | , m_annex{false} 20 | { 21 | } 22 | 23 | // Bump up the counter at the given depth. 24 | // 25 | // For example, 4.7.9 bumped at level 1 becomes 4.8, bumped at level 0 becomes 5. 26 | void bump(int level) 27 | { 28 | m_data.resize(level + 1); 29 | m_data.back()++; 30 | } 31 | 32 | // Start a new annex; resets the counter to 'A' the first time it's called, 33 | // increments as if by bump(0) from there on. 34 | void annex() 35 | { 36 | m_data.resize(1); 37 | m_data.back() = m_annex ? m_data.back() + 1 : 0; 38 | m_annex = true; 39 | } 40 | 41 | typedef std::vector data_t; 42 | typedef data_t::const_iterator iterator; 43 | 44 | iterator begin() const { return m_data.begin(); } 45 | iterator end() const { return m_data.end(); } 46 | 47 | bool is_annex() const { return m_annex; } 48 | 49 | private: 50 | data_t m_data; 51 | bool m_annex; 52 | }; 53 | 54 | std::ostream& operator<<(std::ostream& os, counter c) 55 | { 56 | bool first = true; 57 | for (auto count : c) { 58 | if (!first) { 59 | os << '.'; 60 | } 61 | if (first && c.is_annex()) { 62 | os << static_cast('A' + count); 63 | } else { 64 | os << count; 65 | } 66 | first = false; 67 | } 68 | 69 | return os; 70 | } 71 | 72 | void show(counter count, std::string shortname, std::string name) 73 | { 74 | std::cout << count << ": " << shortname << " - " << name << std::endl; 75 | } 76 | 77 | void process(std::string filename, counter& count) 78 | { 79 | std::cerr << "processing " << filename << std::endl; 80 | std::ifstream file{filename}; 81 | if (!file) { 82 | std::ostringstream os; 83 | os << "Unable to open '" << filename << "' for processing"; 84 | throw std::runtime_error(os.str()); 85 | } 86 | 87 | // We assume below that there is only one of these per source line. 88 | // In the current draft, they're sometimes followed by comments, so 89 | // we use regex_search() instead of regex_match() to be robust. 90 | std::regex include{"^\\\\include\\{(.*)\\}"}, 91 | rSec{"^\\\\rSec([0-9])\\[(.*)\\]\\{(.*)\\}"}, 92 | annex{"^\\\\(inf|norm)annex\\{(.*)\\}\\{(.*)\\}"}; 93 | 94 | std::string line; 95 | while (getline(file, line)) { 96 | std::smatch results; 97 | if (regex_search(line, results, include)) { 98 | auto filename = results.str(1); 99 | filename += ".tex"; 100 | process(filename, count); 101 | } else if (regex_search(line, results, rSec)) { 102 | auto level = results.str(1)[0] - '0'; 103 | auto shortname = results.str(2); 104 | auto longname = results.str(3); 105 | 106 | count.bump(level); 107 | 108 | show(count, shortname, longname); 109 | } else if (regex_search(line, results, annex)) { 110 | auto shortname = results.str(2); 111 | auto longname = results.str(3); 112 | 113 | count.annex(); 114 | 115 | show(count, shortname, longname); 116 | } 117 | } 118 | } 119 | 120 | void process(std::string filename) 121 | { 122 | counter count; 123 | process(filename, count); 124 | } 125 | 126 | int main(int argc, char** argv) 127 | { 128 | if (argc != 2) { 129 | std::cerr << "Usage: " << argv[0] << " D4382.tex > output" << std::endl; 130 | return 1; 131 | } 132 | 133 | try { 134 | process(argv[1]); 135 | } catch (std::exception e) { 136 | std::cerr << e.what() << std::endl; 137 | return 1; 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /ext/integrate/D1037.tex: -------------------------------------------------------------------------------- 1 | %% main file for the Ranges TS. 2 | %% 3 | 4 | %%-------------------------------------------------- 5 | %% basics 6 | % \documentclass[letterpaper,oneside,openany]{memoir} 7 | \documentclass[ebook,10pt,oneside,openany,final]{memoir} 8 | % \includeonly{declarations} 9 | 10 | \usepackage[american] 11 | {babel} % needed for iso dates 12 | \usepackage[iso,american] 13 | {isodate} % use iso format for dates 14 | \usepackage[final] 15 | {listings} % code listings 16 | \usepackage{longtable} % auto-breaking tables 17 | \usepackage{ltcaption} % fix captions for long tables 18 | \usepackage{booktabs} % fancy tables 19 | \usepackage{relsize} % provide relative font size changes 20 | \usepackage{underscore} % remove special status of '_' in ordinary text 21 | \usepackage{verbatim} % improved verbatim environment 22 | \usepackage{parskip} % handle non-indented paragraphs "properly" 23 | \usepackage{array} % new column definitions for tables 24 | \usepackage[normalem]{ulem} 25 | \usepackage{color} % define colors for strikeouts and underlines 26 | \usepackage{amsmath} % additional math symbols 27 | \usepackage{mathrsfs} % mathscr font 28 | \usepackage{multicol} 29 | \usepackage{xspace} 30 | \usepackage{fixme} 31 | \usepackage{lmodern} 32 | \usepackage{textcomp} % provide \text{l,r}angle 33 | \usepackage[T1]{fontenc} 34 | \usepackage[pdftex, final]{graphicx} 35 | \usepackage[pdftex, 36 | pdftitle={Deep Integration of the Ranges TS}, 37 | pdfsubject={Deep Integration of the Ranges TS}, 38 | pdfcreator={Eric Niebler}, 39 | bookmarks=true, 40 | bookmarksnumbered=true, 41 | pdfpagelabels=true, 42 | pdfpagemode=UseOutlines, 43 | pdfstartview=FitH, 44 | linktocpage=true, 45 | colorlinks=true, 46 | linkcolor=blue, 47 | plainpages=false 48 | ]{hyperref} 49 | \usepackage{memhfixc} % fix interactions between hyperref and memoir 50 | 51 | \input{layout} 52 | \input{styles} 53 | \input{macros} 54 | \input{tables} 55 | \input{cxx} 56 | 57 | \makeindex[generalindex] 58 | \makeindex[libraryindex] 59 | \makeindex[grammarindex] 60 | \makeindex[impldefindex] 61 | 62 | %%-------------------------------------------------- 63 | %% fix interaction between hyperref and other 64 | %% commands 65 | \pdfstringdefDisableCommands{\def\smaller#1{#1}} 66 | \pdfstringdefDisableCommands{\def\textbf#1{#1}} 67 | \pdfstringdefDisableCommands{\def\raisebox#1{}} 68 | \pdfstringdefDisableCommands{\def\hspace#1{}} 69 | 70 | %%-------------------------------------------------- 71 | %% add special hyphenation rules 72 | \hyphenation{tem-plate ex-am-ple in-put-it-er-a-tor name-space name-spaces} 73 | 74 | \begin{document} 75 | \chapterstyle{cppstd} 76 | \pagestyle{cpppage} 77 | \bibliographystyle{plain} 78 | 79 | %%-------------------------------------------------- 80 | %% configuration 81 | \input{config} 82 | 83 | %%-------------------------------------------------- 84 | %% front matter 85 | \frontmatter 86 | \include{front} 87 | 88 | %%-------------------------------------------------- 89 | %% main body of the document 90 | \mainmatter 91 | \setglobalstyles 92 | 93 | \include{intro} 94 | % \setcounter{chapter}{20} 95 | % \rSec0[std2]{Standard Library, Version 2} 96 | % \setcounter{SectionDepthBase}{1} 97 | % \input{lib-intro} 98 | % \input{utilities} 99 | \input{iterators} 100 | \input{ranges-lib} 101 | \input{algorithms} 102 | % \input{numerics} 103 | % \setcounter{SectionDepthBase}{0} 104 | 105 | %%-------------------------------------------------- 106 | %% appendices 107 | \appendix 108 | \include{acknowledgements} 109 | 110 | %%-------------------------------------------------- 111 | %% bibliography 112 | \bibliography{D1037} 113 | 114 | %%-------------------------------------------------- 115 | %% back matter 116 | \backmatter 117 | \include{back} 118 | 119 | %%-------------------------------------------------- 120 | %% End of document 121 | \end{document} 122 | -------------------------------------------------------------------------------- /ranges.tex: -------------------------------------------------------------------------------- 1 | %% main file for the Ranges TS. 2 | %% 3 | 4 | %%-------------------------------------------------- 5 | %% basics 6 | % \documentclass[letterpaper,oneside,openany]{memoir} 7 | \documentclass[a4paper,10pt,oneside,openany,final,article]{memoir} 8 | % \includeonly{declarations} 9 | 10 | \usepackage[american] 11 | {babel} % needed for iso dates 12 | \usepackage[iso,american] 13 | {isodate} % use iso format for dates 14 | \usepackage[final] 15 | {listings} % code listings 16 | \usepackage{longtable} % auto-breaking tables 17 | \usepackage{ltcaption} % fix captions for long tables 18 | \usepackage{booktabs} % fancy tables 19 | \usepackage{relsize} % provide relative font size changes 20 | \usepackage{textcomp} % provide \text{l,r}angle 21 | \usepackage{underscore} % remove special status of '_' in ordinary text 22 | \usepackage{verbatim} % improved verbatim environment 23 | \usepackage{parskip} % handle non-indented paragraphs "properly" 24 | \usepackage{array} % new column definitions for tables 25 | \usepackage[normalem]{ulem} 26 | \usepackage{color} % define colors for strikeouts and underlines 27 | \usepackage{amsmath} % additional math symbols 28 | \usepackage{mathrsfs} % mathscr font 29 | \usepackage{multicol} 30 | \usepackage{xspace} 31 | \usepackage{fixme} 32 | \usepackage{lmodern} 33 | \usepackage[T1]{fontenc} 34 | \usepackage[pdftex, final]{graphicx} 35 | \usepackage[pdftex, 36 | pdftitle={Working Draft, C++ Extensions for Ranges}, 37 | pdfsubject={Working Draft, C++ Extensions for Ranges}, 38 | pdfcreator={Casey Carter}, 39 | bookmarks=true, 40 | bookmarksnumbered=true, 41 | pdfpagelabels=true, 42 | pdfpagemode=UseOutlines, 43 | pdfstartview=FitH, 44 | linktocpage=true, 45 | colorlinks=true, 46 | linkcolor=blue, 47 | plainpages=false 48 | ]{hyperref} 49 | \usepackage{memhfixc} % fix interactions between hyperref and memoir 50 | 51 | \input{layout} 52 | \input{styles} 53 | \input{macros} 54 | \input{tables} 55 | \input{cxx} 56 | 57 | \makeindex[generalindex] 58 | \makeindex[libraryindex] 59 | \makeindex[grammarindex] 60 | \makeindex[impldefindex] 61 | 62 | %%-------------------------------------------------- 63 | %% fix interaction between hyperref and other 64 | %% commands 65 | \pdfstringdefDisableCommands{\def\smaller#1{#1}} 66 | \pdfstringdefDisableCommands{\def\textbf#1{#1}} 67 | \pdfstringdefDisableCommands{\def\raisebox#1{}} 68 | \pdfstringdefDisableCommands{\def\hspace#1{}} 69 | 70 | %%-------------------------------------------------- 71 | %% add special hyphenation rules 72 | \hyphenation{tem-plate ex-am-ple in-put-it-er-a-tor name-space name-spaces} 73 | 74 | \begin{document} 75 | \chapterstyle{cppstd} 76 | \pagestyle{cpppage} 77 | \bibliographystyle{plain} 78 | 79 | %%-------------------------------------------------- 80 | %% configuration 81 | \input{config} 82 | 83 | %%-------------------------------------------------- 84 | %% front matter 85 | \frontmatter 86 | \include{front} 87 | 88 | %%-------------------------------------------------- 89 | %% main body of the document 90 | \mainmatter 91 | \setglobalstyles 92 | 93 | \input{intro} 94 | \input{statements} 95 | \input{lib-intro} 96 | \input{concepts} 97 | \input{utilities} 98 | \input{iterators} 99 | \input{ranges-lib} 100 | \input{algorithms} 101 | \input{numerics} 102 | 103 | %%-------------------------------------------------- 104 | %% appendices 105 | \appendix 106 | \input{deprecated} 107 | \input{acknowledgements} 108 | \input{compatibility} 109 | %% \input{future} 110 | %% \input{tagged} 111 | %% \input{decomposition} 112 | %% \input{sentrework} 113 | 114 | %%-------------------------------------------------- 115 | %% bibliography 116 | \bibliography{ranges} 117 | 118 | %%-------------------------------------------------- 119 | %% back matter 120 | \backmatter 121 | \include{back} 122 | 123 | %%-------------------------------------------------- 124 | %% End of document 125 | \end{document} 126 | -------------------------------------------------------------------------------- /review/201811 San Diego review.md: -------------------------------------------------------------------------------- 1 | #### [allocator.requirements] 2 | MC: Proposed change is to strike the word valid [from "...when `a` and `(a + n)` are 3 | valid dereferenceable pointer values..."]. [struck] 4 | 5 | #### [concept.swappable] 6 | STL: Does the self-swap case [in p1] deserve a note? [noted] 7 | 8 | STL: What if someone expects to find enum through ADL? [added "or enumeration"] 9 | 10 | JW: Should that be rewritten "expression-equivalent to an expression that exchanges the values". I'm not sure what it as written means. [changed to "Otherwise, if ...., *an expression that* exchanges the denoted values.] 11 | 12 | TK: Could we add [the "SFINAE" note] to expression-equivalent instead of everywhere? [Action item to make this in a followup editorial change.] 13 | 14 | #### [specialized.algorithms] 15 | STL: I'm uncomfortable with "function templates" that aren't actually function templates [in p4.1]. CC: Could be "entities"? [Changed to "entities", here and in [algorithms.requirements]] 16 | 17 | STL: 4.3 has a typo: "explicitly template arguments". JW: Should be "explicitly-specified template argument lists". [Changed here, and note duplicated for the identical requirement in [algorithms.requirements]] 18 | 19 | STL: We are using `addressof` then `static_cast` to `void*` in algorithms [in namespace `std`]. Should those algorithms also use `voidify`? [changed] 20 | 21 | #### [special.mem.concepts] 22 | STL: A note mentioning we don't cover all the possible operations with nothrow. [added notes] 23 | 24 | #### [iterator.synopsis] 25 | STL: In the synopsis, we lost the template header before `iter_rvalue_reference_t`. CC: It's correct but the formatting is unfortunate. [altered formatting] 26 | 27 | #### [iterator.requirements.general] 28 | Marshall: [In p14] incrementing "`i` `n` times" is odd typographically. [Rephrase "the result of `n` applications of `++i`"] 29 | 30 | #### [iterator.traits] 31 | STL: Should ["instantiation of the primary template"] be "specialization"? MC: Core uses "[specialization/instantiation] generated from template" [for example, in [temp.class.spec.match]/1]. [Changed to "names a specialization generated from the primary template" in [incrementable.traits]/2, [readable.traits]/2, [iterator.traits]/3, [iterator.traits]/4, [iterator.concepts.general]/1 (two places)] 32 | 33 | MC: Is there supposed to be a definition of `value_type`? It is only mentioned it could be `void`. [The `difference_type`/"difference type" and `value_type`/"value type" associations are established in [incrementable.traits] and [readable.traits] for `WeaklyIncrementable` and `Readable` types.] 34 | 35 | JW: [In p3.3] why is it "if `incrementable_traits::difference_type` is well-formed" [which is nonsense], rather than "If the *qualified-id* ... is valid and denotes a type"? [fixed] 36 | 37 | STL: P4, "opt in or out of conformance." [changed to "indicate conformance"] 38 | 39 | JW: In P4, we can reduce words by using "explicit specializations or partial specializations may have members". [changed] 40 | 41 | #### [iterator.cust] 42 | CC: [Stable names are weird and long]. [iterator.custpoints.iter_move] should be [iter.move] (iterator.custpoints). [Simplify stable names] 43 | 44 | #### [iterator.concept.writable] 45 | JW: Use of "requires" in a note would be a problem [for ISO]. [change to "has"] 46 | 47 | #### [iterator.concept.sentinel] 48 | STL: Can we say "[`disable_sized_sentinel`] allows" instead of "enables"? [fixed; also in [range.sized]] 49 | 50 | #### [iterator.concept.input] 51 | JW: "need not require" could be a problem [for ISO]. [change to "does not need"] 52 | 53 | #### [iterator.concept.bidirectional] 54 | STL: In P2, can you choose a different letter besides `s`, such as `q`? `s` usually means sentinel. [fixed] 55 | 56 | STL: In P3 is there a hole in the requirements. 3.4 talks abouts going forward and going back. It should possibly be split out. You've excluded the very beginning. [fixed] 57 | 58 | #### [projected] 59 | JW: "bundles"? CC: "Combines" is fine, if Stephan doesn't like "aggregates". [fixed; also in [range.subrange]] 60 | 61 | Jeff: There's another requires [in a note] here. [fixed; also in [special.mem.concepts],[iterator.concept.incrementable]. I'm not going to audit all 952 occurrences of "require" here in SD - I'll do so when ISO complains.] 62 | -------------------------------------------------------------------------------- /ext/merge2std2/P0896.tex: -------------------------------------------------------------------------------- 1 | %% main file for this document. 2 | %% 3 | 4 | %%-------------------------------------------------- 5 | %% basics 6 | \documentclass[a4paper,10pt,oneside,openany,final]{memoir} 7 | 8 | \usepackage[american] 9 | {babel} % needed for iso dates 10 | \usepackage[iso,american] 11 | {isodate} % use iso format for dates 12 | \usepackage[final] 13 | {listings} % code listings 14 | \usepackage{longtable} % auto-breaking tables 15 | \usepackage{ltcaption} % fix captions for long tables 16 | \usepackage{relsize} % provide relative font size changes 17 | \usepackage{textcomp} % provide \text{l,r}angle 18 | \usepackage{underscore} % remove special status of '_' in ordinary text 19 | \usepackage{parskip} % handle non-indented paragraphs "properly" 20 | \usepackage{array} % new column definitions for tables 21 | \usepackage[normalem]{ulem} 22 | \usepackage{enumitem} 23 | \usepackage{color} % define colors for strikeouts and underlines 24 | \usepackage{amsmath} % additional math symbols 25 | \usepackage{mathrsfs} % mathscr font 26 | \usepackage[final]{microtype} 27 | \usepackage{multicol} 28 | \usepackage{fixme} 29 | \usepackage{lmodern} 30 | \usepackage[T1]{fontenc} 31 | \usepackage[pdftex, final]{graphicx} 32 | \usepackage[pdftex, 33 | pdftitle={Merge the Ranges TS}, 34 | pdfsubject={Merge the Ranges TS}, 35 | pdfcreator={Casey Carter}, 36 | bookmarks=true, 37 | bookmarksnumbered=true, 38 | pdfpagelabels=true, 39 | pdfpagemode=UseOutlines, 40 | pdfstartview=FitH, 41 | linktocpage=true, 42 | colorlinks=true, 43 | linkcolor=blue, 44 | plainpages=false 45 | ]{hyperref} 46 | \usepackage{memhfixc} % fix interactions between hyperref and memoir 47 | \usepackage[active,header=false,handles=false,copydocumentclass=false,generate=std-gram.ext,extract-cmdline={gramSec},extract-env={bnf,simplebnf}]{extract} % Grammar extraction 48 | 49 | \pdfminorversion=5 50 | \pdfcompresslevel=9 51 | \pdfobjcompresslevel=2 52 | 53 | \renewcommand\RSsmallest{5.5pt} % smallest font size for relsize 54 | 55 | \input{layout} 56 | \input{styles} 57 | \input{macros} 58 | \input{tables} 59 | \input{cxx} 60 | 61 | \makeindex[generalindex] 62 | \makeindex[headerindex] 63 | \makeindex[libraryindex] 64 | \makeindex[grammarindex] 65 | \makeindex[impldefindex] 66 | \makeglossary[xrefindex] 67 | \makeglossary[xrefdelta] 68 | 69 | %%-------------------------------------------------- 70 | %% fix interaction between hyperref and other 71 | %% commands 72 | \pdfstringdefDisableCommands{\def\smaller#1{#1}} 73 | \pdfstringdefDisableCommands{\def\textbf#1{#1}} 74 | \pdfstringdefDisableCommands{\def\raisebox#1{}} 75 | \pdfstringdefDisableCommands{\def\hspace#1{}} 76 | 77 | %%-------------------------------------------------- 78 | %% add special hyphenation rules 79 | \hyphenation{tem-plate ex-am-ple in-put-it-er-a-tor name-space name-spaces non-zero cus-tom-i-za-tion} 80 | 81 | %%-------------------------------------------------- 82 | %% turn off all ligatures inside \texttt 83 | \DisableLigatures{encoding = T1, family = tt*} 84 | 85 | \begin{document} 86 | \chapterstyle{cppstd} 87 | \pagestyle{cpppage} 88 | \bibliographystyle{plain} 89 | 90 | %%-------------------------------------------------- 91 | %% configuration 92 | \input{config} 93 | 94 | %%-------------------------------------------------- 95 | %% front matter 96 | \frontmatter 97 | \include{front} 98 | 99 | %%-------------------------------------------------- 100 | %% main body of the document 101 | \mainmatter 102 | \setglobalstyles 103 | 104 | \input{intro} 105 | \input{lib-intro} 106 | \input{support} 107 | \input{concepts} 108 | \input{utilities} 109 | \input{strings} 110 | \input{containers} 111 | \input{iterators} 112 | \input{ranges} 113 | \input{algorithms} 114 | \input{numerics} 115 | \input{threads} 116 | 117 | %%-------------------------------------------------- 118 | %% appendices 119 | \appendix 120 | \input{compatibility} 121 | %\input{acknowledgements} 122 | 123 | 124 | %%-------------------------------------------------- 125 | %% bibliography 126 | \bibliography{P0896} 127 | 128 | %%-------------------------------------------------- 129 | %% back matter 130 | \backmatter 131 | \include{back} 132 | 133 | 134 | %%-------------------------------------------------- 135 | %% End of document 136 | \end{document} 137 | -------------------------------------------------------------------------------- /cover-reg.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = std.tex 2 | %%-------------------------------------------------- 3 | %% Title page for the C++ Standard 4 | 5 | 6 | \thispagestyle{empty} 7 | {\raisebox{.35ex}{\smaller\copyright}}\,ISO/IEC 2017 --- All rights reserved 8 | \vspace{2ex} 9 | 10 | \begin{flushright} 11 | \textbf{ISO/IEC JTC1 SC22 WG21 N\,\LARGE4684} 12 | 13 | Date: \today 14 | 15 | ISO/IEC TS 21425 16 | 17 | ISO/IEC JTC1 SC22 WG21 18 | 19 | Secretariat: ANSI 20 | 21 | \end{flushright} 22 | 23 | \vfill 24 | 25 | \textbf{\LARGE Programming Languages --- \doctitle} 26 | 27 | Langages de programmation --- \frtitle 28 | 29 | \vfill 30 | 31 | \begin{tabular}{|p{\hsize}|} 32 | \hline 33 | \begin{center} 34 | \textbf{Warning} 35 | \end{center} 36 | 37 | \vspace{2ex} 38 | 39 | This document is not an ISO International Standard. It is distributed 40 | for review and comment. It is subject to change without notice and may 41 | not be referred to as an International Standard.\\\\ 42 | 43 | Recipients of this draft are invited to submit, with their comments, 44 | notification of any relevant patent rights of which they are aware 45 | and to provide supporting documentation.\\\\ 46 | \hline 47 | \end{tabular} 48 | 49 | \vfill 50 | \noindent 51 | Document type: Candidate Draft Technical Specification\\ 52 | Document stage: (30) Committee\\ 53 | Document Language: E 54 | \pagebreak 55 | 56 | \thispagestyle{cpppage} 57 | 58 | \begin{tabular}{|p{\hsize}|} 59 | \hline 60 | \vspace{0.5ex} 61 | \copyright ISO 2017 62 | \vspace{2ex} 63 | 64 | All rights reserved. Unless otherwise specified, no part of this 65 | publication may be reproduced or utilized otherwise in any form or 66 | by any means, electronic or mechanical, including photocopying, or 67 | posting on the internet or an intranet, without prior written 68 | permission. Permission can be requested from either ISO at the 69 | address below or ISO's member body in the country of the 70 | requestor.\\\\ 71 | 72 | \begin{minipage}{\hsize} 73 | \begin{indented} 74 | ISO copyright office\\ 75 | Case postale 56 $\cdot$ CH-1211 Geneva 20\\ 76 | Tel. + 41 22 749 01 11\\ 77 | Fax + 41 22 749 09 47\\ 78 | E-mail copyright@iso.org\\ 79 | Web www.iso.org 80 | \end{indented} 81 | \end{minipage} 82 | 83 | \vspace{2ex} 84 | 85 | Published in Switzerland\\\\ 86 | \hline 87 | \end{tabular} 88 | 89 | \newpage 90 | 91 | \chapter{Foreword} 92 | ISO (the International Organization for Standardization) and IEC (the International 93 | Electrotechnical Commission) form the specialized system for worldwide standardization. 94 | National bodies that are members of ISO or IEC participate in the development of 95 | International Standards through technical committees established by the respective 96 | organization to deal with particular fields of technical activity. ISO and IEC 97 | technical committees collaborate in fields of mutual interest. Other international 98 | organizations, governmental and non-governmental, in liaison with ISO and IEC, 99 | also take part in the work. In the field of information technology, ISO and IEC 100 | have established a joint technical committee, ISO/IEC JTC 1. 101 | 102 | The procedures used to develop this document and those intended for its further 103 | maintenance are described in the ISO/IEC Directives, Part 1. In particular the 104 | different approval criteria needed for the different types of document should be 105 | noted. This document was drafted in accordance with the editorial rules of the 106 | ISO/IEC Directives, Part 2 (see \url{www.iso.org/directives}). 107 | 108 | Attention is drawn to the possibility that some of the elements of this document 109 | may be the subject of patent rights. ISO and IEC shall not be held responsible 110 | for identifying any or all such patent rights. Details of any patent rights 111 | identified during the development of the document will be in the Introduction 112 | and/or on the ISO list of patent declarations received (see \url{www.iso.org/patents}). 113 | 114 | Any trade name used in this document is information given for the convenience of 115 | users and does not constitute an endorsement. 116 | 117 | For an explanation on the voluntary nature of standards, the meaning of ISO 118 | specific terms and expressions related to conformity assessment, as well as 119 | information about ISO's adherence to the World Trade Organization (WTO) principles 120 | in the Technical Barriers to Trade (TBT) see the following URL: 121 | \url{www.iso.org/iso/foreword.html}. 122 | 123 | This document was prepared by Technical Committee ISO/IEC JTC 1, \emph{Information 124 | technology}, Subcommittee SC 22, \emph{Programming languages, their environments and 125 | system software interfaces}. 126 | 127 | \newpage 128 | -------------------------------------------------------------------------------- /ext/merge2std2/cover-reg.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = P0896.tex 2 | %%-------------------------------------------------- 3 | %% Title page for the C++ Standard 4 | 5 | 6 | \thispagestyle{empty} 7 | {\raisebox{.35ex}{\smaller\copyright}}\,ISO/IEC 2017 --- All rights reserved 8 | \vspace{2ex} 9 | 10 | \begin{flushright} 11 | \textbf{ISO/IEC JTC1 SC22 WG21 N\,\LARGE4684} 12 | 13 | Date: \today 14 | 15 | ISO/IEC TS 21425 16 | 17 | ISO/IEC JTC1 SC22 WG21 18 | 19 | Secretariat: ANSI 20 | 21 | \end{flushright} 22 | 23 | \vfill 24 | 25 | \textbf{\LARGE Programming Languages --- \doctitle} 26 | 27 | Langages de programmation --- \frtitle 28 | 29 | \vfill 30 | 31 | \begin{tabular}{|p{\hsize}|} 32 | \hline 33 | \begin{center} 34 | \textbf{Warning} 35 | \end{center} 36 | 37 | \vspace{2ex} 38 | 39 | This document is not an ISO International Standard. It is distributed 40 | for review and comment. It is subject to change without notice and may 41 | not be referred to as an International Standard.\\\\ 42 | 43 | Recipients of this draft are invited to submit, with their comments, 44 | notification of any relevant patent rights of which they are aware 45 | and to provide supporting documentation.\\\\ 46 | \hline 47 | \end{tabular} 48 | 49 | \vfill 50 | \noindent 51 | Document type: Candidate Draft Technical Specification\\ 52 | Document stage: (30) Committee\\ 53 | Document Language: E 54 | \pagebreak 55 | 56 | \thispagestyle{cpppage} 57 | 58 | \begin{tabular}{|p{\hsize}|} 59 | \hline 60 | \vspace{0.5ex} 61 | \copyright ISO 2017 62 | \vspace{2ex} 63 | 64 | All rights reserved. Unless otherwise specified, no part of this 65 | publication may be reproduced or utilized otherwise in any form or 66 | by any means, electronic or mechanical, including photocopying, or 67 | posting on the internet or an intranet, without prior written 68 | permission. Permission can be requested from either ISO at the 69 | address below or ISO's member body in the country of the 70 | requestor.\\\\ 71 | 72 | \begin{minipage}{\hsize} 73 | \begin{indented} 74 | ISO copyright office\\ 75 | Case postale 56 $\cdot$ CH-1211 Geneva 20\\ 76 | Tel. + 41 22 749 01 11\\ 77 | Fax + 41 22 749 09 47\\ 78 | E-mail copyright@iso.org\\ 79 | Web www.iso.org 80 | \end{indented} 81 | \end{minipage} 82 | 83 | \vspace{2ex} 84 | 85 | Published in Switzerland\\\\ 86 | \hline 87 | \end{tabular} 88 | 89 | \newpage 90 | 91 | \chapter{Foreword} 92 | ISO (the International Organization for Standardization) and IEC (the International 93 | Electrotechnical Commission) form the specialized system for worldwide standardization. 94 | National bodies that are members of ISO or IEC participate in the development of 95 | International Standards through technical committees established by the respective 96 | organization to deal with particular fields of technical activity. ISO and IEC 97 | technical committees collaborate in fields of mutual interest. Other international 98 | organizations, governmental and non-governmental, in liaison with ISO and IEC, 99 | also take part in the work. In the field of information technology, ISO and IEC 100 | have established a joint technical committee, ISO/IEC JTC 1. 101 | 102 | The procedures used to develop this document and those intended for its further 103 | maintenance are described in the ISO/IEC Directives, Part 1. In particular the 104 | different approval criteria needed for the different types of document should be 105 | noted. This document was drafted in accordance with the editorial rules of the 106 | ISO/IEC Directives, Part 2 (see \url{www.iso.org/directives}). 107 | 108 | Attention is drawn to the possibility that some of the elements of this document 109 | may be the subject of patent rights. ISO and IEC shall not be held responsible 110 | for identifying any or all such patent rights. Details of any patent rights 111 | identified during the development of the document will be in the Introduction 112 | and/or on the ISO list of patent declarations received (see \url{www.iso.org/patents}). 113 | 114 | Any trade name used in this document is information given for the convenience of 115 | users and does not constitute an endorsement. 116 | 117 | For an explanation on the voluntary nature of standards, the meaning of ISO 118 | specific terms and expressions related to conformity assessment, as well as 119 | information about ISO's adherence to the World Trade Organization (WTO) principles 120 | in the Technical Barriers to Trade (TBT) see the following URL: 121 | \url{www.iso.org/iso/foreword.html}. 122 | 123 | This document was prepared by Technical Committee ISO/IEC JTC 1, \emph{Information 124 | technology}, Subcommittee SC 22, \emph{Programming languages, their environments and 125 | system software interfaces}. 126 | 127 | \newpage 128 | -------------------------------------------------------------------------------- /ext/stdconcepts/cover-reg.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = stdconcepts.tex 2 | %%-------------------------------------------------- 3 | %% Title page for the C++ Standard 4 | 5 | 6 | \thispagestyle{empty} 7 | {\raisebox{.35ex}{\smaller\copyright}}\,ISO/IEC 2017 --- All rights reserved 8 | \vspace{2ex} 9 | 10 | \begin{flushright} 11 | \textbf{ISO/IEC JTC1 SC22 WG21 N\,\LARGE4684} 12 | 13 | Date: \today 14 | 15 | ISO/IEC TS 21425 16 | 17 | ISO/IEC JTC1 SC22 WG21 18 | 19 | Secretariat: ANSI 20 | 21 | \end{flushright} 22 | 23 | \vfill 24 | 25 | \textbf{\LARGE Programming Languages --- \doctitle} 26 | 27 | Langages de programmation --- \frtitle 28 | 29 | \vfill 30 | 31 | \begin{tabular}{|p{\hsize}|} 32 | \hline 33 | \begin{center} 34 | \textbf{Warning} 35 | \end{center} 36 | 37 | \vspace{2ex} 38 | 39 | This document is not an ISO International Standard. It is distributed 40 | for review and comment. It is subject to change without notice and may 41 | not be referred to as an International Standard.\\\\ 42 | 43 | Recipients of this draft are invited to submit, with their comments, 44 | notification of any relevant patent rights of which they are aware 45 | and to provide supporting documentation.\\\\ 46 | \hline 47 | \end{tabular} 48 | 49 | \vfill 50 | \noindent 51 | Document type: Candidate Draft Technical Specification\\ 52 | Document stage: (30) Committee\\ 53 | Document Language: E 54 | \pagebreak 55 | 56 | \thispagestyle{cpppage} 57 | 58 | \begin{tabular}{|p{\hsize}|} 59 | \hline 60 | \vspace{0.5ex} 61 | \copyright ISO 2017 62 | \vspace{2ex} 63 | 64 | All rights reserved. Unless otherwise specified, no part of this 65 | publication may be reproduced or utilized otherwise in any form or 66 | by any means, electronic or mechanical, including photocopying, or 67 | posting on the internet or an intranet, without prior written 68 | permission. Permission can be requested from either ISO at the 69 | address below or ISO's member body in the country of the 70 | requestor.\\\\ 71 | 72 | \begin{minipage}{\hsize} 73 | \begin{indented} 74 | ISO copyright office\\ 75 | Case postale 56 $\cdot$ CH-1211 Geneva 20\\ 76 | Tel. + 41 22 749 01 11\\ 77 | Fax + 41 22 749 09 47\\ 78 | E-mail copyright@iso.org\\ 79 | Web www.iso.org 80 | \end{indented} 81 | \end{minipage} 82 | 83 | \vspace{2ex} 84 | 85 | Published in Switzerland\\\\ 86 | \hline 87 | \end{tabular} 88 | 89 | \newpage 90 | 91 | \chapter{Foreword} 92 | ISO (the International Organization for Standardization) and IEC (the International 93 | Electrotechnical Commission) form the specialized system for worldwide standardization. 94 | National bodies that are members of ISO or IEC participate in the development of 95 | International Standards through technical committees established by the respective 96 | organization to deal with particular fields of technical activity. ISO and IEC 97 | technical committees collaborate in fields of mutual interest. Other international 98 | organizations, governmental and non-governmental, in liaison with ISO and IEC, 99 | also take part in the work. In the field of information technology, ISO and IEC 100 | have established a joint technical committee, ISO/IEC JTC 1. 101 | 102 | The procedures used to develop this document and those intended for its further 103 | maintenance are described in the ISO/IEC Directives, Part 1. In particular the 104 | different approval criteria needed for the different types of document should be 105 | noted. This document was drafted in accordance with the editorial rules of the 106 | ISO/IEC Directives, Part 2 (see \url{www.iso.org/directives}). 107 | 108 | Attention is drawn to the possibility that some of the elements of this document 109 | may be the subject of patent rights. ISO and IEC shall not be held responsible 110 | for identifying any or all such patent rights. Details of any patent rights 111 | identified during the development of the document will be in the Introduction 112 | and/or on the ISO list of patent declarations received (see \url{www.iso.org/patents}). 113 | 114 | Any trade name used in this document is information given for the convenience of 115 | users and does not constitute an endorsement. 116 | 117 | For an explanation on the voluntary nature of standards, the meaning of ISO 118 | specific terms and expressions related to conformity assessment, as well as 119 | information about ISO's adherence to the World Trade Organization (WTO) principles 120 | in the Technical Barriers to Trade (TBT) see the following URL: 121 | \url{www.iso.org/iso/foreword.html}. 122 | 123 | This document was prepared by Technical Committee ISO/IEC JTC 1, \emph{Information 124 | technology}, Subcommittee SC 22, \emph{Programming languages, their environments and 125 | system software interfaces}. 126 | 127 | \newpage 128 | -------------------------------------------------------------------------------- /ext/memory-specialisations/intro.tex: -------------------------------------------------------------------------------- 1 | \rSec0[intro]{General} 2 | \rSec1[intro.change.log]{Change Log} 3 | \rSec2[intro.change.log.minor]{Minor changes} 4 | 5 | The following changes are editorial in nature, or were added to the discussion 6 | in LEWG. 7 | 8 | \begin{itemize} 9 | \item Minor typographical changes (e.g. \tcode{s/typename/class/g}). 10 | \item Moved \doccite{Annex B Reference implementation} to \ref{intro.compliance}. 11 | \item All \tcode{NoThrow} iterators delimited by \tcode{Sentinel}s are now delimited by 12 | \tcode{\placeholder{no-throw-sentinel}}s. 13 | \end{itemize} 14 | 15 | \rSec2[intro.change.log.major]{Major changes} 16 | 17 | The following changes affect the proposal's direction, as requested by LEWG. 18 | 19 | \begin{itemize} 20 | \item Re-specified all concepts as exposition-only. 21 | \item Removed \doccite{Annex A Compatibility features}, which deprecated the three-legged memory 22 | specialisations. 23 | \item Changed the \tcode{uninitialized_copy_n} and \tcode{uninitialized_move_n} so that they take a 24 | full output range, rather than half an output range. This was not strictly directed by LEWG, 25 | but it is in line with the direction to remove the three-legged algorithms. 26 | \item Added editor notes to preserve the requirements from \doccite{Annex A} that affect the 27 | memory specialisations in namespace \tcode{std}. 28 | \end{itemize} 29 | 30 | \rSec1[intro.scope]{Scope} 31 | 32 | \pnum 33 | This proposal describes functions compatible with the Ranges TS. These extensions change and add to 34 | the existing memory specialisation library facilities found in C++17. 35 | 36 | \rSec1[intro.motivation]{Motivation} 37 | 38 | \pnum 39 | \doccite{N3351 A Concept Design for the STL} (Stroustrup and Sutton, 2012), also known as the 40 | `Palo Alto Report', serves as the basis for the Ranges TS. Both the Palo Alto Report and the Ranges 41 | TS focus on the algorithms located in \tcode{}, and are not extended to revise the 42 | algorithms found in \tcode{} and \tcode{}. P1033 seeks to include those algorithms 43 | found in \tcode{} alongside the algorithms revised by the Ranges TS. 44 | 45 | \rSec1[intro.compliance]{Implementation compliance} 46 | 47 | \pnum 48 | Similarly to the Ranges TS, conformance requirements are the same as those described in 49 | \ref{intro.compliance} in the \Cpp Standard. 50 | \enternote 51 | Conformance is defined in terms of the behaviour of programs. 52 | \exitnote 53 | 54 | \pnum 55 | A reference implementation can be found in the master branch of Casey Carter's Ranges TS reference 56 | implementation. For a closer inspection, please visit 57 | \href{https://github.com/CaseyCarter/cmcstl2/tree/master/include/stl2/detail/memory}{the reference implementation}. 58 | 59 | \rSec1[intro.namespace]{Namespaces, headers, and modifications to standard classes} 60 | 61 | \pnum 62 | All components described in this document are declared in an unspecified namespace. 63 | 64 | \ednote{The following text is taken from the \Cpp Standard and edited to reflect the fact that much 65 | of this document is suggesting parallel constrained facilities that are specified as diffs against 66 | the existing unconstrained facilities in namespace \tcode{std}.} 67 | 68 | \pnum 69 | The International Standard, ISO/IEC 14882, together with ISO/IEC 19217:2015 (the Concepts TS) and 70 | ISO/IEC TS 21425:2017 (the Ranges TS), provide important context and specification for this paper. 71 | This document is written as a set of changes against the C++ Working Paper, N4741. Sections are 72 | copied verbatim and modified so as to define similar but different components in namespace \tcode{std}. 73 | Effort was made to keep chapter and section numbers the same as in N4741 for the sake of easy 74 | cross-referencing with the understanding that section numbers will change in the final draft of 75 | ISO/IEC 14882 that this proposal is integrated with. 76 | 77 | \pnum 78 | References to other entities described in this document are assumed to be qualified with 79 | \tcode{::std::ranges::}, and references to entities described in the International Standard are 80 | assumed to be qualified with \tcode{::std::}. 81 | 82 | \pnum 83 | P1033 uses diff formatting to show how the proposed algorithms differ from the existing algorithms 84 | in the International Standard. \added{Turquoise formatting} indicates text added to 85 | \tcode{::std::ranges}, and \removed{red formatting} indicates where the proposed algorithms diverge 86 | from their International Standard forebears. Except where expressly noted, no changes are proposed 87 | to the existing algorithms. 88 | 89 | \pnum 90 | This document specifically describes changes to \tcode{}. As such, new content can be found 91 | in the \tcode{} header. 92 | 93 | \begin{floattable}{Proposal headers}{tab:intro.headers}{l} 94 | \topline 95 | \tcode{}\\ 96 | \bottomline 97 | \end{floattable} 98 | --------------------------------------------------------------------------------