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::*) ( ) > \
62 using EnforcerInstantiation = Enforcer< & Constraints::constraints >;
63 #define itkConceptMacro(name, concept) enum { name = sizeof concept }
65 #elif defined( ITK_CONCEPT_IMPLEMENTATION_VTABLE )
72 #define itkConceptConstraintsMacro() \
73 virtual void Enforcer() { &Constraints::constraints; }
74 #define itkConceptMacro(name, concept) enum { name = sizeof concept }
77 #elif defined( ITK_CONCEPT_IMPLEMENTATION_CALL )
80 #define itkConceptConstraintsMacro()
81 #define itkConceptMacro(name, concept) enum { name = 0 }
86 #define itkConceptConstraintsMacro()
87 #define itkConceptMacro(name, concept) enum { name = 0 }
107 template<
typename T >
111 template<
unsigned int >
121 template<
typename T >
129 template<
typename T >
139 template<
typename T >
154 template<
typename T >
183 template<
typename T1,
typename T2 >
188 auto b =
static_cast< T2
>(
a );
199 template<
typename T >
222 template<
typename T1,
typename T2 = T1 >
241 template<
typename T1,
typename T2 = T1 >
260 template<
typename T1,
typename T2 = T1 >
266 CLANG_SUPPRESS_Wfloat_equal
282 template<
typename T1,
typename T2 = T1 >
292 CLANG_SUPPRESS_Wfloat_equal
308 template<
typename T1,
typename T2 = T1,
typename T3 = T1 >
313 a =
static_cast< T3
>(
b +
c );
314 a =
static_cast< T3
>(
b -
c );
321 a =
static_cast< T3
>( d +
e );
322 a =
static_cast< T3
>( d -
e );
336 template<
typename T1,
typename T2 = T1>
361 template<
typename T1,
typename T2 = T1,
typename T3 = T1 >
366 a =
static_cast< T3
>(
b *
c );
373 a =
static_cast< T3
>( d *
e );
384 template<
typename T1,
typename T2 = T1 >
407 template<
typename T1,
typename T2 = T1,
typename T3 = T1 >
412 a =
static_cast< T3
>(
b /
c );
419 a =
static_cast< T3
>( d /
e );
432 template<
typename T1,
typename T2 = T1 >
457 template<
typename T1,
typename T2 = T1,
typename T3 = T1 >
462 a =
static_cast< T3
>(
b &
c );
463 a =
static_cast< T3
>(
b |
c );
464 a =
static_cast< T3
>(
b ^
c );
465 a &=
static_cast< T3
>(
c );
466 a |=
static_cast< T3
>(
c );
467 a ^=
static_cast< T3
>(
c );
474 a =
static_cast< T3
>( d &
e );
475 a =
static_cast< T3
>( d |
e );
476 a =
static_cast< T3
>( d ^
e );
477 a &=
static_cast< T3
>(
e );
478 a |=
static_cast< T3
>(
e );
479 a ^=
static_cast< T3
>(
e );
491 template<
typename T1,
typename T2 = T1,
typename T3 = T1 >
496 a =
static_cast< T3
>(
b[
c] );
503 a =
static_cast< T3
>( d[
e] );
515 template<
typename T >
530 template<
typename T >
548 template<
typename T >
563 template<
typename T >
583 template<
typename T1,
typename T2 >
597 template<
unsigned int D1,
unsigned int D2 >
614 template<
typename T >
649 template<
typename T >
665 template<
typename T >
679 template<
typename T >
695 template<
typename T1,
typename T2 >
709 template<
unsigned int D1,
unsigned int D2 >
728 template<
unsigned int D1,
unsigned int D2 >
749 template<
typename T >
770 template<
typename T >
791 template<
typename T >
811 template<
typename T >
815 static constexpr
bool IsExact = std::numeric_limits< typename NumericTraits< T >::ValueType >::is_exact;
835 template<
typename T >
839 static constexpr
bool IsExact = std::numeric_limits< typename NumericTraits< T >::ValueType >::is_exact;
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
static constexpr bool Integral
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
void const_constraints(const T1 &d)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
static constexpr bool IsExact
void const_constraints(const T1 &d, const T2 &e)
itkConceptConstraintsMacro()
void f(Type3, int=0, int=0)
Detail::UniqueType_unsigned_int< D2 > DT2
Define numeric traits for std::vector.
itkConceptConstraintsMacro()
void const_constraints(const T1 &d, const T2 &e)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
void const_constraints(const T1 &d)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
static constexpr bool IsExact
void const_constraints(const T1 &d)
itkConceptConstraintsMacro()
Detail::UniqueType_bool< false > FalseT
void const_constraints(const T1 &d, const T2 &e)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
Traits for a pixel that define the dimension and component type.
Detail::UniqueType_bool< true > TrueT
void RequireBooleanExpression(const T &t)
Detail::UniqueType_bool< false > FalseT
Detail::UniqueType_bool< true > TrueT
Detail::UniqueType_bool< true > TrueT
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
static constexpr bool Integral
itkConceptConstraintsMacro()
void IgnoreUnusedVariable(T)
void const_constraints(const T &a)
itkConceptConstraintsMacro()
void const_constraints(const T1 &d, const T2 &e)
void const_constraints(const T &b)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
void const_constraints(const T1 &d, const T2 &e)
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
static constexpr bool Integral
static constexpr double e
The base of the natural logarithm or Euler's number
static constexpr bool NonIntegral
itkConceptConstraintsMacro()
static constexpr bool Unsigned
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
Detail::UniqueType_bool< true > TrueT
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()
Detail::UniqueType_bool< false > FalseT
static constexpr bool IsSigned
itkConceptConstraintsMacro()
itkConceptConstraintsMacro()