Program Listing for File primitives.hpp
↰ Return to documentation for file (/tmp/ws/src/proxsuite/include/proxsuite/linalg/veg/type_traits/primitives.hpp
)
#ifndef VEG_PRIMITIVES_HPP_A8O6GDV1S
#define VEG_PRIMITIVES_HPP_A8O6GDV1S
#include "proxsuite/linalg/veg/type_traits/core.hpp"
#include "proxsuite/linalg/veg/internal/prologue.hpp"
#if !VEG_HAS_BUILTIN(__is_integral) || \
!VEG_HAS_BUILTIN(__is_floating_point) || !(VEG_HAS_BUILTIN(__is_enum))
#include <type_traits>
#endif
namespace proxsuite {
namespace linalg {
namespace veg {
namespace concepts {
namespace aux {
VEG_DEF_CONCEPT(typename T, no_wraps_around, (T(-1) <= T(0)));
VEG_DEF_CONCEPT(typename T, wraps_around, (T(-1) > T(0)));
} // namespace aux
VEG_DEF_CONCEPT(typename T,
enum_type,
VEG_HAS_BUILTIN_OR(__is_enum,
__is_enum(T),
std::is_enum<T>::value));
VEG_DEF_CONCEPT_FROM_BUILTIN_OR_STD(typename T, integral, T);
VEG_DEF_CONCEPT_FROM_BUILTIN_OR_STD(typename T, floating_point, T);
VEG_DEF_CONCEPT_DISJUNCTION(typename T,
arithmetic,
((, integral<T>), (, floating_point<T>)));
VEG_DEF_CONCEPT_CONJUNCTION(typename T,
signed_integral,
((, integral<T>), (aux::, no_wraps_around<T>)));
VEG_DEF_CONCEPT_CONJUNCTION(typename T,
unsigned_integral,
((, integral<T>), (aux::, wraps_around<T>)));
} // namespace concepts
} // namespace veg
} // namespace linalg
} // namespace proxsuite
#include "proxsuite/linalg/veg/internal/epilogue.hpp"
#endif /* end of include guard VEG_PRIMITIVES_HPP_A8O6GDV1S */