Re: Make copyObject work in C++
| От | Peter Eisentraut |
|---|---|
| Тема | Re: Make copyObject work in C++ |
| Дата | |
| Msg-id | 1bec56e5-aef9-4d3b-b4ee-723c6575a44e@eisentraut.org обсуждение исходный текст |
| Ответ на | Make copyObject work in C++ (Jelte Fennema-Nio <postgres@jeltef.nl>) |
| Ответы |
Re: Make copyObject work in C++
Re: Make copyObject work in C++ |
| Список | pgsql-hackers |
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?
Вложения
В списке pgsql-hackers по дате отправления: