18c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// Like the compiler, the static analyzer treats some functions differently if 28c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// they come from a system header -- for example, it is assumed that system 38c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// functions do not arbitrarily free() their parameters, and that some bugs 48c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// found in system headers cannot be fixed by the user and should be 58c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// suppressed. 681fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose#pragma clang system_header 781fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 8bdc0bf3f84b8771572d8401c66903c56a2e1318eAnna Zakstypedef unsigned char uint8_t; 9bdc0bf3f84b8771572d8401c66903c56a2e1318eAnna Zaks 104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainartypedef __typeof__(sizeof(int)) size_t; 114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarvoid *memmove(void *s1, const void *s2, size_t n); 124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1381fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rosenamespace std { 1481fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose template <class T1, class T2> 1581fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose struct pair { 1681fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose T1 first; 1781fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose T2 second; 1881fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 1981fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose pair() : first(), second() {} 2081fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose pair(const T1 &a, const T2 &b) : first(a), second(b) {} 2181fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 2281fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose template<class U1, class U2> 2381fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose pair(const pair<U1, U2> &other) : first(other.first), second(other.second) {} 2481fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose }; 2581fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 2681fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose typedef __typeof__(sizeof(int)) size_t; 2781fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 2881fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose template<typename T> 2981fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose class vector { 3081fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose T *_start; 3181fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose T *_finish; 3281fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose T *_end_of_storage; 3381fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose public: 3481fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose vector() : _start(0), _finish(0), _end_of_storage(0) {} 3581fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose ~vector(); 3681fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 3781fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose size_t size() const { 3881fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose return size_t(_finish - _start); 3981fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose } 4081fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 4181fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose void push_back(); 4281fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose T pop_back(); 4381fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 4481fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose T &operator[](size_t n) { 4581fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose return _start[n]; 4681fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose } 4781fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 4881fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose const T &operator[](size_t n) const { 4981fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose return _start[n]; 5081fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose } 5181fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 5281fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose T *begin() { return _start; } 5381fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose const T *begin() const { return _start; } 5481fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 5581fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose T *end() { return _finish; } 5681fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose const T *end() const { return _finish; } 5781fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose }; 5881fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose 5981fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose class exception { 6081fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose public: 6181fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose exception() throw(); 6281fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose virtual ~exception() throw(); 6381fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose virtual const char *what() const throw() { 6481fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose return 0; 6581fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose } 6681fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose }; 672de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev 682de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev class bad_alloc : public exception { 692de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev public: 702de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev bad_alloc() throw(); 712de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev bad_alloc(const bad_alloc&) throw(); 722de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev bad_alloc& operator=(const bad_alloc&) throw(); 732de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev virtual const char* what() const throw() { 742de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev return 0; 752de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev } 762de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev }; 772de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev 782de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev struct nothrow_t {}; 792de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev 802de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev extern const nothrow_t nothrow; 81a12643622ad3b85972dfdd80fe9006a3e8d8fb80Jordan Rose 82be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose // libc++'s implementation 83be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose template <class _E> 84be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose class initializer_list 85be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose { 86be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose const _E* __begin_; 87be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose size_t __size_; 88be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose 89be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose initializer_list(const _E* __b, size_t __s) 90be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose : __begin_(__b), 91be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose __size_(__s) 92be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose {} 93be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose 94be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose public: 95be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose typedef _E value_type; 96be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose typedef const _E& reference; 97be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose typedef const _E& const_reference; 98be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose typedef size_t size_type; 99be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose 100be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose typedef const _E* iterator; 101be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose typedef const _E* const_iterator; 102be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose 103be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose initializer_list() : __begin_(0), __size_(0) {} 104be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose 105be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose size_t size() const {return __size_;} 106be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose const _E* begin() const {return __begin_;} 107be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose const _E* end() const {return __begin_ + __size_;} 108be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose }; 109be2e1b11e3350e3a6e632c71beaab83aae3824d2Jordan Rose 1104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <bool, class _Tp = void> struct enable_if {}; 1114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct enable_if<true, _Tp> {typedef _Tp type;}; 112776d3bb65c90278b9c65544b235d2ac40aea1d6eJordan Rose 1134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp, _Tp __v> 1144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar struct integral_constant 1154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar { 1164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar static const _Tp value = __v; 1174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar typedef _Tp value_type; 1184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar typedef integral_constant type; 1198b625a3f7764959d0a2ac3cd860ce1e168e0fc9bAnna Zaks 1204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar operator value_type() const {return value;} 121fda9dbf1f4d15baaedffdd4b4bb529e06172f73dJordan Rose 1224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar value_type operator ()() const {return value;} 123fda9dbf1f4d15baaedffdd4b4bb529e06172f73dJordan Rose }; 1248b625a3f7764959d0a2ac3cd860ce1e168e0fc9bAnna Zaks 1254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp, _Tp __v> 1264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar const _Tp integral_constant<_Tp, __v>::value; 1278b625a3f7764959d0a2ac3cd860ce1e168e0fc9bAnna Zaks 1284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp, class _Arg> 1294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar struct is_trivially_assignable 1304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar : integral_constant<bool, __is_trivially_assignable(_Tp, _Arg)> 1314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar { 1324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar }; 1338b625a3f7764959d0a2ac3cd860ce1e168e0fc9bAnna Zaks 1344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar typedef integral_constant<bool,true> true_type; 1354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar typedef integral_constant<bool,false> false_type; 136651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 1374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct is_const : public false_type {}; 1384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct is_const<_Tp const> : public true_type {}; 139fda9dbf1f4d15baaedffdd4b4bb529e06172f73dJordan Rose 1404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct is_reference : public false_type {}; 1414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct is_reference<_Tp&> : public true_type {}; 142fda9dbf1f4d15baaedffdd4b4bb529e06172f73dJordan Rose 1434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp, class _Up> struct is_same : public false_type {}; 1444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct is_same<_Tp, _Tp> : public true_type {}; 1454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp, bool = is_const<_Tp>::value || is_reference<_Tp>::value > 1474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar struct __add_const {typedef _Tp type;}; 1484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> 1504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar struct __add_const<_Tp, false> {typedef const _Tp type;}; 1514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct add_const {typedef typename __add_const<_Tp>::type type;}; 153fda9dbf1f4d15baaedffdd4b4bb529e06172f73dJordan Rose 1544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct remove_const {typedef _Tp type;}; 1554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct remove_const<const _Tp> {typedef _Tp type;}; 1564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct add_lvalue_reference {typedef _Tp& type;}; 1584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp> struct is_trivially_copy_assignable 1604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar : public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type, 1614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; 1624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template<class InputIter, class OutputIter> 1644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar OutputIter __copy(InputIter II, InputIter IE, OutputIter OI) { 1654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar while (II != IE) 1664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar *OI++ = *II++; 1674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar return OI; 169651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 170651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 1714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp, class _Up> 1724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar inline 1734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar typename enable_if 1744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar < 1754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar is_same<typename remove_const<_Tp>::type, _Up>::value && 1764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar is_trivially_copy_assignable<_Up>::value, 1774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar _Up* 1784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar >::type __copy(_Tp* __first, _Tp* __last, _Up* __result) { 1794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar size_t __n = __last - __first; 1804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar if (__n > 0) 1824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar memmove(__result, __first, __n * sizeof(_Up)); 1834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar return __result + __n; 185651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 186651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 1874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template<class InputIter, class OutputIter> 1884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar OutputIter copy(InputIter II, InputIter IE, OutputIter OI) { 1894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar return __copy(II, IE, OI); 1904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar } 1914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _BidirectionalIterator, class _OutputIterator> 1934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar inline 1944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar _OutputIterator 1954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __copy_backward(_BidirectionalIterator __first, _BidirectionalIterator __last, 1964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar _OutputIterator __result) 1974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar { 1984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar while (__first != __last) 1994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar *--__result = *--__last; 2004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar return __result; 2014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar } 2024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template <class _Tp, class _Up> 2044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar inline 2054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar typename enable_if 2064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar < 2074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar is_same<typename remove_const<_Tp>::type, _Up>::value && 2084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar is_trivially_copy_assignable<_Up>::value, 2094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar _Up* 2104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar >::type __copy_backward(_Tp* __first, _Tp* __last, _Up* __result) { 2114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar size_t __n = __last - __first; 2124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar if (__n > 0) 2144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar { 2154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __result -= __n; 2164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar memmove(__result, __first, __n * sizeof(_Up)); 217fda9dbf1f4d15baaedffdd4b4bb529e06172f73dJordan Rose } 2184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar return __result; 2194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar } 2204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar template<class InputIter, class OutputIter> 2224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar OutputIter copy_backward(InputIter II, InputIter IE, OutputIter OI) { 2234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar return __copy_backward(II, IE, OI); 2244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar } 2254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar struct input_iterator_tag { }; 2274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar struct output_iterator_tag { }; 2284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar struct forward_iterator_tag : public input_iterator_tag { }; 2294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar struct bidirectional_iterator_tag : public forward_iterator_tag { }; 2304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 2314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 23281fb50e8b120fc95dc0245b4112972d4d7cca3b5Jordan Rose} 2332de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev 2342de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsevvoid* operator new(std::size_t, const std::nothrow_t&) throw(); 2352de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsevvoid* operator new[](std::size_t, const std::nothrow_t&) throw(); 2362de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsevvoid operator delete(void*, const std::nothrow_t&) throw(); 2372de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsevvoid operator delete[](void*, const std::nothrow_t&) throw(); 2382de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsev 2392de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsevvoid* operator new (std::size_t size, void* ptr) throw() { return ptr; }; 2402de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsevvoid* operator new[] (std::size_t size, void* ptr) throw() { return ptr; }; 2412de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsevvoid operator delete (void* ptr, void*) throw() {}; 2422de19edab6001d2c17720d02fe0760b9b452192aAnton Yartsevvoid operator delete[] (void* ptr, void*) throw() {}; 243