https://gcc.gnu.org/g:f362763f626e0ecca072b9ce8a3f89e5c5a114d8
commit r16-7114-gf362763f626e0ecca072b9ce8a3f89e5c5a114d8 Author: Jonathan Wakely <[email protected]> Date: Wed Jan 28 12:17:14 2026 +0000 libstdc++: Do not allow contract26.cc to build without -fcontracts It seems prefereable to get a hard error if this file is built incorrectly, rather than failing to define any symbols. libstdc++-v3/ChangeLog: * src/experimental/contract26.cc: Use #error if built without contracts support enabled. * include/std/source_location: Remove stray whitespace. Diff: --- libstdc++-v3/include/std/source_location | 2 +- libstdc++-v3/src/experimental/contract26.cc | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libstdc++-v3/include/std/source_location b/libstdc++-v3/include/std/source_location index 3a631c31c1e3..170753fdde2a 100644 --- a/libstdc++-v3/include/std/source_location +++ b/libstdc++-v3/include/std/source_location @@ -94,7 +94,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr source_location (const void *__t) : _M_impl (static_cast <const __impl*>(__t)) {} - + #ifdef __cpp_lib_contracts /* To enable use of the source __impl*. */ friend class std::contracts::contract_violation; diff --git a/libstdc++-v3/src/experimental/contract26.cc b/libstdc++-v3/src/experimental/contract26.cc index d32a2ca13e2f..007a9fcbf586 100644 --- a/libstdc++-v3/src/experimental/contract26.cc +++ b/libstdc++-v3/src/experimental/contract26.cc @@ -25,7 +25,10 @@ #include <contracts> -#ifdef __cpp_lib_contracts +#ifndef __cpp_lib_contracts +# error "This file requires C++26 contracts support to be enabled" +#endif + #if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE # include <iostream> # include <cxxabi.h> @@ -154,4 +157,3 @@ _Z41invoke_default_contract_violation_handlerRKNSt9contracts18contract_violation { invoke_default_contract_violation_handler(violation); } #endif -#endif // __cpp_lib_contracts
