#ifndef SANITIZER_TYPE_TRAITS_H
#define SANITIZER_TYPE_TRAITS_H
#include "sanitizer_common/sanitizer_internal_defs.h"
namespace __sanitizer {
struct true_type { … };
struct false_type { … };
template <typename T, typename U>
struct is_same : public false_type { … };
is_same<T, T>;
template <bool B, class T, class F>
struct conditional { … };
conditional<false, T, F>;
template <class T>
struct remove_reference { … };
remove_reference<T &>;
remove_reference<T &&>;
template <class T>
WARN_UNUSED_RESULT inline typename remove_reference<T>::type&& move(T&& t) { … }
template <class T>
WARN_UNUSED_RESULT inline constexpr T&& forward(
typename remove_reference<T>::type& t) { … }
template <class T>
WARN_UNUSED_RESULT inline constexpr T&& forward(
typename remove_reference<T>::type&& t) { … }
template <class T, T v>
struct integral_constant { … };
#ifndef __has_builtin
#define __has_builtin …
#endif
#if __has_builtin(__is_trivially_destructible)
template <class T>
struct is_trivially_destructible
: public integral_constant<bool, __is_trivially_destructible(T)> { … };
#elif __has_builtin(__has_trivial_destructor)
template <class T>
struct is_trivially_destructible
: public integral_constant<bool, __has_trivial_destructor(T)> {};
#else
template <class T>
struct is_trivially_destructible
: public integral_constant<bool, false> {};
#endif
#if __has_builtin(__is_trivially_copyable)
template <class T>
struct is_trivially_copyable
: public integral_constant<bool, __is_trivially_copyable(T)> { … };
#else
template <class T>
struct is_trivially_copyable
: public integral_constant<bool, false> {};
#endif
}
#endif