]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Fix use of feature test macro in <source_location>
authorJonathan Wakely <jwakely@redhat.com>
Thu, 29 Jan 2026 17:02:43 +0000 (17:02 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 29 Jan 2026 17:14:03 +0000 (17:14 +0000)
libstdc++-v3/ChangeLog:

* include/std/source_location: Check __glibcxx_contracts instead
of __cpp_lib_contracts.
* testsuite/18_support/contracts/includes.cc: New test.

libstdc++-v3/include/std/source_location
libstdc++-v3/testsuite/18_support/contracts/includes.cc [new file with mode: 0644]

index 170753fdde2a55dacd64b55a888152d868565907..f773879755c9643904307d7771ffd1bf9a763a3d 100644 (file)
 namespace std
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
-#ifdef __cpp_lib_contracts
-  namespace contracts
-  {
-    class contract_violation;
-  }
-#endif // __cpp_lib_contracts
+#ifdef __glibcxx_contracts
+  namespace contracts { class contract_violation; }
+#endif
 
   /// A class that describes a location in source code.
   struct source_location
@@ -95,10 +92,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     constexpr source_location (const void *__t)
       : _M_impl (static_cast <const __impl*>(__t)) {}
 
-#ifdef __cpp_lib_contracts
+#ifdef __glibcxx_contracts
     /* To enable use of the source __impl*.  */
     friend class std::contracts::contract_violation;
-#endif // __cpp_lib_contracts
+#endif
   };
 
 _GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/testsuite/18_support/contracts/includes.cc b/libstdc++-v3/testsuite/18_support/contracts/includes.cc
new file mode 100644 (file)
index 0000000..91f793f
--- /dev/null
@@ -0,0 +1,6 @@
+// { dg-options "-fcontracts" }
+// { dg-do compile { target c++26 } }
+
+// We should not get errors from including this before <contracts>:
+#include <source_location>
+#include <contracts>