CVS difference for ai05s/ai05-0128-1.txt

Differences between 1.4 and version 1.5
Log of other versions for file ai05s/ai05-0128-1.txt

--- ai05s/ai05-0128-1.txt	2009/03/10 05:41:38	1.4
+++ ai05s/ai05-0128-1.txt	2009/05/31 05:27:04	1.5
@@ -1,4 +1,4 @@
-!standard 3.2.3(6)                                              09-03-09  AI05-0128-1/02
+!standard 3.2.3(6)                                              09-05-30  AI05-0128-1/03
 !standard 6.6(6)
 !class binding interpretation 08-10-17
 !status Amendment 201Z 09-03-09
@@ -75,10 +75,11 @@
     operator whose result type is Boolean, the corresponding "/=" operator
     (see 6.6);
 
-Replace 6.6(6) by:
+Modify 6.6(6):
 
-An explicit declaration of "=" whose result type is Boolean implicitly declares
-an operator"/=" that gives the complementary result.
+[A]{An explicit} declaration of "=" whose result type is Boolean implicitly
+declares {an operator}[a declaration of] "/=" that gives the complementary
+result.
 
 !discussion
 
@@ -103,6 +104,13 @@
        --     procedure Prim(X : C; Y : B);
        -- This is *not* a primitive of B.
    end P;
+
+Having clarified that "/=" is primitive, it is now obvious that it is inherited
+by derived types. The Ada 95 wording of 6.6(6) would imply that the implicit declaration
+of "=" creates a new "/=" as well, giving us two "/=" homographs with no way to choose
+between them (thus making calls to "/=" ambiguous). So we need to add "explicit
+declaration" to 6.6(6), and then clean up the wording a bit so we're not declaring
+a declaration (which is backwards).
 
 !corrigendum 3.2.3(6)
 

Questions? Ask the ACAA Technical Agent