libshit

Just some random shit
git clone https://git.neptards.moe/neptards/libshit.git
Log | Files | Refs | Submodules | README | LICENSE

xmemory0 (861B)


      1 // -*- c++ -*-
      2 #pragma once
      3 
      4 #include <cstdlib>
      5 #include <limits>
      6 #include <new>
      7 #include <xutility>
      8 
      9 #define allocator_traits allocator_traits_base
     10 
     11 #include_next <xmemory0>
     12 
     13 #undef allocator_traits
     14 
     15 namespace std
     16 {
     17   namespace Detail
     18   {
     19     template <typename T, typename = void>
     20     struct get_is_always_equal : std::is_empty<T> {};
     21 
     22     template <typename T>
     23     struct get_is_always_equal<T, std::void_t<typename T::is_always_equal>>
     24       : T::is_always_equal {};
     25   }
     26 
     27   template <typename T>
     28   struct allocator_traits : allocator_traits_base<T>
     29   {
     30     using is_always_equal = typename Detail::get_is_always_equal<T>::type;
     31     template <typename U>
     32     using rebind_traits = allocator_traits<
     33       typename allocator_traits_base<T>::template rebind_alloc<U>>;
     34     // is this some kind of msvc extension??
     35     using other = allocator_traits<T>;
     36   };
     37 }