1<?xml version="1.0" ?> 2 3<!-- 4Copyright (c) 2002-2003 The Trustees of Indiana University. 5 All rights reserved. 6Copyright (c) 2000-2001 University of Notre Dame. All rights reserved. 7 8 Distributed under the Boost Software License, Version 1.0. 9 (See accompanying file LICENSE_1_0.txt or copy at 10 http://www.boost.org/LICENSE_1_0.txt) --> 11 12<operator-list> 13 <!-- This list is from Pohl's book, and needs to be checked for accuracy --> 14 15 <op name="postincrement"> 16 <apply priority="100"><arg num="1"/>++</apply> <!-- No assoc - always use parentheses --> 17 <impl position="method">operator++(int)</impl> 18 </op> 19 20 <op name="postdecrement"> 21 <apply priority="100"><arg num="1"/>--</apply> 22 <impl position="method">operator--(int)</impl> 23 </op> 24 25 <op name="apply-function"> 26 <apply priority="100"><name/>(<arg-list start="1" priority="30"/>)</apply> 27 <impl position="freestanding"><name/>(<arg-list/>)</impl> 28 </op> 29 30 <op name="apply-method"> 31 <apply priority="100" assoc="1"><arg num="1"/>.<name/>(<arg-list start="2" priority="30"/>)</apply> 32 <impl position="method"><name/>(<arg-list/>)</impl> 33 </op> 34 35 <op name="pointer-apply-method"> 36 <apply priority="100" assoc="1"><arg num="1"/>-><name/>(<arg-list start="2" priority="30"/>)</apply> 37 <impl>Error</impl> 38 </op> 39 40 <op name="apply-funcobj"> 41 <apply priority="100" assoc="1"><arg num="1"/>(<arg-list start="2" priority="30"/>)</apply> 42 <impl position="method">operator()(<arg-list/>)</impl> 43 </op> 44 45 <op name="construct"> 46 <apply priority="100"><arg num="1"/>(<arg-list start="2" priority="30"/>)</apply> 47 <impl position="method"><self/>(<arg-list/>)</impl> 48 </op> 49 50 <op name="subscript"> 51 <apply priority="100" assoc="1"><arg num="1"/>[<arg num="2" priority="0"/>]</apply> 52 <impl position="method">operator[](<arg-list/>)</impl> 53 </op> 54 55 <op name="class-member"> 56 <apply priority="100" assoc="1"><arg num="1"/>.<name/></apply> 57 <impl>Error</impl> 58 </op> 59 60 <op name="pointer-member"> 61 <!-- Note: non-testable constraint --> 62 <apply priority="100"><arg num="1" assoc="1"/>->{member-name} (return type is pointer-to-object type)</apply> 63 <impl>operator->(<arg-list/>)</impl> 64 </op> 65 66 <op name="preincrement"> 67 <apply priority="95">++<arg num="1"/></apply> 68 <impl position="method">operator++(<arg-list/>)</impl> 69 </op> 70 71 <op name="predecrement"> 72 <apply priority="95">--<arg num="1"/></apply> 73 <impl position="method">operator--(<arg-list/>)</impl> 74 </op> 75 76 <op name="logical-not"> 77 <apply priority="95" assoc="1">!<arg num="1"/></apply> 78 <impl position="method">operator!(<arg-list/>)</impl> 79 </op> 80 81 <op name="bitwise-not"> 82 <apply priority="95" assoc="1">~<arg num="1"/></apply> 83 <impl position="method">operator~(<arg-list/>)</impl> 84 </op> 85 86 <op name="address-of"> 87 <apply priority="95">&<arg num="1"/></apply> 88 <impl position="method">operator&(<arg-list/>)</impl> 89 </op> 90 91 <op name="dereference"> 92 <apply priority="95" assoc="1">*<arg num="1"/></apply> 93 <impl position="method">operator*(<arg-list/>)</impl> 94 </op> 95 96 <op name="unary-plus"> 97 <apply priority="95">+<arg num="1"/></apply> 98 <impl position="method">operator+(<arg-list/>)</impl> 99 </op> 100 101 <op name="unary-minus"> 102 <apply priority="95">-<arg num="1"/></apply> 103 <impl position="method">operator-(<arg-list/>)</impl> 104 </op> 105 106 <op name="class-member-ptr"> 107 <apply priority="90" assoc="1"><arg num="1"/>.*<arg num="2"/></apply> 108 <impl>Error</impl> 109 </op> 110 111 <op name="pointer-member-ptr"> 112 <apply priority="90" assoc="1"><arg num="1"/>->*<arg num="2"/></apply> 113 <impl position="method">operator->*(<arg-list/>)</impl> 114 </op> 115 116 <op name="multiply"> 117 <apply priority="90" assoc="1"><arg num="1"/> * <arg num="2"/></apply> 118 <impl position="freestanding">operator * (<arg-list/>)</impl> 119 </op> 120 121 <op name="divide"> 122 <apply priority="90" assoc="1"><arg num="1"/> / <arg num="2"/></apply> 123 <impl position="freestanding">operator / (<arg-list/>)</impl> 124 </op> 125 126 <op name="modulus"> 127 <apply priority="90" assoc="1"><arg num="1"/> % <arg num="2"/></apply> 128 <impl position="freestanding">operator % (<arg-list/>)</impl> 129 </op> 130 131 <op name="add"> 132 <apply priority="85" assoc="1"><arg num="1"/> + <arg num="2"/></apply> 133 <impl position="freestanding">operator + (<arg-list/>)</impl> 134 </op> 135 136 <op name="subtract"> 137 <apply priority="85" assoc="1"><arg num="1"/> - <arg num="2"/></apply> 138 <impl position="freestanding">operator - (<arg-list/>)</impl> 139 </op> 140 141 <op name="shift-left"> 142 <apply priority="80" assoc="1"><arg num="1"/> << <arg num="2"/></apply> 143 <impl position="freestanding">operator << (<arg-list/>)</impl> 144 </op> 145 146 <op name="shift-right"> 147 <apply priority="80" assoc="1"><arg num="1"/> >> <arg num="2"/></apply> 148 <impl position="freestanding">operator >> (<arg-list/>)</impl> 149 </op> 150 151 <op name="less-than"> 152 <apply priority="75"><arg num="1"/> < <arg num="2"/></apply> 153 <impl position="freestanding">operator < (<arg-list/>)</impl> 154 </op> 155 156 <op name="greater-than"> 157 <apply priority="75"><arg num="1"/> > <arg num="2"/></apply> 158 <impl position="freestanding">operator > (<arg-list/>)</impl> 159 </op> 160 161 <op name="less-than-or-equal"> 162 <apply priority="75"><arg num="1"/> <= <arg num="2"/></apply> 163 <impl position="freestanding">operator <= (<arg-list/>)</impl> 164 </op> 165 166 <op name="greater-than-or-equal"> 167 <apply priority="75"><arg num="1"/> >= <arg num="2"/></apply> 168 <impl position="freestanding">operator >= (<arg-list/>)</impl> 169 </op> 170 171 <op name="equal-to"> 172 <apply priority="70"><arg num="1"/> == <arg num="2"/></apply> 173 <impl position="freestanding">operator == (<arg-list/>)</impl> 174 </op> 175 176 <op name="not-equal-to"> 177 <apply priority="70"><arg num="1"/> != <arg num="2"/></apply> 178 <impl position="freestanding">operator != (<arg-list/>)</impl> 179 </op> 180 181 <op name="bitwise-and"> 182 <apply priority="65" assoc="1"><arg num="1"/> & <arg num="2"/></apply> 183 <impl position="freestanding">operator & (<arg-list/>)</impl> 184 </op> 185 186 <op name="bitwise-or"> 187 <apply priority="60" assoc="1"><arg num="1"/> | <arg num="2"/></apply> 188 <impl position="freestanding">operator | (<arg-list/>)</impl> 189 </op> 190 191 <op name="bitwise-xor"> 192 <apply priority="55" assoc="1"><arg num="1"/> ^ <arg num="2"/></apply> 193 <impl position="freestanding">operator ^ (<arg-list/>)</impl> 194 </op> 195 196 <op name="logical-and"> 197 <apply priority="50" assoc="1"><arg num="1"/> && <arg num="2"/></apply> 198 <impl position="freestanding">operator && (<arg-list/>)</impl> 199 </op> 200 201 <op name="logical-or"> 202 <apply priority="45" assoc="1"><arg num="1"/> || <arg num="2"/></apply> 203 <impl position="freestanding">operator || (<arg-list/>)</impl> 204 </op> 205 206 <op name="conditional"> 207 <apply priority="40" assoc="3"><arg num="1"/> ? <arg num="2"/> : <arg num="3"/></apply> 208 <impl>Error</impl> 209 </op> 210 211 <op name="assign"> 212 <apply priority="35" assoc="2"><arg num="1"/> = <arg num="2"/></apply> 213 <impl position="method">operator = (<arg-list/>)</impl> 214 </op> 215 216 <op name="add-assign"> 217 <apply priority="35" assoc="2"><arg num="1"/> += <arg num="2"/></apply> 218 <impl position="method">operator += (<arg-list/>)</impl> 219 </op> 220 221 <op name="subtract-assign"> 222 <apply priority="35" assoc="2"><arg num="1"/> -= <arg num="2"/></apply> 223 <impl position="method">operator -= (<arg-list/>)</impl> 224 </op> 225 226 <op name="multiply-assign"> 227 <apply priority="35" assoc="2"><arg num="1"/> *= <arg num="2"/></apply> 228 <impl position="method">operator *= (<arg-list/>)</impl> 229 </op> 230 231 <op name="divide-assign"> 232 <apply priority="35" assoc="2"><arg num="1"/> /= <arg num="2"/></apply> 233 <impl position="method">operator /= (<arg-list/>)</impl> 234 </op> 235 236 <op name="modulus-assign"> 237 <apply priority="35" assoc="2"><arg num="1"/> %= <arg num="2"/></apply> 238 <impl position="method">operator %= (<arg-list/>)</impl> 239 </op> 240 241 <op name="shift-left-assign"> 242 <apply priority="35" assoc="2"><arg num="1"/> <<= <arg num="2"/></apply> 243 <impl position="method">operator <<= (<arg-list/>)</impl> 244 </op> 245 246 <op name="shift-right-assign"> 247 <apply priority="35" assoc="2"><arg num="1"/> >>= <arg num="2"/></apply> 248 <impl position="method">operator >>= (<arg-list/>)</impl> 249 </op> 250 251 <op name="bitwise-and-assign"> 252 <apply priority="35" assoc="2"><arg num="1"/> &= <arg num="2"/></apply> 253 <impl position="method">operator &= (<arg-list/>)</impl> 254 </op> 255 256 <op name="bitwise-or-assign"> 257 <apply priority="35" assoc="2"><arg num="1"/> |= <arg num="2"/></apply> 258 <impl position="method">operator |= (<arg-list/>)</impl> 259 </op> 260 261 <op name="bitwise-xor-assign"> 262 <apply priority="35" assoc="2"><arg num="1"/> ^= <arg num="2"/></apply> 263 <impl position="method">operator ^= (<arg-list/>)</impl> 264 </op> 265 266 <op name="comma"> 267 <apply priority="20"><arg num="1"/>, <arg num="2"/></apply> 268 <impl position="freestanding">operator , (<arg-list/>)</impl> 269 </op> 270 271 <op name="function-pointer"> 272 <apply><arg num="1"/> (*)(<arg-list start="2" priority="30"/>)</apply> 273 <impl>Error</impl> 274 </op> 275 276 <op name="functorize-operator"> 277 <!-- Note: non-testable constraint --> 278 <apply>functorization of operator <name/> on arguments {<arg-list start="1"/>}</apply> 279 <impl>Error</impl> 280 </op> 281 282 <op name="functorize-function"> 283 <!-- Note: non-testable constraint --> 284 <apply>functorization of function <name/> on arguments {<arg-list start="1"/>}</apply> 285 <impl>Error</impl> 286 </op> 287 288</operator-list> 289