di 0.1.0
Loading...
Searching...
No Matches
language.h File Reference

Go to the source code of this file.

Classes

struct  di::meta::IsFunctionTo< R >
 

Namespaces

namespace  di
 
namespace  di::concepts
 
namespace  di::meta
 

Concepts

concept  di::concepts::Const
 
concept  di::concepts::LValueReference
 
concept  di::concepts::ConstLValueReference
 
concept  di::concepts::RValueReference
 
concept  di::concepts::MutableRValueReference
 
concept  di::concepts::Reference
 
concept  di::concepts::Pointer
 
concept  di::concepts::LanguageFunction
 
concept  di::concepts::BoundedLanguageArray
 
concept  di::concepts::UnboundedLanguageArray
 
concept  di::concepts::LanguageArray
 
concept  di::concepts::MemberPointer
 
concept  di::concepts::MemberFunctionPointer
 
concept  di::concepts::MemberObjectPointer
 
concept  di::concepts::NullPointer
 
concept  di::concepts::InitializerList
 
concept  di::concepts::Aggregate
 
concept  di::concepts::Integer
 
concept  di::concepts::Integral
 
concept  di::concepts::FloatingPoint
 
concept  di::concepts::Arithmetic
 
concept  di::concepts::Signed
 
concept  di::concepts::SignedInteger
 
concept  di::concepts::UnsignedInteger
 
concept  di::concepts::SignedIntegral
 
concept  di::concepts::UnsignedIntegral
 
concept  di::concepts::Class
 
concept  di::concepts::Union
 
concept  di::concepts::Enum
 
concept  di::concepts::IntegralOrEnum
 
concept  di::concepts::Scalar
 
concept  di::concepts::Object
 
concept  di::concepts::BaseOf
 
concept  di::concepts::UniqueObjectRepresentation
 

Typedefs

template<concepts::LanguageFunction Fun>
using di::meta::LanguageFunctionReturn = Type<detail::LanguageFunctionReturnHelper<Fun>>
 
template<typename T>
using di::meta::RemoveExtent = Type<detail::RemoveExtentHelper<T>>
 
template<typename T>
using di::meta::RemoveAllExtents = Type<detail::RemoveAllExtentsHelper<T>>
 
template<concepts::MemberPointer T>
using di::meta::MemberPointerValue = Type<detail::MemberPointerValueHelper<RemoveCV<T>>>
 
template<concepts::MemberPointer T>
using di::meta::MemberPointerClass = Type<detail::MemberPointerClassHelper<RemoveCV<T>>>
 
template<concepts::Enum T>
using di::meta::UnderlyingType = __underlying_type(T)
 
template<typename T>
using di::meta::MakeSigned = detail::MakeSignedHelper<RemoveCV<T>>::Type
 
template<typename T>
using di::meta::MakeUnsigned = detail::MakeUnsignedHelper<RemoveCV<T>>::Type
 
template<typename T>
using di::meta::AddConst = T const
 
template<typename T>
using di::meta::AddVolatile = T volatile
 
template<typename T>
using di::meta::AddCV = T const volatile
 
template<typename T>
using di::meta::AddLValueReference = Type<detail::AddLValueReferenceHelper<T>>
 
template<typename T>
using di::meta::AddRValueReference = Type<detail::AddRValueReferenceHelper<T>>
 
template<typename T>
using di::meta::AddPointer = Type<detail::AddPointerHelper<T>>
 This is a helper template which will convert reference types into their corresponding pointer type, while also working for non-references.
 
template<typename T, typename U>
using di::meta::Like = Type<detail::LikeHelper<T, U>>
 
template<typename T>
using di::meta::RemoveRValueReference = Conditional<concepts::RValueReference<T>, RemoveReference<T>, T>
 
template<typename T>
using di::meta::RemovePointer = Type<detail::RemovePointerHelper<T>>
 
template<typename T>
using di::meta::RemoveFunctionQualifiers = Type<detail::RemoveFunctionQualifiersHelper<T>>
 
template<typename T>
using di::meta::Decay
 

Variables

template<typename T>
constexpr auto di::meta::ArrayRank = 0ZU
 
template<typename T>
constexpr auto di::meta::ArrayRank< T[]> = 1 + ArrayRank<T>
 
template<typename T, usize N>
constexpr auto di::meta::ArrayRank< T[N]> = 1 + ArrayRank<T>
 
template<typename T, types::size_t level = 0>
constexpr auto di::meta::Extent = 0ZU
 
template<typename T, usize level>
constexpr auto di::meta::Extent< T[], level > = Extent<T, level - 1>
 
template<typename T, usize size>
constexpr auto di::meta::Extent< T[size], 0 > = size
 
template<typename T, usize size, usize level>
constexpr auto di::meta::Extent< T[size], level > = Extent<T, level - 1>