Changes
Version 2.1 (Jan 1, 2026)
Migrated source to pandoc-markdown. Produce mkdocs-compatible
output. Minor edits.
Version 2.0 (March 6, 2024)
Updated for C++20.
Don’t use modules or coroutines.
Add recommendation to use <numbers>.
Suggest using auto to move the return type to the end of a
method signature when returning types defined within the class.
Suggest not defining template functions without the template
keyword.
Recommend std::format for formatted output.
Note that range-for can have init-statements.
Mention std::bit_cast.
Recommend using instead of typedef. Rephrase previous
references to typedef.
Comparisons should be defined in terms of operator== and
operator<=>.
Mention std::span.
Some additional references.
Clarify that non-ASCII characters should not be used in identifier
names.
Clarify that variable-length argument lists of variadic template
functions are OK.
Version 0.7 (Sep 18, 2019)
Minor cleanups and updates to take into account that we now require
C++17.
Use the fallthrough attribute, not a comment.
Allow omitting the default clause in a switch statement on an
enum that handles all possible values. Recent compilers will warn
if some values are not handled, and it’s better to get such a
diagnostic at compile-time rather than at runtime.
Clarify avoid-typedef section.
Mention preference for ATH_MSG_ macros.
Don’t require override for destructors.
Avoid using #pragma once.
Version 0.6 (Dec 20, 2017)
The register keyword is an error in C++17.
Dynamic exception specifications are errors in C++17.
Exceptions should be caught using const references, not by value.
Discourage using protected data.
Version 0.5 (Nov 21, 2017)
Add an initial set of guidelines for AthenaMT.
Add recommendation to prefer range-based for.
Version 0.4 (Nov 16, 2017)
Minor updates: we’re now using c++14. Add note about implicit
fallthrough warnings with gcc7. Add rule to use std::abs().
Version 0.3 (Aug 23, 2017)
Add recommendation to avoid bit fields.
Version 0.2 (Aug 9, 2017)
Small typo fixes.
Add a brief description of pointer aliasing.
Add more details about argument passing to functions.
Add recommendation on auto.