HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
cplusplus
draft
TeX2011–2025
cplusplus / draft

draft

C++ standards drafts

24Distinct people
25Mentions
0Explicit recommenders
240GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

C++ standards drafts

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 11:56:56 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year25 dated mentions

Observed mentions: 2011-11-09 17:04:18 UTC to 2025-11-01 22:00:01 UTC.

02462011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20112012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC110
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC211
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC000
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC202
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC000
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC606
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC202
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC312
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC211
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC303
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC303
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
C++ Standard Draft Sources These are the sources used to generate drafts of the C++ standard. These sources should not be considered an ISO publication, nor should documents generated from them unless officially adopted by the C++ working group (ISO/IEC JTC1/SC22/WG21). Get involved: How to submit an editorial issue How to tell if an issue is editorial How to submit a new issue/defect report for non-editorial issues More information about the C++ standard can be found at isocpp.org. Getting Started on Mac OS X Install the MacTeX distribution. If you are on a slow network, you'll want to get the BasicTeX package instead, then run the following command to install the other packages that the draft requires: sudo tlmgr install latexmk isodate substr relsize ulem fixme rsfs extract layouts enumitem l3packages l3kernel imakeidx splitindex xstring Getting Started on Debian-based Systems Install the following packages: sudo apt-get install latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended lmodern Getting Started on Fedora Install the following packages: dnf install latexmk texlive texlive-isodate texlive-relsize texlive-ulem texlive-fixme texlive-extract texlive-l3kernel texlive-l3packages texlive-splitindex texlive-imakeidx Getting Started on Arch Linux Install the following packages: pacman -S make texlive-latexextra texlive-binextra texlive-plaingeneric texlive-fontsrecommended Getting Started on Microsoft Windows Install Perl (for example, using a Cygwin installation and adding perl. See sample instructions for more details) Install MiKTeX Alternatively, you can install WSL and a Linux distribution, and follow the instructions for Linux above. Instructions To typeset the draft document, from the source directory run: make That's it! You should now have an std.pdf containing the typeset draft. Generated input files To regenerate figures from .dot files, run: make <pdfname> For example: make figvirt.pdf Verifying input and output when making changes While in the source directory, you can check for common mistakes such as misaligned comments with: ../tools/check-source.sh After typesetting the document, you can also check the output for further problems with: ../tools/check-output.sh GitHub Actions will also run these checks when you create a pull request, but it's often faster if you run them locally first. Acknowledgements A great deal of gratitude goes out to Pete Becker for his amazing work in the original conversion of the C++ standard drafts to LaTeX, and his subsequent maintenance of the standard drafts up to C++11. Thank you Pete. Thanks to Walter Brown for suggesting the use of latexmk.
Read the full README on GitHub

What Hacker News says

