J3/11-136 To: J3 From: Van Snyder Subject: Restrictions on generic declarations, generic resolution Date: 2011 January 30 Reference: 10-007r1 1. Summary ========== There is a specification in 12.4.3.4 of the properties that cause two dummy arguments to be distinguishable. C1214 specifies that two procedures within the scope of a shall be distinguishable. There is no specification of the properties that cause two procedures to be distinguishable. 12.4.3.4.5p5 explains (normatively) which procedure is referenced if a specific procedure in a generic interface is consistent with an intrinsic procedure. 12.4.3.4.5p5 is about generic declarations, not procedure references. The definitive normative description of this is in 12.5.5.2, where it should be. 12.4.3.4.5p5 should refer to 12.5.5.2 in a note, not repeat the normative specification (or it should not say anything). There is nothing in 7.1.6.2 that specifies which specific function from a generic interface implements a defined operation. There is nothing in 7.2.1.5 that specifies which specific subroutine from a generic interface implements a defined assignment. 9.6.4.8.3 appears to get away without actually doing generic resolution with the full glory of 12.5.5.2. There is nothing in 12.5.5 that would apply to defined operations or defined assignment since the subclause topic is "Resolving named procedure references." 12.5.6 is too nebulous to be useful (what does "is consistent" mean?). 2. Edits w.r.t. 10-007r1 ======================== [147:2+ 7.1.6.2p1-]----------------------------------------------------- Editor: Insert a paragraph: "The function that defines the operation is resolved according to the specifications in subclause 12.5.5.2 or 12.5.6." [147:17+ 7.2.1.5p1-]---------------------------------------------------- Editor: Insert a paragraph: "The subroutine that defines the assignment is resolved according to the specifications in subclause 12.5.5.2 or 12.5.6." [286:12-13 C1214]------------------------------------------------------- Editor: Replace "two" by "the \cf{dtv} arguments of any pair of". Insert "(9.6.4.8.3)" somewhere (your choice). [286:38-39 12.4.3.4.5p5]------------------------------------------------ Editor: Convert "If a generic ... referenced." into a note, and append "(12.5.5.2)" within the note. [303:23 12.5.5.2]------------------------------------------------------- Editor: Replace "names" by "identifiers" to make edits to 7.1.6.2p1 and 7.2.1.5p1 above work. [303:25,29 12.5.5.2p1,p2]----------------------------------------------- Editor: Replace "name" by "identifier" twice to make edits to 7.1.6.2p1 and 7.2.1.5p1 above work. [305:8,10 12.5.6p2]----------------------------------------------------- Editor: After "selected" insert "according to the specifications in subclause 12.5.5.2" twice. 3. Alternative edits for C1214 ============================== C1215 correctly covers the case, albeit with more generality than necessary, so C1214 was never really necessary. [286:12-13 C1214]------------------------------------------------------- Editor: Delete C1214. [286:14 C1215]---------------------------------------------------------- Editor: After "generic name" insert "or ". Replace "that name" by "that generic identifier". 4. Purely editorial =================== [286:31 C1215]---------------------------------------------------------- Editor: Replace the full stop at the end of the line with a comma.