[PATCH] libstdc++: add __glibcxx_want_contracts for source_location
Jonathan Wakely
jwakely@redhat.com
Thu Jan 29 17:06:22 GMT 2026
On Thu, 29 Jan 2026 at 16:57, vspefs <vspefs@protonmail.com> wrote:
>
> C++26 contracts implementation requires modifications to source_location
> header file. The logic is added but not triggered due to not defining
> __glibcxx_want_contracts before including the internal version header.
> This patch fixes this.
Thanks for pointing out the problem. This is not a correct change though.
This will cause <source_location> to define the __cpp_lib_contracts
macro, but the C++26 draft says only the <version> and <contracts>
headers define that macro.
The right fix is to change the #ifdef lines to check
__glibcxx_contracts instead. I'll make that change and add a test.
>
> libstdc++-v3/ChangeLog:
>
> * include/std/source_location: Define __glibcxx_want_contracts.
>
> Signed-off-by: Xie Han <vspefs@protonmail.com>
> ---
> libstdc++-v3/include/std/source_location | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/libstdc++-v3/include/std/source_location b/libstdc++-v3/include/std/source_location
> index 170753fdde2..08d9779fa1d 100644
> --- a/libstdc++-v3/include/std/source_location
> +++ b/libstdc++-v3/include/std/source_location
> @@ -30,6 +30,7 @@
> #define _GLIBCXX_SRCLOC 1
>
> #define __glibcxx_want_source_location
> +#define __glibcxx_want_contracts
> #include <bits/version.h>
>
> #if __cpp_lib_source_location // C++ >= 20 && builtin_source_location
> --
> 2.52.0
>
>
More information about the Libstdc++
mailing list