ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
itk::Concept::Detail Namespace Reference

Classes

struct  IsSatisfied
 
struct  IsSatisfied< void(TConcept)>
 
struct  IsValidExpressionImpl
 
struct  IsValidExpressionImpl< std::void_t< TExpression< TArgs... > >, TExpression, TArgs... >
 

Typedefs

template<typename T1, typename T2, typename T3>
using Additive
 
template<typename T1, typename T2>
using AdditiveAndAssign
 
template<typename T1, typename T2, typename T3>
using Bitwise
 
template<typename T1, typename T2, typename T3>
using Bracket = decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>()[Lvalue<const T2>()]))
 
template<typename T1, typename T2, typename T3>
using Division = decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>() / Lvalue<const T2>()))
 
template<typename T1, typename T2>
using DivisionAndAssign = decltype(Lvalue<T2>() /= Lvalue<const T1>())
 
template<typename T1, typename T2>
using Equality
 
template<typename T1, typename T2>
using GreaterThan
 
template<typename T>
using IncrementDecrement
 
template<typename T1, typename T2>
using JoinTraitsMember = typename JoinTraits<T1, T2>::ValueType
 
template<typename T1, typename T2>
using LessThan
 
template<typename T1, typename T2, typename T3>
using Multiply = decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>() * Lvalue<const T2>()))
 
template<typename T1, typename T2>
using MultiplyAndAssign = decltype(Lvalue<T2>() *= Lvalue<const T1>())
 
template<typename T>
using Not = decltype(Lvalue<T>() = !Lvalue<T>())
 
template<typename T, typename TTraits = NumericTraits<T>>
using NumericTraitsMembers
 
template<typename T>
using OStreamWrite = decltype(Lvalue<std::ostream>() << Lvalue<T>())
 
template<typename T>
using PixelTraitsMembers
 
template<typename TBoolean>
using RequireBoolean = std::enable_if_t<std::is_convertible_v<TBoolean, bool>>
 
template<typename T1, typename T2>
using StaticCast = decltype(static_cast<T2>(Lvalue<T1>()))
 
template<typename T>
using ValueTypeMember = typename T::ValueType
 

Functions

template<typename T>
T & Lvalue ()
 

Variables

template<typename T>
constexpr bool IsExact = std::numeric_limits<typename NumericTraits<T>::ValueType>::is_exact
 
template<typename T>
constexpr bool IsPrimaryNumericTraits
 
template<template< typename... > typename TExpression, typename... TArgs>
constexpr bool IsValidExpression = IsValidExpressionImpl<void, TExpression, TArgs...>::value
 

Typedef Documentation

◆ Additive

template<typename T1, typename T2, typename T3>
using itk::Concept::Detail::Additive
Initial value:
std::void_t<decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>() + Lvalue<const T2>())),
decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>() - Lvalue<const T2>()))>

Definition at line 89 of file itkConceptChecking.h.

◆ AdditiveAndAssign

template<typename T1, typename T2>
using itk::Concept::Detail::AdditiveAndAssign
Initial value:
std::void_t<decltype(Lvalue<T2>() += Lvalue<const T1>()), decltype(Lvalue<T2>() -= Lvalue<const T1>())>

Definition at line 92 of file itkConceptChecking.h.

◆ Bitwise

template<typename T1, typename T2, typename T3>
using itk::Concept::Detail::Bitwise
Initial value:
std::void_t<decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>() & Lvalue<const T2>())),
decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>() | Lvalue<const T2>())),
decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>() ^ Lvalue<const T2>())),
decltype(Lvalue<T3>() &= static_cast<T3>(Lvalue<const T2>())),
decltype(Lvalue<T3>() |= static_cast<T3>(Lvalue<const T2>())),
decltype(Lvalue<T3>() ^= static_cast<T3>(Lvalue<const T2>()))>

Definition at line 103 of file itkConceptChecking.h.

◆ Bracket

template<typename T1, typename T2, typename T3>
using itk::Concept::Detail::Bracket = decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>()[Lvalue<const T2>()]))

Definition at line 110 of file itkConceptChecking.h.

◆ Division

template<typename T1, typename T2, typename T3>
using itk::Concept::Detail::Division = decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>() / Lvalue<const T2>()))

Definition at line 99 of file itkConceptChecking.h.

◆ DivisionAndAssign

template<typename T1, typename T2>
using itk::Concept::Detail::DivisionAndAssign = decltype(Lvalue<T2>() /= Lvalue<const T1>())

Definition at line 101 of file itkConceptChecking.h.

◆ Equality

template<typename T1, typename T2>
using itk::Concept::Detail::Equality
Initial value:
std::void_t<RequireBoolean<decltype(Lvalue<T1>() == Lvalue<T2>())>,
std::enable_if_t< std::is_convertible_v< TBoolean, bool > > RequireBoolean

Definition at line 85 of file itkConceptChecking.h.

◆ GreaterThan

template<typename T1, typename T2>
using itk::Concept::Detail::GreaterThan
Initial value:
std::void_t<RequireBoolean<decltype(Lvalue<T1>() > Lvalue<T2>())>,

