AuROXTL/Include/auROXTL/Utility/auRemoveReference.hpp

43 lines
780 B
C++

/***
Copyright (C) 2022-2024 Jamie Reece Wilson (a/k/a "Reece"). All rights reserved.
File: auRemoveReference.hpp
File: auTemplateMeta.hpp
Date: 2024-11-30
Date: 2022-04-01
Author: Reece
***/
#pragma once
template <class T>
struct AuRemoveReference
{
typedef T type;
typedef T Type;
typedef T Type_t;
};
template <class T>
struct AuRemoveReference<T &>
{
typedef T type;
typedef T Type;
typedef T Type_t;
};
template <class T>
struct AuRemoveReference<T &&>
{
typedef T type;
typedef T Type;
typedef T Type_t;
};
#if defined(AU_LANG_CPP_14_)
template <class T>
using AuRemoveReference_t = typename AuRemoveReference<T>::Type_t;
#endif
#define AuRemoveReference_mt(T) typename AuRemoveReference<T>::Type_t