From 9b2d82dadbb465de71985a8db3aa8df454579b72 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Fri, 30 Oct 2026 14:33:33 +0000 Subject: docs(types): explain implicit constructors and raw text literals Co-Authored-By: Claude Opus 5.5 --- AGENTS/SUBSYSTEMS/TEMPLATES.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'AGENTS/SUBSYSTEMS/TEMPLATES.md') diff --git a/AGENTS/SUBSYSTEMS/TEMPLATES.md b/AGENTS/SUBSYSTEMS/TEMPLATES.md index b80f7ed..ffa011a 100644 --- a/AGENTS/SUBSYSTEMS/TEMPLATES.md +++ b/AGENTS/SUBSYSTEMS/TEMPLATES.md @@ -17,12 +17,14 @@ callable lookup. - `CodeGen::resolveCall` retains ordinary fast paths when no templates exist. Otherwise it computes static argument types and whole-array ranks once, selecting exact ordinary definitions (including an expected result type when present) before non-variadic - templates and then variadic templates. Templates still match only substituted - parameter types; result contexts do not filter them. + templates and then variadic templates, then repeats these tiers with permitted + BYVAL conversions. Templates match substituted parameter types; result contexts + do not filter them. - Explicit type arguments pre-bind positional parameters and constrain a pack prefix; deduction from `T` or array element `T` fills remaining bindings. Composite types such as `Box` are checked after substitution but do not deduce T. -- Every position must match exactly and every non-pack type must be bound. Candidate +- Every non-pack type must be bound; substituted BYVAL positions may use the + shared conversion ranks. BYREF and arrays still match exactly. Candidate failures stay silent; only the final no-match or ambiguity is diagnosed. - `hasCallable` keeps CALL statement re-resolution aware of templates. -- cgit v1.3.1-4-g156e