1 #pragma clang system_header 2 3 // Implement standard types that are known to be defined as unsigned in some 4 // implementations like MSVC. 5 namespace std { 6 namespace locale { 7 enum category : int { 8 none = 0u, 9 collate = 1u << 1u, 10 ctype = 1u << 2u, 11 monetary = 1u << 3u, 12 numeric = 1u << 4u, 13 time = 1u << 5u, 14 messages = 1u << 6u, 15 all = none | collate | ctype | monetary | numeric | time | messages 16 // CHECK MESSAGES: [[@LINE-1]]:9: warning: use of a signed integer operand with a binary bitwise operator 17 }; 18 } // namespace locale 19 20 namespace ctype_base { 21 enum mask : int { 22 space, 23 print, 24 cntrl, 25 upper, 26 lower, 27 alpha, 28 digit, 29 punct, 30 xdigit, 31 /* blank, // C++11 */ 32 alnum = alpha | digit, 33 // CHECK MESSAGES: [[@LINE-1]]:11: warning: use of a signed integer operand with a binary bitwise operator 34 graph = alnum | punct 35 // CHECK MESSAGES: [[@LINE-1]]:11: warning: use of a signed integer operand with a binary bitwise operator 36 }; 37 } // namespace ctype_base 38 39 namespace ios_base { 40 enum fmtflags : int { 41 dec = 0u, 42 oct = 1u << 2u, 43 hex = 1u << 3u, 44 basefield = dec | oct | hex | 0u, 45 // CHECK MESSAGES: [[@LINE-1]]:15: warning: use of a signed integer operand with a binary bitwise operator 46 left = 1u << 4u, 47 right = 1u << 5u, 48 internal = 1u << 6u, 49 adjustfield = left | right | internal, 50 // CHECK MESSAGES: [[@LINE-1]]:17: warning: use of a signed integer operand with a binary bitwise operator 51 scientific = 1u << 7u, 52 fixed = 1u << 8u, 53 floatfield = scientific | fixed | (scientific | fixed) | 0u, 54 // CHECK MESSAGES: [[@LINE-1]]:16: warning: use of a signed integer operand with a binary bitwise operator 55 // CHECK MESSAGES: [[@LINE-2]]:38: warning: use of a signed integer operand with a binary bitwise operator 56 boolalpha = 1u << 9u, 57 showbase = 1u << 10u, 58 showpoint = 1u << 11u, 59 showpos = 1u << 12u, 60 skipws = 1u << 13u, 61 unitbuf = 1u << 14u, 62 uppercase = 1u << 15u 63 }; 64 65 enum iostate : int { 66 goodbit = 0u, 67 badbit = 1u << 1u, 68 failbit = 1u << 2u, 69 eofbit = 1u << 3u 70 }; 71 72 enum openmode : int { 73 app = 0u, 74 binary = 0u << 1u, 75 in = 0u << 2u, 76 out = 0u << 3u, 77 trunc = 0u << 4u, 78 ate = 0u << 5u 79 }; 80 } // namespace ios_base 81 } // namespace std 82