Re: Make copyObject work in C++

2025-12-09 Thread Jelte Fennema-Nio
On Mon, 8 Dec 2025 at 08:57, Peter Eisentraut wrote: > In the long run, I would like to change copyObject() to use > typeof_unqual instead, because that handles qualifiers more correctly. > (Currently, copyObject() of a const-qualified pointer results in a > const-qualified pointer, which is nonse

Re: Make copyObject work in C++

2025-12-08 Thread Jelte Fennema-Nio
On Mon, 8 Dec 2025 at 15:51, Tom Lane wrote: > > Peter Eisentraut writes: > > AFAICT, both gcc and clang support typeof in C++ mode as well. So this > > kind of renaming could be confusing. > > Hm, if that's true then we should not have to do anything ... > so why is Jelte reporting a problem?

Re: Make copyObject work in C++

2025-12-08 Thread Tom Lane
Peter Eisentraut writes: > AFAICT, both gcc and clang support typeof in C++ mode as well. So this > kind of renaming could be confusing. Hm, if that's true then we should not have to do anything ... so why is Jelte reporting a problem? regards, tom lane

Re: Make copyObject work in C++

2025-12-08 Thread Jelte Fennema-Nio
On Mon, 8 Dec 2025 at 09:33, David Geier wrote: > Since C++11 there's std::remove_const which can be used as > std::remove_const::type. > > I'm not aware of anything pre C++11, except for rolling your own variant > of std::remove_const via template specialization. I think depending on C++11 sound

Re: Make copyObject work in C++

2025-12-08 Thread David Geier
On 08.12.2025 08:57, Peter Eisentraut wrote: > On 05.12.25 15:46, Jelte Fennema-Nio wrote: >> Calling copyObject fails in C++ with an error like in most setups: >> >> error: use of undeclared identifier 'typeof'; did you mean 'typeid' >> >> This is due to the C compiler supporting used to compile p

Re: Make copyObject work in C++

2025-12-08 Thread Jelte Fennema-Nio
On Sun Dec 7, 2025 at 8:45 PM CET, Tom Lane wrote: #ifdef __cplusplus #undef typeof #define typeof decltype #define HAVE_TYPEOF 1 #endif Went with defining pg_exprtype (pg_typeof already exists). Undefining typeof seemed a bit heavy-handed. Especially since I think it would be nice to backport

Re: Make copyObject work in C++

2025-12-08 Thread Peter Eisentraut
On 07.12.25 20:45, Tom Lane wrote: Hmm, this only fixes the one use-case. Admittedly we have only one use-case, but as soon as we have another we'll have a new problem. How about instead modifying the macro? Maybe something like this in c.h (untested): #ifdef __cplusplus #undef typeof #define

Re: Make copyObject work in C++

2025-12-07 Thread Peter Eisentraut
On 05.12.25 15:46, Jelte Fennema-Nio wrote: Calling copyObject fails in C++ with an error like in most setups: error: use of undeclared identifier 'typeof'; did you mean 'typeid' This is due to the C compiler supporting used to compile postgres supporting typeof, but that function actually not

Re: Make copyObject work in C++

2025-12-07 Thread Tom Lane
Jelte Fennema-Nio writes: > Calling copyObject fails in C++ with an error like in most setups: > error: use of undeclared identifier 'typeof'; did you mean 'typeid' > This is due to the C compiler supporting used to compile postgres > supporting typeof, but that function actually not being present