Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vRX5W-00FLWT-39 for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Dec 2025 14:47:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vRX5V-008OIu-12 for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Dec 2025 14:47:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vRX5U-008OIm-33 for pgsql-hackers@lists.postgresql.org; Fri, 05 Dec 2025 14:47:13 +0000 Received: from mail-lj1-x22d.google.com ([2a00:1450:4864:20::22d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vRX5R-003I9X-35 for pgsql-hackers@lists.postgresql.org; Fri, 05 Dec 2025 14:47:12 +0000 Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-37b99da107cso21393411fa.1 for ; Fri, 05 Dec 2025 06:47:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1764946028; x=1765550828; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=/12egJatMj1x7rEkjdH4/j34s5pGbcQwi2NPfck8psA=; b=aJzM9pCB1QnUiKJk2TsQ8v4ioRdX48MTzXAfGjzGg2NG2KTZhtCa+Y5O26GXPZw0x4 W3V+L+cEe298jf+EG0NkCFG+CI8qn444HwNEnk2B5hGv/GbpJNrbqoGfRHc6dqrFbu+M kf5ix3g+RQ6WzA9aIp0W/motKukImXPlM5U3ZE0mJVrp6CoR4tqtAJHWVda/ciy/EoFR Z3CL5Ru35CEaMH+qztfNyi62lp8cXrzRiv4G8fFKdXOwxcVJQ+nry4Fova2CLiLIeGrr Hrpx3OY/TEeLiaoikFRTdCcuZD64RR3yaFTtGWGplPU32STFYUUZBNWZB3FXlZBYYw/x hNrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764946028; x=1765550828; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/12egJatMj1x7rEkjdH4/j34s5pGbcQwi2NPfck8psA=; b=AqLUpiRcnF46gFN3PO69MMkmX7M555Ir4hTYpFfX6B6lQaKWq5fRT4by74LdVi295N t2n7zRvVemyAT+aXhFpsUGUsNuPjpNbFcDyKRXgxgNimU7BjrFeisBm3YzFQSzXlLeik x0eqyDywwmoCjj9o8MJvGwfozEwKdKsJMKHWCZiYt5w3pjjhCBKiPX12RsLpXwvo+PjN X/VuIs5AOxW611XxYzA0PoRKmshPUEO3i6X3kT/SoBA6ViTfe3NLpiDsZCPc+i4eL0Xv 320hu9WwImIcR4zEW+EPVu5aBhsJvcv3mqLYCtMyTrtLFaGPsJBCzbt2N8i15b2oBxXb 4OQw== X-Gm-Message-State: AOJu0YxBVaEqiDZRkbj0q8RuMHEGINzxM+qOfYI+4ZxNHV/7aK9iWLW+ DO3TLOvldI+qGTkHW5NClhIrIPqxWO5F6xnvMGFH6hZ3v6ZGzLL/9nsk36CvOAQD9GJlTPo9xWg m5qPi/VmqmShb7qYY4BSGr7nCjbbWpiDE6GM08Xz/992DK16flKmmWVI= X-Gm-Gg: ASbGncsyet2FGAF/UeSPhuN19fNnZl1yJ5FfncBkkXspy3p4qW+eTm6r+8t+WcYMIjq 9KipdkYLJDQODcuuA1TYg6pRYw4OSHBWGSfJpYJ4y1cLHUsS8/+A8EBURtp4+Or1Y+yzkV0xfmr GspLOnwNAPDHLNMCHObaNTx3LiPUyiPj6i1WJSCrOnGp81NhpeIukXtBxnKzL1W4lR+8j0A4BDe t0kcgIOCahrt6icnJmbgahv6CVcn4UUqZT/N7t5cOR3fKu0X2cZVZKTfJ5qp3Z0HLd2FQ== X-Google-Smtp-Source: AGHT+IGoODbmqG63zcBNVHxBYB3NPzNldLo+N528/M+uQgmIY23kN8okTXqR71YBkr6TqAVTDufj6HLsHl9PYvrQKSI= X-Received: by 2002:a05:6512:3511:b0:597:d66b:b2b with SMTP id 2adb3069b0e04-597d66b0c88mr1593457e87.24.1764946028312; Fri, 05 Dec 2025 06:47:08 -0800 (PST) MIME-Version: 1.0 From: Jelte Fennema-Nio Date: Fri, 5 Dec 2025 15:46:57 +0100 X-Gm-Features: AWmQ_bmZosR-PWEoxXePIAb6Zu5a4N7rv92DLdvNflIMiACRjIvuRFmy0xBzGvs Message-ID: Subject: Make copyObject work in C++ To: PostgreSQL Hackers , Thomas Munro Content-Type: multipart/mixed; boundary="00000000000010ef7e06453585cb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000010ef7e06453585cb Content-Type: text/plain; charset="UTF-8" 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. --00000000000010ef7e06453585cb Content-Type: application/x-patch; name="v1-0001-Make-copyObject-work-in-C.patch" Content-Disposition: attachment; filename="v1-0001-Make-copyObject-work-in-C.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_misz5zxq0 RnJvbSA3Y2U0NDkxN2ZlNzg5ZTM5NDE5M2ZmMjBlM2I4OGIyZTgyZjk2YzIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDUgRGVjIDIwMjUgMTU6Mzc6NTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx XSBNYWtlIGNvcHlPYmplY3Qgd29yayBpbiBDKysKCkNhbGxpbmcgY29weU9iamVjdCBmYWlscyBp biBDKysgd2l0aCBhbiBlcnJvciBsaWtlIGluIG1vc3Qgc2V0dXBzOgoKZXJyb3I6IHVzZSBvZiB1 bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3R5cGVvZic7IGRpZCB5b3UgbWVhbiAndHlwZWlkJwoKVGhp cyBpcyBkdWUgdG8gdGhlIEMgY29tcGlsZXIgc3VwcG9ydGluZyB1c2VkIHRvIGNvbXBpbGUgcG9z dGdyZXMKc3VwcG9ydGluZyB0eXBlb2YsIGJ1dCB0aGF0IGZ1bmN0aW9uIGFjdHVhbGx5IG5vdCBi ZWluZyBwcmVzZW50IGluIHRoZQpDKysgY29tcGlsZXIuIFRoaXMgZml4ZXMgdGhhdCBieSB1c2lu ZyBkZWNsdHlwZSBpbnN0ZWFkIG9mIHR5cGVvZiB3aGVuCmluY2x1ZGluZyB0aGUgaGVhZGVyIGlu IEMrKy4KLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIHwgNCArKystCiAxIGZpbGUgY2hh bmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggZmIz OTU3ZTc1ZTUuLjVhNGZhODI2MGYyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKQEAgLTIyNiw3ICsyMjYsOSBAQCBl eHRlcm4gaW50MTYgKnJlYWRBdHRyTnVtYmVyQ29scyhpbnQgbnVtQ29scyk7CiBleHRlcm4gdm9p ZCAqY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSk7CiAKIC8qIGNhc3QgcmVzdWx0IGJh Y2sgdG8gYXJndW1lbnQgdHlwZSwgaWYgc3VwcG9ydGVkIGJ5IGNvbXBpbGVyICovCi0jaWZkZWYg SEFWRV9UWVBFT0YKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorI2RlZmluZSBjb3B5T2JqZWN0 KG9iaikgKChkZWNsdHlwZShvYmopKSBjb3B5T2JqZWN0SW1wbChvYmopKQorI2VsaWYgZGVmaW5l ZChIQVZFX1RZUEVPRikKICNkZWZpbmUgY29weU9iamVjdChvYmopICgodHlwZW9mKG9iaikpIGNv cHlPYmplY3RJbXBsKG9iaikpCiAjZWxzZQogI2RlZmluZSBjb3B5T2JqZWN0KG9iaikgY29weU9i amVjdEltcGwob2JqKQoKYmFzZS1jb21taXQ6IDRkOTM2YzNmZmYxYWM4ZGVhZDJjYzI0MGJhM2Rh MmVkNjMzNzI1N2MKLS0gCjIuNTIuMAoK --00000000000010ef7e06453585cb--