Re: Make copyObject work in C++
Jelte Fennema <postgres@jeltef.nl>
From: "Jelte Fennema-Nio" <postgres@jeltef.nl>
To: "Peter Eisentraut" <peter@eisentraut.org>
Cc: "PostgreSQL Hackers" <pgsql-hackers@lists.postgresql.org>, "Thomas
Munro" <thomas.munro@gmail.com>
Date: 2026-02-20T09:47:40Z
Lists: pgsql-hackers
Attachments
- v9-0001-Support-using-copyObject-in-C.patch (text/x-patch) patch v9-0001
- v9-0002-Use-typeof-everywhere-instead-of-compiler-specifi.patch (text/x-patch) patch v9-0002
- v9-0003-Make-unconstify-and-unvolatize-use-StaticAssertVa.patch (text/x-patch) patch v9-0003
On Thu Feb 19, 2026 at 9:31 AM CET, Peter Eisentraut wrote: > What I suggest we should do here is: > > 1. Add a configure test that checks if the C++ compiler supports typeof. > > 2. If not, #define typeof to the above expression. > > Then code can continue to use typeof unchanged. Makes total sense, I didn't realise decltype and typeof were not quite the same thing. Attached is an updated patchset that does that. It also includes a patch that improves unconstify and unvolatize by using StaticAssertVariableIsOfTypeMacro instead of a custom version of that assertion. (Like I said, in a future patch I intend to make StaticAssertVariableIsOfTypeMacro work in C++ as well, but this seemed like a good improvement anyway)
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Enable test_cplusplusext with MSVC
- c05ad248f99c 19 (unreleased) landed
-
Disable some C++ warnings in MSVC
- 82a7cbea747c 19 (unreleased) landed
-
meson: Make room for C++-only warning flags for MSVC
- 4c83f1253593 19 (unreleased) landed
-
Make fixed-length list building macros work in C++
- f8e7ca328510 19 (unreleased) landed
-
Make unconstify and unvolatize use StaticAssertVariableIsOfTypeMacro
- 258248d0bdbf 19 (unreleased) landed
-
Use typeof everywhere instead of compiler specific spellings
- e2308350c9b7 19 (unreleased) landed
-
Test List macros in C++ extensions
- 3d28ecb5ac76 19 (unreleased) landed
-
Test most StaticAssert macros in C++ extensions
- 451650eaacd5 19 (unreleased) landed
-
Revert "Change copyObject() to use typeof_unqual"
- 0af05b5dbb42 19 (unreleased) landed
-
Fix for C++ compatibility
- b4555cb070f1 19 (unreleased) landed
-
tests: Add a test C++ extension module
- 476b35d4e311 19 (unreleased) landed