1--- source/common/uvector.cpp
2+++ source/common/uvector.cpp
3@@ -110,7 +110,7 @@
4 }
5
6 // This only does something sensible if this object has a non-null comparer
7-UBool UVector::operator==(const UVector& other) {
8+UBool UVector::operator==(const UVector& other) const {
9     int32_t i;
10     if (count != other.count) return FALSE;
11     if (comparer != NULL) {
12--- source/common/uvector.h
13+++ source/common/uvector.h
14@@ -113,12 +113,12 @@
15      * equal if they are of the same size and all elements are equal,
16      * as compared using this object's comparer.
17      */
18-    UBool operator==(const UVector& other);
19+    UBool operator==(const UVector& other) const;
20
21     /**
22      * Equivalent to !operator==()
23      */
24-    inline UBool operator!=(const UVector& other);
25+    inline UBool operator!=(const UVector& other) const;
26
27     //------------------------------------------------------------
28     // java.util.Vector API
29@@ -382,7 +382,7 @@
30     return elementAt(index);
31 }
32
33-inline UBool UVector::operator!=(const UVector& other) {
34+inline UBool UVector::operator!=(const UVector& other) const {
35     return !operator==(other);
36 }
37
38--- source/i18n/tzrule.cpp
39+++ source/i18n/tzrule.cpp
40@@ -53,7 +53,7 @@
41     return *this;
42 }
43
44-UBool
45+bool
46 TimeZoneRule::operator==(const TimeZoneRule& that) const {
47     return ((this == &that) ||
48             (typeid(*this) == typeid(that) &&
49@@ -120,7 +120,7 @@
50     return *this;
51 }
52
53-UBool
54+bool
55 InitialTimeZoneRule::operator==(const TimeZoneRule& that) const {
56     return ((this == &that) ||
57             (typeid(*this) == typeid(that) &&
58@@ -226,7 +226,7 @@
59     return *this;
60 }
61
62-UBool
63+bool
64 AnnualTimeZoneRule::operator==(const TimeZoneRule& that) const {
65     if (this == &that) {
66         return TRUE;
67@@ -445,7 +445,7 @@
68     return *this;
69 }
70
71-UBool
72+bool
73 TimeArrayTimeZoneRule::operator==(const TimeZoneRule& that) const {
74     if (this == &that) {
75         return TRUE;
76--- source/i18n/unicode/rbtz.h
77+++ source/i18n/unicode/rbtz.h
78@@ -85,6 +85,7 @@
79      * @stable ICU 3.8
80      */
81     virtual UBool operator!=(const TimeZone& that) const;
82+    UBool operator!=(const RuleBasedTimeZone& that) const {return !operator==(that);}
83
84     /**
85      * Adds the <code>TimeZoneRule</code> which represents time transitions.
86--- source/i18n/unicode/simpletz.h
87+++ source/i18n/unicode/simpletz.h
88@@ -110,6 +110,7 @@
89      * @stable ICU 2.0
90      */
91     virtual UBool operator==(const TimeZone& that) const;
92+    UBool operator!=(const SimpleTimeZone& that) const {return !operator==(that);}
93
94     /**
95      * Constructs a SimpleTimeZone with the given raw GMT offset and time zone ID,
96--- source/i18n/unicode/smpdtfmt.h
97+++ source/i18n/unicode/smpdtfmt.h
98@@ -874,6 +874,7 @@
99      * @stable ICU 2.0
100      */
101     virtual UBool operator==(const Format& other) const;
102+    UBool operator!=(const SimpleDateFormat& that) const {return !operator==(that);}
103
104
105     using DateFormat::format;
106--- source/i18n/unicode/stsearch.h
107+++ source/i18n/unicode/stsearch.h
108@@ -297,6 +297,7 @@
109      * @stable ICU 2.0
110      */
111     virtual UBool operator==(const SearchIterator &that) const;
112+    UBool operator!=(const StringSearch &that) const {return !operator==(that);}
113
114     // public get and set methods ----------------------------------------
115
116--- source/i18n/unicode/tzrule.h
117+++ source/i18n/unicode/tzrule.h
118@@ -54,7 +54,7 @@
119      * @return  true if the given <code>TimeZoneRule</code> objects are semantically equal.
120      * @stable ICU 3.8
121      */
122-    virtual UBool operator==(const TimeZoneRule& that) const;
123+    virtual bool operator==(const TimeZoneRule& that) const;
124
125     /**
126      * Return true if the given <code>TimeZoneRule</code> objects are semantically unequal. Objects
127@@ -245,7 +245,7 @@
128      * @return  true if the given <code>TimeZoneRule</code> objects are semantically equal.
129      * @stable ICU 3.8
130      */
131-    virtual UBool operator==(const TimeZoneRule& that) const;
132+    virtual bool operator==(const TimeZoneRule& that) const;
133
134     /**
135      * Return true if the given <code>TimeZoneRule</code> objects are semantically unequal. Objects
136@@ -255,6 +255,7 @@
137      * @stable ICU 3.8
138      */
139     virtual UBool operator!=(const TimeZoneRule& that) const;
140+    UBool operator!=(const InitialTimeZoneRule& that) const {return !operator==(that);}
141
142     /**
143      * Gets the time when this rule takes effect in the given year.
144@@ -456,7 +457,7 @@
145      * @return  true if the given <code>TimeZoneRule</code> objects are semantically equal.
146      * @stable ICU 3.8
147      */
148-    virtual UBool operator==(const TimeZoneRule& that) const;
149+    virtual bool operator==(const TimeZoneRule& that) const;
150
151     /**
152      * Return true if the given <code>TimeZoneRule</code> objects are semantically unequal. Objects
153@@ -672,7 +673,7 @@
154      * @return  true if the given <code>TimeZoneRule</code> objects are semantically equal.
155      * @stable ICU 3.8
156      */
157-    virtual UBool operator==(const TimeZoneRule& that) const;
158+    virtual bool operator==(const TimeZoneRule& that) const;
159
160     /**
161      * Return true if the given <code>TimeZoneRule</code> objects are semantically unequal. Objects
162--- source/i18n/unicode/vtzone.h
163+++ source/i18n/unicode/vtzone.h
164@@ -81,6 +81,7 @@
165      * @stable ICU 3.8
166      */
167     virtual UBool operator!=(const TimeZone& that) const;
168+    UBool operator!=(const VTimeZone& that) const {return !operator==(that);}
169
170     /**
171      * Create a <code>VTimeZone</code> instance by the time zone ID.
172