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