Re: Change copyObject() to use typeof_unqual
Peter Eisentraut <peter@eisentraut.org>
From: Peter Eisentraut <peter@eisentraut.org>
To: Jelte Fennema-Nio <postgres@jeltef.nl>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-03-13T10:43:15Z
Lists: pgsql-hackers
Attachments
- 0001-Hardcode-override-of-typeof_unqual-for-clang-for-bit.patch (text/plain) patch 0001
On 07.03.26 01:17, Jelte Fennema-Nio wrote: > On Fri, 6 Mar 2026 at 20:17, Peter Eisentraut <peter@eisentraut.org> wrote: >> This revealed an insufficiency in that commit, which I fix in the first >> patch. > > Thanks! There is a failure related to this on buildfarm member sevengill: ../pgsql/src/test/modules/test_cplusplusext/test_cplusplusext.cpp:41:22: error: no template named 'remove_reference_t' in namespace 'std'; did you mean 'remove_reference'? I don't know how that makes sense. Maybe this is a problem in the local installation of the compiler or standard library. (This is also a bit suspicious because AFAICT, clang 15 defaults to C++14, but on that animal it thinks it needs to add -std=gnu++11.) >> I have addressed the above problem by swapping the order of the probes >> (putting the underscore variant first), as discussed. > > Annoying that this is needed, but I agree that it's the least bad > option in this case. I committed this and it still fails, but the failure is now narrower. There is a failure on buildfarm member taipan because it uses an unusual combination of gcc and clang (the gcc is much newer than clang). The only sensible workaround I could think of is a hardcoded override based on the clang version, as in the attached patch. And alternative is that we decide that we don't want to support this combination, meaning that we would effectively require that clang is approximately as-old-or-newer than gcc.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add some const qualifiers enabled by typeof_unqual change on copyObject
- 7724cb9935a9 19 (unreleased) landed
-
Hardcode typeof_unqual to __typeof_unqual__ for clang
- 2eb6cd327cae 19 (unreleased) landed
-
Clean up postgres_fdw/t/010_subscription.pl.
- f4af7849b3db 19 (unreleased) cited
-
Hardcode override of typeof_unqual for clang-for-bitcode
- 63275ce84d2f 19 (unreleased) landed
-
Make typeof and typeof_unqual fallback definitions work on C++11
- cd083b54bd67 19 (unreleased) landed
-
Change copyObject() to use typeof_unqual
- 59292f7aac72 19 (unreleased) landed
- 4cfce4e62c8f 19 (unreleased) landed
-
Fixes for C++ typeof implementation
- 9c05f152b5dd 19 (unreleased) landed
-
Support using copyObject in standard C++
- 1887d822f142 19 (unreleased) cited