You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
861 B
C++
38 lines
861 B
C++
// -*- c++ -*-
|
|
#pragma once
|
|
|
|
#include <cstdlib>
|
|
#include <limits>
|
|
#include <new>
|
|
#include <xutility>
|
|
|
|
#define allocator_traits allocator_traits_base
|
|
|
|
#include_next <xmemory0>
|
|
|
|
#undef allocator_traits
|
|
|
|
namespace std
|
|
{
|
|
namespace Detail
|
|
{
|
|
template <typename T, typename = void>
|
|
struct get_is_always_equal : std::is_empty<T> {};
|
|
|
|
template <typename T>
|
|
struct get_is_always_equal<T, std::void_t<typename T::is_always_equal>>
|
|
: T::is_always_equal {};
|
|
}
|
|
|
|
template <typename T>
|
|
struct allocator_traits : allocator_traits_base<T>
|
|
{
|
|
using is_always_equal = typename Detail::get_is_always_equal<T>::type;
|
|
template <typename U>
|
|
using rebind_traits = allocator_traits<
|
|
typename allocator_traits_base<T>::template rebind_alloc<U>>;
|
|
// is this some kind of msvc extension??
|
|
using other = allocator_traits<T>;
|
|
};
|
|
}
|