fix(templates): fix compile error in TReferenceWrapper constructor
This commit is contained in:
parent
391670adb7
commit
f347132725
@ -18,7 +18,11 @@ public:
|
|||||||
using Type = ReferencedType;
|
using Type = ReferencedType;
|
||||||
|
|
||||||
template <typename T = ReferencedType> requires CConvertibleTo<T, ReferencedType&>
|
template <typename T = ReferencedType> requires CConvertibleTo<T, ReferencedType&>
|
||||||
constexpr TReferenceWrapper(T&& Object) : Pointer(AddressOf(Forward<T>(Object))) { }
|
constexpr TReferenceWrapper(T&& Object)
|
||||||
|
{
|
||||||
|
ReferencedType& Reference = Forward<T>(Object);
|
||||||
|
Pointer = AddressOf(Reference);
|
||||||
|
}
|
||||||
|
|
||||||
TReferenceWrapper(const TReferenceWrapper&) = default;
|
TReferenceWrapper(const TReferenceWrapper&) = default;
|
||||||
|
|
||||||
|
@ -21,38 +21,38 @@ void AsConst(const T&& Ref) = delete;
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
constexpr TRemoveReference<T>&& MoveTemp(T&& Obj)
|
constexpr TRemoveReference<T>&& MoveTemp(T&& Obj)
|
||||||
{
|
{
|
||||||
typedef TRemoveReference<T> CastType;
|
using CastType = TRemoveReference<T>;
|
||||||
return (CastType&&)Obj;
|
return static_cast<CastType&&>(Obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
constexpr T CopyTemp(T& Val)
|
constexpr T CopyTemp(T& Obj)
|
||||||
{
|
{
|
||||||
return const_cast<const T&>(Val);
|
return const_cast<const T&>(Obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
constexpr T CopyTemp(const T& Val)
|
constexpr T CopyTemp(const T& Obj)
|
||||||
{
|
{
|
||||||
return Val;
|
return Obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
constexpr T&& CopyTemp(T&& Val)
|
constexpr T&& CopyTemp(T&& Obj)
|
||||||
{
|
{
|
||||||
return MoveTemp(Val);
|
return MoveTemp(Obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
constexpr T&& Forward(TRemoveReference<T>& Obj)
|
constexpr T&& Forward(TRemoveReference<T>& Obj)
|
||||||
{
|
{
|
||||||
return (T&&)Obj;
|
return static_cast<T&&>(Obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
constexpr T&& Forward(TRemoveReference<T>&& Obj)
|
constexpr T&& Forward(TRemoveReference<T>&& Obj)
|
||||||
{
|
{
|
||||||
return (T&&)Obj;
|
return static_cast<T&&>(Obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T> requires requires(T& A, T& B) { A.Swap(B); }
|
template <typename T> requires requires(T& A, T& B) { A.Swap(B); }
|
||||||
|
Loading…
Reference in New Issue
Block a user