On 8/21/26 7:56 AM, Waffl3x wrote:
Iains pointed out this patch to me after I submitted mine. Didn't mean
to duplicate work, sorry!

On Monday, August 17th, 2026 at 1:40 PM, Jason Merrill <[email protected]> wrote:
On 8/14/26 4:33 PM, Wang Jinghao wrote:
For precondition and postcondition without a result binding, whether
the return type is auto is irrelevant to the condition expression, so
type conversions should be completed immediately.

        PR c++/125537

gcc/cp/ChangeLog:

        * pt.cc (tsubst_contract): Keep template processing enabled
        only for postconditions with an undeduced result binding.

Hmm, I notice this is still a different condition from
cp_parser_late_contract_condition and rebuild_postconditions, which only
check whether there's a result binding, not whether it's auto.  They
ought to agree on the condition for treating the postcondition as a
pseudo-template.

By the time you're in rebuild_postconditions I believe the placeholder
return type is gone. It bails out early 'if the return type is
undeduced', I haven't looked at cp_parser_late_contract_condition
enough though so maybe there are issues on that side.
Good to keep in mind, but we can check FNDECL_USED_AUTO to be consistent.

Jason

Reply via email to