Definition at line 80 of file itkConceptChecking.h.

◆ IncrementDecrement

template<typename T>
using itk::Concept::Detail::IncrementDecrement
Initial value:
std::void_t<decltype(Lvalue<T>()++), decltype(Lvalue<T>()--), decltype(++Lvalue<T>()), decltype(--Lvalue<T>())>

Definition at line 114 of file itkConceptChecking.h.

◆ JoinTraitsMember

template<typename T1, typename T2>
using itk::Concept::Detail::JoinTraitsMember = typename JoinTraits<T1, T2>::ValueType

Definition at line 144 of file itkConceptChecking.h.

◆ LessThan

template<typename T1, typename T2>
using itk::Concept::Detail::LessThan
Initial value:
std::void_t<RequireBoolean<decltype(Lvalue<T1>() < Lvalue<T2>())>,

Definition at line 77 of file itkConceptChecking.h.

◆ Multiply

template<typename T1, typename T2, typename T3>
using itk::Concept::Detail::Multiply = decltype(Lvalue<T3>() = static_cast<T3>(Lvalue<const T1>() * Lvalue<const T2>()))

Definition at line 95 of file itkConceptChecking.h.

◆ MultiplyAndAssign

template<typename T1, typename T2>
using itk::Concept::Detail::MultiplyAndAssign = decltype(Lvalue<T2>() *= Lvalue<const T1>())

Definition at line 97 of file itkConceptChecking.h.

◆ Not

template<typename T>
using itk::Concept::Detail::Not = decltype(Lvalue<T>() = !Lvalue<T>())

Definition at line 112 of file itkConceptChecking.h.

◆ NumericTraitsMembers

template<typename T, typename TTraits = NumericTraits<T>>
using itk::Concept::Detail::NumericTraitsMembers
Initial value:
std::void_t<typename TTraits::ValueType,
typename TTraits::PrintType,
typename TTraits::AbsType,
typename TTraits::AccumulateType,
typename TTraits::RealType,
typename TTraits::ScalarRealType,
typename TTraits::FloatType,
decltype(Lvalue<T>() = TTraits::NonpositiveMin(Lvalue<const T>())),
decltype(Lvalue<T>() = TTraits::ZeroValue(Lvalue<const T>())),
decltype(Lvalue<T>() = TTraits::OneValue(Lvalue<const T>())),
RequireBoolean<decltype(TTraits::IsPositive(Lvalue<const T>()))>,

Definition at line 119 of file itkConceptChecking.h.

◆ OStreamWrite

template<typename T>
using itk::Concept::Detail::OStreamWrite = decltype(Lvalue<std::ostream>() << Lvalue<T>())

Definition at line 117 of file itkConceptChecking.h.

◆ PixelTraitsMembers

template<typename T>
using itk::Concept::Detail::PixelTraitsMembers
Initial value:
std::void_t<typename PixelTraits<T>::ValueType,
std::enable_if_t<std::is_convertible_v<decltype(PixelTraits<T>::Dimension), unsigned int>>>
Traits for a pixel that define the dimension and component type.

Definition at line 138 of file itkConceptChecking.h.

◆ RequireBoolean

template<typename TBoolean>
using itk::Concept::Detail::RequireBoolean = std::enable_if_t<std::is_convertible_v<TBoolean, bool>>

Definition at line 69 of file itkConceptChecking.h.

◆ StaticCast

template<typename T1, typename T2>
using itk::Concept::Detail::StaticCast = decltype(static_cast<T2>(Lvalue<T1>()))

Definition at line 75 of file itkConceptChecking.h.

◆ ValueTypeMember

template<typename T>
using itk::Concept::Detail::ValueTypeMember = typename T::ValueType

Definition at line 142 of file itkConceptChecking.h.

Function Documentation

◆ Lvalue()

template<typename T>
T & itk::Concept::Detail::Lvalue ( )

Variable Documentation

◆ IsExact

template<typename T>
bool itk::Concept::Detail::IsExact = std::numeric_limits<typename NumericTraits<T>::ValueType>::is_exact
inlineconstexpr

Definition at line 146 of file itkConceptChecking.h.

◆ IsPrimaryNumericTraits

template<typename T>
bool itk::Concept::Detail::IsPrimaryNumericTraits
inlineconstexpr
Initial value:
=
std::is_base_of_v<std::numeric_limits<T>, NumericTraits<T>> && !std::numeric_limits<T>::is_specialized
Define additional traits for native types such as int or float.

The primary NumericTraits template derives from an unspecialized std::numeric_limits<T>.

Definition at line 135 of file itkConceptChecking.h.

◆ IsValidExpression

template<template< typename... > typename TExpression, typename... TArgs>
bool itk::Concept::Detail::IsValidExpression = IsValidExpressionImpl<void, TExpression, TArgs...>::value
inlineconstexpr

True when the type alias TExpression<TArgs...> is well-formed (detection idiom).

Definition at line 66 of file itkConceptChecking.h.