5 ms·
ISO/IEC 14882:2020 C++ Standard Published
- AnimalMuppet 6y ago1853 pages. Oof.
- wffurr 6y agoAnd somehow still insufficient. They can't find words in all that to define some undefined behavior?
- AnimalMuppet 6y agoUndefined behavior isn't undefined because somebody didn't have enough words to nail down a definition. It's undefined by definition.
- pajko 6y agoAnd some of them does a "sane" defined thing on some of the platforms, but enforcing them for all of the platforms would mean a lot of burden to the implementors working on those.
- pjmlp 6y agoThey found them, because UB cases are documented actually.
- Gibbon1 6y agoIt's a cultural problem. The standards committee cares about security than micro-benchmarks on legacy hardware.
- lionkor 6y agosome behaviors are defined to be undefined because there is no sane way to universally define them in a way that doesnt cripple the range of supported hardware & OSs.
- pjmlp 6y agoIt includes the standard library, still way smaller than Java, C#/VB/F#/.NET or Python standards. For a language like C, add the POSIX standards, which is like C's extended library.
- kungito 6y agoC# standard has 550ish pages https://www.ecma-international.org/publications/standards/Ecma-334.htm https://www.ecma-international.org/publications/standards/Ec... Are you making the numbers up?
- pjmlp 6y agoNo, I explicitly mentioned "standard library", you are missing these ones as well. https://www.ecma-international.org/publications/standards/Ecma-335.htm https://www.ecma-international.org/publications/standards/Ec...
- jcelerier 6y agoC# standard doesn't define the standard library, it only gives you the class prototypes (from pages 463-473 from what I can see) while the C++ standard does give you preconditions and postconditions for every function, complexity bounds for algorithms, etc. (from pages 458 to 1609, so by far the majority of the thing). C# also does not define threads, linq, etc... which if it was C++ would all have to be defined in the standard. If you compare only the language definition itself, C++ is actually shorter by a couple pages than C#: it ends at page 457 on the pdf: https://isocpp.org/files/papers/N4860.pdf https://isocpp.org/files/papers/N4860.pdf
- lionkor 6y agoImpressive how C++ always attracts a naive and uninformed toxicity on HN. C++20 is amazing, there has been so much incredible work put in my some many amazing engineers. Yes there are competitors to C++, and we all love an underdog story, but I personally find it to be the only language with this level of expressiveness, without sacrificing complete control. You can write JS-style, with auto and other zero-runtime-cost abstractions, or you can write plain C with function overloading and templates. C++20 is an incredibly exciting milestone, and I congratulate the standards commitee on every little milestone. Great work, guys!
- jokoon 6y agoI just pray that modules will one day let developers speed up compile times. Toolchain complexity, size and slowness are the only things that make me use python.
- lionkor 6y agoclang and MSVC both already (partially) support modules! other than that, gcc is the most c++20-feature-complete compiler
- pjmlp 6y agoMy C++ coding on Windows with VC++ is usually faster than Rust coding, because of incremental compiler, incremental linking and using binary libraries for 3rd party dependencies (DLL/COM). I think when modules mature, it can eventually reach Delphi/.NET like compile speeds.
- jcelerier 6y ago> I just pray that modules will one day let developers speed up compile times. Compiles times are not a problem if you use adequate tools. I have a codebase that heavily uses some large libs such as boost and Qt, here's a video of the edit-compile-run cycle: https://streamable.com/o2g765 https://streamable.com/o2g765 compilation when editing a file takes one-two seconds (measured it at 101 frames in the video in this case, so a bit less than 2 seconds). If anyone's wondering how it's done: - Clang & lld instead of GCC & bfd/gold - Ninja instead of Make (or anything else really) - CMake target_precompile_headers - Code split in dynamic libraries for dev builds There aren't even advanced tricks such as incremental linking mentioned by other comments.