AK: Fix naming conflict with compiler builtin

Clang patch D116203 added various builtin functions for type traits,
`__decay` being one of them. This name conflicts with our
`AK::Detail::__decay`, leading to compiler warnings with Clang 16.
This commit is contained in:
Daniel Bertalan 2022-10-01 16:10:03 +02:00 committed by Andreas Kling
parent 41a8f3f40f
commit 01c2cffcca
Notes: sideshowbarker 2024-07-17 11:34:34 +09:00

View File

@ -567,20 +567,20 @@ template<template<typename...> typename U, typename... Us>
inline constexpr bool IsSpecializationOf<U<Us...>, U> = true;
template<typename T>
struct __decay {
struct __Decay {
typedef Detail::RemoveCVReference<T> type;
};
template<typename T>
struct __decay<T[]> {
struct __Decay<T[]> {
typedef T* type;
};
template<typename T, decltype(sizeof(T)) N>
struct __decay<T[N]> {
struct __Decay<T[N]> {
typedef T* type;
};
// FIXME: Function decay
template<typename T>
using Decay = typename __decay<T>::type;
using Decay = typename __Decay<T>::type;
template<typename T, typename U>
inline constexpr bool IsPointerOfType = IsPointer<Decay<U>>&& IsSame<T, RemoveCV<RemovePointer<Decay<U>>>>;