Commit Graph

1 Commits

Author SHA1 Message Date
William S Fulton 5f62959529 C++20 constrained alias templates: parse and support
The requires-clause form on alias templates previously emitted
'Syntax error in input(1).' at the using line:

  template<typename T> requires Numeric<T> using NumBox = Box<T>;

The type-constraint shorthand was already accepted via the existing
type-constrained template parameter support:

  template<Numeric T> using NumBox = Box<T>;

Both forms now parse and wrap identically to an unconstrained alias.
The C++ compiler enforces the constraint when compiling the emitted
wrapper.  Wrapping continues to use the documented two-step pattern:
%template(Name) on the underlying template, followed by an empty
%template() for each alias.

New test cases cpp11_alias_templates (focused unconstrained coverage,
including alias-of-alias and a non-type parameter on the underlying
template) and cpp20_alias_template (all three forms plus an unseen
concept best-effort case), with Python and Java runme files.

Assisted-by: Claude Code (Opus 4.7)
2026-05-27 20:35:03 +01:00