#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TYPE_TRAITS_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TYPE_TRAITS_H_
#include <cstddef>
#include <type_traits>
#include <utility>
#include "base/compiler_specific.h"
#include "build/build_config.h"
#include "v8/include/cppgc/type-traits.h"
namespace WTF {
template <typename T>
inline const char* GetStringWithTypeName() { … }
template <typename T, typename U>
struct IsSubclass { … };
template <typename T, template <typename... V> class U>
struct IsSubclassOfTemplate { … };
template <typename T, template <typename V, size_t W> class U>
struct IsSubclassOfTemplateTypenameSize { … };
template <typename T, template <typename V, size_t W, typename X> class U>
struct IsSubclassOfTemplateTypenameSizeTypename { … };
template <typename T>
struct IsTraceable : cppgc::internal::IsTraceable<T> { … };
template <typename T>
struct IsGarbageCollectedType
: cppgc::internal::IsGarbageCollectedOrMixinType<T> { … };
template <typename T>
struct IsWeak : cppgc::internal::IsWeak<T> { … };
template <typename T>
struct IsMemberType : std::bool_constant<cppgc::IsMemberTypeV<T>> { … };
template <typename T>
struct IsWeakMemberType : std::bool_constant<cppgc::IsWeakMemberTypeV<T>> { … };
template <typename T>
struct IsMemberOrWeakMemberType
: std::bool_constant<cppgc::IsMemberTypeV<T> ||
cppgc::IsWeakMemberTypeV<T>> { … };
template <typename T>
struct IsAnyMemberType
: std::bool_constant<IsMemberOrWeakMemberType<T>::value ||
cppgc::IsUntracedMemberTypeV<T>> { … };
IsTraceable<std::pair<T, U>>;
enum WeakHandlingFlag { … };
template <WeakHandlingFlag weakness, typename T, typename Traits>
struct TraceInCollectionTrait;
kWeakHandlingTrait;
IsDisallowNew;
template <>
class IsGarbageCollectedType<void> { … };
template <typename T,
bool = std::is_function<typename std::remove_const<
typename std::remove_pointer<T>::type>::type>::value ||
std::is_void<typename std::remove_const<
typename std::remove_pointer<T>::type>::type>::value>
class IsPointerToGarbageCollectedType { … };
IsPointerToGarbageCollectedType<T *, false>;
IsStackAllocatedType;
template <typename T>
struct IsPointerToGced { … };
}
IsGarbageCollectedType;
#endif