28#ifndef itkConceptChecking_h
29#define itkConceptChecking_h
36#ifndef ITK_CONCEPT_NO_CHECKING
37# if defined(_MSC_VER) && !defined(__ICL)
38# define ITK_CONCEPT_IMPLEMENTATION_VTABLE
42# define ITK_CONCEPT_IMPLEMENTATION_STANDARD
47#if defined(ITK_CONCEPT_IMPLEMENTATION_STANDARD)
59# define itkConceptConstraintsMacro() \
60 template <void (Constraints::*)()> \
63 using EnforcerInstantiation = Enforcer<&Constraints::constraints>; \
64 ITK_MACROEND_NOOP_STATEMENT
65# define itkConceptMacro(name, concept) \
68 name = sizeof concept \
70 ITK_MACROEND_NOOP_STATEMENT
72#elif defined(ITK_CONCEPT_IMPLEMENTATION_VTABLE)
80# define itkConceptConstraintsMacro() \
81 virtual void Enforcer() { &Constraints::constraints; }
82# define itkConceptMacro(name, concept) \
85 name = sizeof concept \
88#elif defined(ITK_CONCEPT_IMPLEMENTATION_CALL)
91# define itkConceptConstraintsMacro()
92# define itkConceptMacro(name, concept) \
101# define itkConceptConstraintsMacro()
102# define itkConceptMacro(name, concept) \
132template <
unsigned int>
215template <
typename T1,
typename T2>
223 auto b =
static_cast<T2
>(
a);
260template <
typename T1,
typename T2 = T1>
281template <
typename T1,
typename T2 = T1>
302template <
typename T1,
typename T2 = T1>
311 ITK_GCC_SUPPRESS_Wfloat_equal
326template <
typename T1,
typename T2 = T1>
339 ITK_GCC_SUPPRESS_Wfloat_equal
354template <
typename T1,
typename T2 = T1,
typename T3 = T1>
362 a =
static_cast<T3
>(
b +
c);
363 a =
static_cast<T3
>(
b -
c);
370 a =
static_cast<T3
>(d + e);
371 a =
static_cast<T3
>(d - e);
385template <
typename T1,
typename T2 = T1>
413template <
typename T1,
typename T2 = T1,
typename T3 = T1>
421 a =
static_cast<T3
>(
b *
c);
428 a =
static_cast<T3
>(d * e);
439template <
typename T1,
typename T2 = T1>
465template <
typename T1,
typename T2 = T1,
typename T3 = T1>
473 a =
static_cast<T3
>(
b /
c);
480 a =
static_cast<T3
>(d / e);
493template <
typename T1,
typename T2 = T1>
521template <
typename T1,
typename T2 = T1,
typename T3 = T1>
529 a =
static_cast<T3
>(
b &
c);
530 a =
static_cast<T3
>(
b |
c);
531 a =
static_cast<T3
>(
b ^
c);
532 a &=
static_cast<T3
>(
c);
533 a |=
static_cast<T3
>(
c);
534 a ^=
static_cast<T3
>(
c);
541 a =
static_cast<T3
>(d & e);
542 a =
static_cast<T3
>(d | e);
543 a =
static_cast<T3
>(d ^ e);
544 a &=
static_cast<T3
>(e);
545 a |=
static_cast<T3
>(e);
546 a ^=
static_cast<T3
>(e);
558template <
typename T1,
typename T2 = T1,
typename T3 = T1>
566 a =
static_cast<T3
>(
b[
c]);
573 a =
static_cast<T3
>(d[e]);
664template <
typename T1,
typename T2>
680template <
unsigned int D1,
unsigned int D2>
790template <
typename T1,
typename T2>
806template <
unsigned int D1,
unsigned int D2>
832template <
unsigned int D1,
unsigned int D2>
866 static constexpr bool Integral = std::is_integral_v<T>;
934 static constexpr bool Integral = std::is_integral_v<T>;
935 static constexpr bool IsExact = std::numeric_limits<typename NumericTraits<T>::ValueType>::is_exact;
960 static constexpr bool Integral = std::is_integral_v<T>;
961 static constexpr bool IsExact = std::numeric_limits<typename NumericTraits<T>::ValueType>::is_exact;
Define additional traits for native types such as int or float.
static bool IsNegative(T val)
static constexpr T NonpositiveMin()
static bool IsPositive(T val)
static bool IsNonpositive(T val)
static bool IsNonnegative(T val)
static constexpr unsigned int Dimension
void RequireBooleanExpression(const T &t)
void IgnoreUnusedVariable(T)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
void const_constraints(const T1 &d)
itkConceptConstraintsMacro()
void const_constraints(const T1 &d, const T2 &e)
itkConceptConstraintsMacro()
void const_constraints(const T &b)
itkConceptConstraintsMacro()
void const_constraints(const T1 &d, const T2 &e)
itkConceptConstraintsMacro()
void const_constraints(const T1 &d, const T2 &e)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
void const_constraints(const T &a)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
void const_constraints(const T1 &d)
itkConceptConstraintsMacro()
void const_constraints(const T1 &d, const T2 &e)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
Detail::UniqueType_bool< Self::IsExact > ExactT
Detail::UniqueType_bool< Self::Integral > IntegralT
Detail::UniqueType_bool< true > TrueT
Detail::UniqueType_bool< false > FalseT
static constexpr bool IsExact
static constexpr bool Integral
itkConceptConstraintsMacro()
Detail::UniqueType_bool< Self::IsExact > ExactT
Detail::UniqueType_bool< false > FalseT
Detail::UniqueType_bool< Self::Integral > IntegralT
static constexpr bool Integral
itkConceptConstraintsMacro()
static constexpr bool IsExact
Detail::UniqueType_bool< true > TrueT
Detail::UniqueType_bool< Self::Integral > IntegralT
static constexpr bool Integral
itkConceptConstraintsMacro()
Detail::UniqueType_bool< false > FalseT
Detail::UniqueType_bool< Self::NonIntegral > NonIntegralT
itkConceptConstraintsMacro()
static constexpr bool NonIntegral
Detail::UniqueType_bool< Self::Unsigned > UnsignedT
Detail::UniqueType_bool< true > TrueT
static constexpr bool Unsigned
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
void const_constraints(const T1 &d)
itkConceptConstraintsMacro()
void const_constraints(const T1 &d, const T2 &e)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
void f(Type3, int=0, int=0)
Detail::UniqueType_unsigned_int< D1 > Type1
Detail::UniqueType_unsigned_int< D1 - 1 > Type2
Detail::UniqueType_unsigned_int< D1 - 2 > Type3
itkConceptConstraintsMacro()
Detail::UniqueType_unsigned_int< D1 > Type1
Detail::UniqueType_unsigned_int< D1 - 1 > Type2
itkConceptConstraintsMacro()
Detail::UniqueType_unsigned_int< D2 > DT2
Detail::UniqueType_unsigned_int< D1 > DT1
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
Detail::UniqueType_bool< Self::IsSigned > SignedT
Detail::UniqueType_bool< true > TrueT
static constexpr bool IsSigned
itkConceptConstraintsMacro()