https://gcc.gnu.org/g:99135a19aad894b8f3d5372df0f94b14e2f42fb2

commit r16-8426-g99135a19aad894b8f3d5372df0f94b14e2f42fb2
Author: Jonathan Wakely <[email protected]>
Date:   Wed Apr 1 20:17:29 2026 +0100

    libstdc++: Add Doxygen documentation to <version>
    
    libstdc++-v3/ChangeLog:
    
            * include/std/version: Add Doxygen documentation comment.
    
    Reviewed-by: Nathan Myers <[email protected]>
    Reviewed-by: Tomasz KamiƄski <[email protected]>

Diff:
---
 libstdc++-v3/include/std/version | 38 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 36 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version
index c6ac031f6b54..8ab9acc17a0a 100644
--- a/libstdc++-v3/include/std/version
+++ b/libstdc++-v3/include/std/version
@@ -23,8 +23,42 @@
 // <http://www.gnu.org/licenses/>.
 
 /** @file version
- *  This is a Standard C++ Library file.  You should @c \#include this file
- *  in your programs, rather than any of the @a *.h implementation files.
+ *  This is a Standard C++ Library header.  You should `#include` this header
+ *  in your programs, rather than any of the `*.h` implementation files.
+ *
+ * The `<version>` header defines feature test macros that describe the
+ * supported features of the C++ standard library implementation being used.
+ * The macros that are defined, and their values, depend on compiler flags
+ * (usually `-std`, but others such as `-fcoroutines` and `-fno-aligned-new`
+ * can affect them).
+ *
+ * These macros can be used to conditionally enable or disable code:
+ *
+ * ```
+ * #include <version>
+ * #ifdef __cpp_lib_expected
+ *   // std::expected is supported
+ * #endif
+ * ```
+ *
+ * The macro values indicate different levels of support, for example
+ * `__cpp_lib_expected == 202202L` means only the original feature set of
+ * `std::expected` is supported, while `__cpp_lib_expected == 202211L` means
+ * that the monadic functions such as `std::expected::and_then` are also
+ * supported.
+ *
+ * The list of macros defined in `<version>` and their meanings is given in
+ * the C++ standard committee's SD-6 document:
+ * 
https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
+ *
+ * `<version>` may also define non-standard, implementation-specific macros,
+ * such as libstdc++'s `_GLIBCXX_RELEASE`.  However, the standard feature
+ * test macros should be preferred over depending on specific versions of any
+ * particular implementation.
+ *
+ * The `<version>` header was introduced in C++20, but libstdc++ provides it
+ * unconditionally. As documented in SD-6, some macros correspond to features
+ * in C++17 and earlier standards.
  */
 
 #ifndef _GLIBCXX_VERSION_INCLUDED

Reply via email to