ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
itkConceptChecking.h File Reference
#include "itkPixelTraits.h"
#include "itkNumericTraits.h"
#include <iostream>
#include <type_traits>
+ Include dependency graph for itkConceptChecking.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  itk::Concept::AdditiveAndAssignOperators< T1, T2 >
 
struct  itk::Concept::AdditiveOperators< T1, T2, T3 >
 
struct  itk::Concept::Assignable< T >
 
struct  itk::Concept::BitwiseOperators< T1, T2, T3 >
 
struct  itk::Concept::BracketOperator< T1, T2, T3 >
 
struct  itk::Concept::Comparable< T1, T2 >
 
struct  itk::Concept::Convertible< T1, T2 >
 
struct  itk::Concept::CopyConstructible< T >
 
struct  itk::Concept::DefaultConstructible< T >
 
struct  itk::Concept::DivisionAndAssignOperators< T1, T2 >
 
struct  itk::Concept::DivisionOperators< T1, T2, T3 >
 
struct  itk::Concept::EqualityComparable< T1, T2 >
 
struct  itk::Concept::GreaterThanComparable< T1, T2 >
 
struct  itk::Concept::HasJoinTraits< T1, T2 >
 
struct  itk::Concept::HasNumericTraits< T >
 
struct  itk::Concept::HasPixelTraits< T >
 
struct  itk::Concept::HasValueType< T >
 
struct  itk::Concept::HasZero< T >
 
struct  itk::Concept::IncrementDecrementOperators< T >
 
struct  itk::Concept::IsFixedPoint< T >
 
struct  itk::Concept::IsFloatingPoint< T >
 
struct  itk::Concept::IsInteger< T >
 
struct  itk::Concept::IsNonInteger< T >
 
struct  itk::Concept::Detail::IsSatisfied< void(TConcept)>
 
struct  itk::Concept::IsUnsignedInteger< T >
 
struct  itk::Concept::Detail::IsValidExpressionImpl< TVoid, TExpression, TArgs >
 
struct  itk::Concept::Detail::IsValidExpressionImpl< std::void_t< TExpression< TArgs... > >, TExpression, TArgs... >
 
struct  itk::Concept::LessThanComparable< T1, T2 >
 
struct  itk::Concept::MultiplyAndAssignOperator< T1, T2 >
 
struct  itk::Concept::MultiplyOperator< T1, T2, T3 >
 
struct  itk::Concept::NotOperator< T >
 
struct  itk::Concept::OStreamWritable< T >
 
struct  itk::Concept::SameDimension< D1, D2 >
 
struct  itk::Concept::SameDimensionOrMinusOne< D1, D2 >
 
struct  itk::Concept::SameDimensionOrMinusOneOrTwo< D1, D2 >
 
struct  itk::Concept::SameType< T1, T2 >
 
struct  itk::Concept::Signed< T >
 

Namespaces

namespace  itk
 
namespace  itk::Concept
 
namespace  itk::Concept::Detail
 

Macros

#define itkConceptMacro(name, conceptType)
 

Typedefs

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

Functions

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

Variables

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

Macro Definition Documentation

◆ itkConceptMacro

#define itkConceptMacro ( name,
conceptType )
Value:
"ITK concept check failed: " #name " " #conceptType)

Compile-time check that a template argument satisfies an itk::Concept.

conceptType is parenthesized, so it may contain commas. Prefer using a concept directly:

static_assert(Concept::HasNumericTraits<InputPixelType>::value, "InputPixelType must have NumericTraits");

Definition at line 43 of file itkConceptChecking.h.