We are taking care of this separately, as part of a larger set of changes.

So, please don't apply the patch; we're likely to trip over each other.

Thanks!

> -----Original Message-----
> From: Jakub Jelinek <ja...@redhat.com>
> Sent: Friday, June 6, 2025 09:48
> To: Robert Dubner <rdub...@symas.com>; James K. Lowden
> <jklow...@cobolworx.com>
> Cc: gcc-patches@gcc.gnu.org
> Subject: [PATCH] libgcobol: Drop unhelpful constexpr keyword [PR120554]
> 
> Hi!
> 
> As mentioned in the PR, this code is likely only valid in C++23 and
> later and not really useful in that case and it might be a GCC bug
> that it fails to diagnose the bug in C++14 to C++20 modes (it diagnoses
> it in C++11 mode).
> 
> In any case, the class doesn't have any constexpr constructors, so
> it isn't a literal type, one can't construct those objects in constant
> expressions and so using constexpr keyword for the defaulted copy
> assignment
> operator can't help because that needs to copy from a constant
expression
> which isn't possible to construct.
> 
> Bootstrapped/regtested on x86_64-linux, ok for trunk?
> 
> 2025-06-06  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR cobol/120554
>       * common-defs.h (cbl_declarative_t::operator=): Remove constexpr.
> 
> --- libgcobol/common-defs.h.jj        2025-06-04 19:37:23.819423789
+0200
> +++ libgcobol/common-defs.h   2025-06-06 11:50:07.873810554 +0200
> @@ -512,7 +512,7 @@ struct cbl_declarative_t {
>        std::copy( that.files, that.files + nfile, this->files );
>      }
>    }
> -  constexpr cbl_declarative_t& operator=(const cbl_declarative_t&) =
> default;
> +  cbl_declarative_t& operator=(const cbl_declarative_t&) = default;
> 
>    std::vector<uint64_t> encode() const;
> 
> 
>       Jakub

Reply via email to