From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2024-04-07 21:11:51


On 4/7/24 20:39, Marshall Clow via Boost wrote:
>> On Apr 6, 2024, at 10:35 PM, Marshall Clow <mclow.lists_at_[hidden]> wrote:
>>
>>> On Apr 6, 2024, at 12:57 PM, Ruben Perez <rubenperez038_at_[hidden]> wrote:
>>>
>>>> As always, the release managers would appreciate it if you download the
>>>> candidate of your choice and give building it a try. Please report both
>>>> success and failure, and anything else that is noteworthy.
>>>
>>> Program options seem to fail to build under C++23 (Ubuntu 22.04,
>>> clang-19, release). Here's the build log:
>>
>> Ruben —
>>
>> Did the 1.85.0 beta have this same problem?
>
> I suspect that the problem was introduced in this commit:
>
> commit 847b130e19a9e5118bfb5486e9b4d4f6ab2797a2
> Author: Ed Catmur <ed_at_[hidden]>
> Date: Thu Feb 23 11:39:17 2023 +0000
>
> Use BOOST_DEFAULTED_FUNCTION on empty destructors (#122)
>
> The compiler-generated copy constructor and copy assignment operator are deprecated since C++11 on classes with user-declared destructors.
>
> This change allows clean compilation with the -Wdeprecated-copy-dtor/-Wdeprecated-copy-with-user-provided-dtor flag.
>
> Co-authored-by: Ed Catmur <edward.catmur_at_[hidden]>

No, the problem existed before that. The problem is in the `throw()`
specifications, which existed before the commit you referenced.

I think, it was at least partly introduced by
fd7b310993133fd280f4967bc3a30da7ab3dddee. In fact, at that point it was
not a problem because at that time C++20 did not exist yet and `throw()`
specifications were fine.

> And it looks like it has been fixed in develop:
>
> https://github.com/boostorg/program_options/commit/1d7cceff6c8a5d40593776d7578a984852df5b75
>
> Is that correct?

Yes, this commit should fix the problem. I will leave it to Peter to ask
for the permission to merge it, if he considers it important enough.