25 sources
I should have said the "latest standard", not "spec", if we're being technical. But EVERY bit of official material is very clear about asserting that C++23 is still a preview/in-progress, not a standard. Saying otherwise is, strictly speaking, incorrect. https://isocpp.org/std/the-standard https://www.iso.org/standard/79358.html https://github.com/cplusplus/draft/blob/main/papers/n4951.md And quite frankly, what matters to devs is what tooling supports the specification without special configuration, and the answer is "basically none". Not a single compiler fully supports it. https://en.cppreference.com/w/cpp/compiler_support/23 Also, side note, I'd be surprised if more than a third of C++ devs were even using C++20, based on last year's numbers showing only ~25% adoption: https://www.jetbrains.com/lp/devecosystem-2022/cpp/
In C++23: The Next C++ Standard
I've become somewhat convinced that no one has written a correct nontrivial C or C++ program since 1989.* My go-to example in C++ is examining a floating-point number as an integer: • Cast a (pointer to a float) to a (pointer to a uint32_t). No; even if you make sure the size of a float on your target platform is 32 bits, this is undefined behavior. • Make a union of a float and uint32_t. No; this works in C (since C99...?), but in C++ "it is undefined behavior to read from the member of the union that wasn't most recently written." [1] • Use reinterpret_cast<uint32_t>. No; this violates the type aliasing rules, and the behavior is undefined. [2] • Use reinterpret_cast<unsigned char> or reinterpret_cast<std::byte> and then reassemble these into a uint32_t. Yes! this works, although slightly laborious. • Use std::memcpy. Yes! This is perha
Read the rest
ps the "right" answer. The compiler should recognize the idiom and elide any actual copy. I'm not even confident that I have that correct. It's an enormous language to fit into one's head; the language specification runs about 500 pages long and the standard library another 1500. [3] [1] https://en.cppreference.com/w/cpp/language/union [2] https://en.cppreference.com/w/cpp/language/reinterpret_cast [3] https://github.com/cplusplus/draft/releases/tag/n4917 *This is a joke, but only barely so.
In Never trust a programmer who says they know C++
> I don't have a copy of the standard at hand, can anyone quote the relevant section? The C++ (draft) standard is on GitHub! [0] Compiling it needs Perl and some LaTeX packages, but is reasonably straightforwards otherwise. In addition, links to specific draft standards can be found on cppreference [1]. But anyways, in the first C++20 post-publication draft (N4868), the wording you're interested in is in multiple sections. Section 22.2.3 Sequence Containers [sequence.reqmts] has Table 78: Optional sequence container operations [tab:container.seq.opt] (starting on page 815), which states that a precondition of pop_back() is that empty() returns false. Section 16.3.2.4 Detailed Specifications [structure.specifications] (page 481) states: > Preconditions: the conditions that the function assumes to hold whenever it is called; violation of an
Read the rest
y preconditions results in undefined behavior. Therefore, calling pop_back() on an empty vector results in undefined behavior. > Is this something that in practice is implemented in different (exception-throwing) ways? Based on a quick glance at the major implementations (libc++ 15.0.7 at [2], MSVC at [3], libstdc++ at [4]), it looks like asserts are used. Whether those result in exceptions probably depends on whether the asserts are compiled in in the first place and how they are implemented, but it's definitely not a guaranteed exception. [0]: https://github.com/cplusplus/draft [1]: https://en.cppreference.com/w/cpp/links [2]: https://github.com/llvm/llvm-project/blob/llvmorg-15.0.7/lib... [3]: https://github.com/llvm/llvm-project/blob/8dfdcc7b7bf66834a7... [4]: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3...
In Can sanitizers find the two bugs I wrote in C++?
The drafts are available in openstd, both of older versions of the standard[0], and the next, upcoming version[1]. Those are not technically the actual standards, but they're pretty close. But yes, I too dislike the fact that ISO standards are paid for. You know what bugs me the most? ISO 9660, the standard behind the .iso file format. It's been published in 1988, and today still costs roughly 130EUR to buy... [0]: http://www.open-std.org/jtc1/sc22/wg21/docs/standards [1]: https://github.com/cplusplus/draft
In “Free PACER” bill advances through Senate judiciary unanimously
In the current version of the standard on the GitHub repo [0], Section 14.5 Paragraph 5 says: > Whenever an exception is thrown and the search for a handler (14.4) encounters the outermost block of a function with a non-throwing exception specification, the function std::terminate is called (14.6.1). I don't know when precisely noexcept was changed to call std::terminate, but I did find N3103 (included in the 2010-08 post-Rapperswil mailing [1]), which argued that the standard should require calling std::terminate to avoid security issues. [0]: https://github.com/cplusplus/draft [1]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n310...
In Low-cost Deterministic C++ Exceptions for Embedded Systems (2019) [pdf]
For C and C++, you can get effectively equivalent working drafts for free. For C++, you can actually compile the PDF that gets sent to ISO to put the official markings on yourself. Here is C++17: https://github.com/cplusplus/draft/tree/c++17 . If you have a contractual obligation that requires to exactly use a specific version of C/C++, then you'll need to pay money for the actual specification. In pretty much any other situation, the drafts are sufficient and perhaps even better (because they will have incorporated some errata).
In Go is Google's language, not ours

Showing the 15 most recent of 25 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.