| From: | David Geier <geidav(dot)pg(at)gmail(dot)com> |
|---|---|
| To: | Peter Eisentraut <peter(at)eisentraut(dot)org>, Jelte Fennema-Nio <postgres(at)jeltef(dot)nl>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com> |
| Subject: | Re: Make copyObject work in C++ |
| Date: | 2025-12-08 08:33:10 |
| Message-ID: | fad7228e-a920-4ebb-973c-a48cc5066b71@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
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 postgres
>> supporting typeof, but that function actually not being present in the
>> C++ compiler. This fixes that by using decltype instead of typeof when
>> including the header in C++.
>>
>> Realized because of Thomas' not about how much of our headers should
>> work in C++, and remembering I hit this specific problem myself.
>>
>> Another approach would be to force the value of HAVE_TYPEOF to 0 if
>> __cplusplus.
>
> 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 nonsensical because the reason you
> made the copy is that you can modify it.) See attached patch for an
> example. Does C++ have something that is semantically similar to that?
Since C++11 there's std::remove_const which can be used as
std::remove_const<decltype(type)>::type.
I'm not aware of anything pre C++11, except for rolling your own variant
of std::remove_const via template specialization.
--
David Geier
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Chao Li | 2025-12-08 08:37:30 | Simplify the way of appending comma to stringInfo |
| Previous Message | Michael Paquier | 2025-12-08 08:23:08 | Re: Fix crash during recovery when redo segment is missing |