[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