brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 2072e46 Raw
151 lines · c
1 2namespace __gnu_cxx {3template <typename T>4struct basic_iterator {5  basic_iterator operator++();6  T& operator*() const;7  T* operator->() const;8};9 10template<typename T>11bool operator!=(basic_iterator<T>, basic_iterator<T>);12}13 14namespace std {15template<typename T> struct remove_reference       { typedef T type; };16template<typename T> struct remove_reference<T &>  { typedef T type; };17template<typename T> struct remove_reference<T &&> { typedef T type; };18 19template<typename T>20typename remove_reference<T>::type &&move(T &&t) noexcept;21 22template <typename C>23auto data(const C &c) -> decltype(c.data());24 25template <typename C>26auto begin(C &c) -> decltype(c.begin());27 28template<typename T, int N>29T *begin(T (&array)[N]);30 31using size_t = decltype(sizeof(0));32 33template<typename T>34struct initializer_list {35  const T* ptr; size_t sz;36};37template<typename T> class allocator {};38template <typename T, typename Alloc = allocator<T>>39struct vector {40  typedef __gnu_cxx::basic_iterator<T> iterator;41  iterator begin();42  iterator end();43  const T *data() const;44  vector();45  vector(initializer_list<T> __l,46         const Alloc& alloc = Alloc());47 48  template<typename InputIterator>49	vector(InputIterator first, InputIterator __last);50 51  T &at(int n);52 53  void push_back(const T&);54  void push_back(T&&);55  const T& back() const;56  void insert(iterator, T&&);57};58 59template<typename T>60struct basic_string_view {61  basic_string_view();62  basic_string_view(const T *);63  const T *begin() const;64  const T *data() const;65};66using string_view = basic_string_view<char>;67 68template<class _Mystr> struct iter {69    iter& operator-=(int);70 71    iter operator-(int _Off) const {72        iter _Tmp = *this;73        return _Tmp -= _Off;74    }75};76 77template<typename T>78struct basic_string {79  basic_string();80  basic_string(const T *);81  const T *c_str() const;82  operator basic_string_view<T> () const;83  using const_iterator = iter<T>;84  const T *data() const;85};86using string = basic_string<char>;87 88template<typename T>89struct unique_ptr {90  T &operator*();91  T *get() const;92};93 94template<typename T>95struct optional {96  optional();97  optional(const T&);98 99  template<typename U = T>100  optional(U&& t);101 102  template<typename U>103  optional(optional<U>&& __t);104 105  T &operator*() &;106  T &&operator*() &&;107  T &value() &;108  T &&value() &&;109};110template<typename T>111optional<__decay(T)> make_optional(T&&);112 113 114template<typename T>115struct stack {116  T &top();117};118 119struct any {};120 121template<typename T>122T any_cast(const any& operand);123 124template<typename T>125struct reference_wrapper {126  template<typename U>127  reference_wrapper(U &&);128};129 130template<typename T>131reference_wrapper<T> ref(T& t) noexcept;132 133template <typename T>134struct [[gsl::Pointer]] iterator {135  T& operator*() const;136};137 138struct false_type {139    static constexpr bool value = false;140    constexpr operator bool() const noexcept { return value; }141};142struct true_type {143    static constexpr bool value = true;144    constexpr operator bool() const noexcept { return value; }145};146 147template<class T> struct is_pointer : false_type {};148template<class T> struct is_pointer<T*> : true_type {};149template<class T> struct is_pointer<T* const> : true_type {};150}151