Main Changes
- Two new chapters related to build aspects: Build Size and Build Time.
- Reorganized "Basic Concepts II" into two chapters, splitting integer and floating-point topics.
Full Changelog
Preparation:
- Improved IDE/Editor section, added
cursorandvoid. - Added C++ standard adoption (JetBrains Developer Ecosystem).
- Listed C++ main conferences.
Basic Concepts I:
- Improved "Implicit Promotion" section.
- Added special cases for
!and bitwise shift promotion. - Fixed wrong case of undefined behavior in function evaluation.
- Added
float128in the list of floating-point types. - Added
numeric_limitsexample. - Specified two's complement in C++ for signed integer types.
- Slightly improved the "Language Types" section organization.
Basic Concepts II - Integer Types:
- Fixed usage of
zsuffix. - Added two small examples of undefined behavior.
- Improved "Arithmetic Types - Promotion and Conversion Rules" section.
- Slightly improved
int/unisgnedproperties. - Improved "Undefined Behavior of Signed Integer" section.
Basic Concepts II - Floating-Point Types:
- Improved "IEEE floating-point and C++" introduction.
- Fixed "Inf Behavior" that leads to NaN (Special Values Behavior).
- Updated IEEE754 visualization and converter links.
Basic Concepts IV:
- Improved description of attributes for lambda expressions.
- Further clarification of
constexprevaluation. - Added
[[indeterminate]]attribute.
Basic Concepts V:
- Added the
alignofoperator and improved thesizeofsection. - Added C++26
constexprrelaxation. - Added a section for
constexprobjects. - Fixed wrong structure size in
[[no_unique_address]]section. - Improved "Structure initialization - brace or equal" section.
- Added a section "Fixed-Size Arrays".
Basic Concepts VI:
- Added an example of C++23 lambda with the
staticcall operator. - Explained how a lambda is translated into a function object.
- Explained lambda trailing return type.
- Explained the introduction of a new variable in the capture list of a lambda.
- Improved
constexprlambda explanation in C++17. - Provided a better solution for "Preprocessing - Common Error 2".
- Improved the "Macro" section.
Object-Oriented Programming I:
- Improved "Defaulted Constructors, Destructor, and Operators" section.
- Clarified
noexceptbehavior with defaulted= defaultmethods.
Object-Oriented Programming II:
- Explained C++20
operator!=overloading behavior.
Templates and Meta-programming I:
- Described the difference between
decltype(T{}+R{})vs.std::common_type.
Templates and Meta-programming II:
- Found a better way to resolve CTAD limitations.
Translation Units I:
- Improved "Linkage" introduction.
- Added a small section "Declarations and Definitions in Header and Source Files".
- Described symbol visibility.
Code Conventions II:
- Added "Literal" section.
Debugging:
- Created a new section for "Static Analyzers".
- Added results for "Static Analysis Tools Effectiveness".
- Added
NASA IKOSstatic analyzer. - Improved "C++ standard library hardening" section.
- Added Google result for standard library hardening.
- Added Microsoft STL hardening.
- Added
clangsafe buffer programming model. - Added a study related to the impact of compiler warnings.
- Created a new section "Code Complexity".
- Added Debian test case for
cppcheck. - Added
-ftrapvflag to prevent undefined behavior. - Added "Type Sanitizer" section.
- Added "Contracts" section.
- Improved "Overview" and "Assertions" sections.
- Added
CpptraceandBackwardlibraries. - Added reference to
MSVC AddressSanitizer.
Ecosystem:
- Removed
cloc, addedtokeiandscc. - Added
compiler-explorerfeatures and extended its description. - Added
SourceTrail - Project Visualization. - Added
Mr.Docs. - Added
AST diff. - Added
ast-grep.
Utilities:
- Added "C++ Views" introduction.
- Added
std::mdspan. - Significantly improved
std::spansection. - Added "True Random Number Generator (TRNG)" description.
Iterators, Containers, Algorithms:
- Described pro/cons of using
std::arrayinstead ofraw arrays.
Advanced Topics II:
- Mentioned C++26 rule that disallows binding a returned reference to a temporary.
Optimizations I:
- Added "Amazon PageSpeed" case.
Optimizations II:
- Improved "Inlining" description.
- Described function inlining warning
-Winline. - Added "one-character commit" (Meta) case study.
- Improved "Pure" and "Constant" functions section.
- Improved "Exception" effects on performance.
- Added
constexprvs.static constexpr.
Optimization III:
- Added "Automatic Feedback-Directed Optimization (AutoFDO)" description.
- Added "Compiler Optimization Remarks" description.
- Added "Compression Libraries".
- Improved "Performance Benchmarking" section.
- Added "Program Memory Layout compiler options".
- Improved "Architecture Flags" section.
- Added VS2026 performance improvement.
Thanks for all feedback and contributions: @ValentinoGuerrini, @nicolaszzhao, @bnbolo, @lingeandrea, @eddelbuettel, @leofracca, @mmorawiec, @linesight, @alarxx, @fdila, @bitorangej, @roshankarande, @hsunchiu, @c02y.
Special thanks to @oleksandr-pavlyk and @krzysztofkortas for many opened issues.