To: J3 J3/25-158 From: Brad Richardson and Generics Subject: Relitigating the Characters Selected to Bracket Instantiation and Deferred Argument Lists Date: 2025-June-25 Reference: 24-125r5 https://tinyurl.com/44tje3rp 1. Introduction ========================================================= In paper 24-125r5, it was selected to use parenthesis to bracket the list of deferred and instantiation arguments in templates and instantiations. Subgroup still feels that curly braces would be better, and this paper intends to re-litigate the issue. 2. Rationale ========================================================= The decision was highly contentious, and there was no strong preference determined by the results of the straw votes. The inclusion of the circumflex (^) character in front of the instantiation arguments for inline instantiation is both superfluous and utilizes a previously unused character. It is also not particularly ascetically pleasing. One of the primary arguments against utilizing the curly braces was that they are difficult to distinguish from parenthesis. However, parenthesis are even more difficult to distinguish. The broader Fortran user community seems to prefer the use of curly braces, as can be observed based on discussions on the Fortran-Lang.org Discourse forums, starting at the following link: https://tinyurl.com/44tje3rp. Additionally, the author of the only prototype currently in existence that demonstrates the feature would prefer curly braces. 3. Straw Vote on Deferred/Instantiate Argument Delimiters ========================================================= What symbol(s) should be used to delimit deferred and instantiation argument lists? A. Parenthesis with ^ added for inline instantiation: ^() B. Curly Braces: {} C. Undecided Examples: A. subroutine swap(T)(a, b) call swap^(T)(a, b) call P1^(P2^(x))(a, b) B. subroutine swap{T}(a, b) call swap{T}(a, b) call P1{P2{x}}(a, b)