MCRO
C++23 utilities for Unreal Engine.
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Concepts.h File Reference

This header exists because STL headers in Android doesn't define STL concepts (other than same_as which is weird), despite the fact that in <concepts> the synopsis contains all of them (but only as a comment). More...

#include <type_traits>
#include "CoreMinimal.h"

Go to the source code of this file.

Data Structures

struct  Mcro::Concepts::Detail::TExtractClassName< MemberType ClassType::* >
 

Namespaces

namespace  Mcro
 
namespace  Mcro::Concepts
 
namespace  Mcro::Concepts::Detail
 

Concepts

concept  Mcro::Concepts::CSameAs
 
concept  Mcro::Concepts::CSameAsDecayed
 
concept  Mcro::Concepts::CConvertibleTo
 
concept  Mcro::Concepts::CConvertibleToDecayed
 
concept  Mcro::Concepts::CAssignableFrom
 
concept  Mcro::Concepts::CAssignableFromDecayed
 
concept  Mcro::Concepts::CDerivedFrom
 
concept  Mcro::Concepts::CIntegral
 
concept  Mcro::Concepts::CSignedIntegral
 
concept  Mcro::Concepts::CUnsignedIntegral
 
concept  Mcro::Concepts::CFloatingPoint
 
concept  Mcro::Concepts::CScalar
 
concept  Mcro::Concepts::CBooleanTestable
 
concept  Mcro::Concepts::CPlainEnum
 
concept  Mcro::Concepts::CScopedEnum
 
concept  Mcro::Concepts::CEnum
 
concept  Mcro::Concepts::CCoreHalfEqualityComparable
 
concept  Mcro::Concepts::CWeaklyEqualityComparableWith
 
concept  Mcro::Concepts::CCoreEqualityComparable
 
concept  Mcro::Concepts::CHalfOrdered
 
concept  Mcro::Concepts::CPartiallyOrderedWith
 
concept  Mcro::Concepts::CTotallyOrdered
 
concept  Mcro::Concepts::CConstType
 
concept  Mcro::Concepts::CMutableType
 
concept  Mcro::Concepts::CDestructible
 
concept  Mcro::Concepts::CConstructibleFrom
 
concept  Mcro::Concepts::CDefaultInitializable
 
concept  Mcro::Concepts::CMoveConstructible
 
concept  Mcro::Concepts::CCopyConstructible
 
concept  Mcro::Concepts::CMovable
 
concept  Mcro::Concepts::CCopyable
 
concept  Mcro::Concepts::CSemiRegular
 
concept  Mcro::Concepts::CRegular
 
concept  Mcro::Concepts::CInvocable
 
concept  Mcro::Concepts::CPredicate
 
concept  Mcro::Concepts::CRelation
 
concept  Mcro::Concepts::CEquivalenceRelation
 
concept  Mcro::Concepts::CStrictWeakOrder
 
concept  Mcro::Concepts::CModels
 
concept  Mcro::Concepts::CSharedPtr
 
concept  Mcro::Concepts::CSharedRef
 
concept  Mcro::Concepts::CWeakPtr
 
concept  Mcro::Concepts::CSharedRefOrPtr
 
concept  Mcro::Concepts::CSharedOrWeak
 
concept  Mcro::Concepts::CSharedFromThis
 
concept  Mcro::Concepts::CSharedPtrOf
 
concept  Mcro::Concepts::CSharedRefOf
 
concept  Mcro::Concepts::CWeakPtrOf
 
concept  Mcro::Concepts::CSharedRefOrPtrOf
 
concept  Mcro::Concepts::CSharedOrWeakOf
 
concept  Mcro::Concepts::CSharedFromThisOf
 
concept  Mcro::Concepts::CUObject
 
concept  Mcro::Concepts::CInterface
 
concept  Mcro::Concepts::CInterfaceUClass
 
concept  Mcro::Concepts::CCurrentChar
 
concept  Mcro::Concepts::CNonCurrentChar
 
concept  Mcro::Concepts::CCurrentCharPtr
 
concept  Mcro::Concepts::CNonCurrentCharPtr
 
concept  Mcro::Concepts::CChar
 
concept  Mcro::Concepts::CNonChar
 
concept  Mcro::Concepts::CCharPtr
 
concept  Mcro::Concepts::CNonCharPtr
 
concept  Mcro::Concepts::CPointer
 
concept  Mcro::Concepts::CClass
 
concept  Mcro::Concepts::CUnion
 
concept  Mcro::Concepts::CPlainClass
 
concept  Mcro::Concepts::CMemberPointerOf
 
concept  Mcro::Concepts::CVoid
 
concept  Mcro::Concepts::CNonVoid
 
concept  Mcro::Concepts::CRefCounted
 
concept  Mcro::Concepts::CRangeMember
 
concept  Mcro::Concepts::CValidableMember
 
concept  Mcro::Concepts::CValidableAdl
 
concept  Mcro::Concepts::CValidable
 

Macros

#define MCRO_THIS_TYPE   decltype(Mcro::Concepts::DecayPtr(this))
 

Typedefs

template<typename MemberPointer >
using Mcro::Concepts::Detail::TExtractedClassName = typename TExtractClassName<std::decay_t<MemberPointer>>::Type
 

Functions

template<CValidable T>
bool Mcro::Concepts::TestValid (T &&input)
 Attempt to test the input object validity through various methods.
 
template<typename T >
Mcro::Concepts::DecayPtr (T *)
 

Detailed Description

This header exists because STL headers in Android doesn't define STL concepts (other than same_as which is weird), despite the fact that in <concepts> the synopsis contains all of them (but only as a comment).

Author
David Mórász
Date
2025

However, <type_traits> seems to be implemented properly so many concepts here will be just encapsulating equivalent type traits (like CConstType = std::is_const_v<T>). Using MSVC implementation as reference

Definition in file Concepts.h.

Macro Definition Documentation

◆ MCRO_THIS_TYPE

#define MCRO_THIS_TYPE   decltype(Mcro::Concepts::DecayPtr(this))

Definition at line 32 of file Concepts.h.