Program Listing for File assignable.hpp

Return to documentation for file (/tmp/ws/src/proxsuite/include/proxsuite/linalg/veg/type_traits/assignable.hpp)

#ifndef VEG_ASSIGNABLE_HPP_4ZNCRTO7S
#define VEG_ASSIGNABLE_HPP_4ZNCRTO7S

#include "proxsuite/linalg/veg/type_traits/core.hpp"
#include "proxsuite/linalg/veg/internal/prologue.hpp"

#if !VEG_HAS_BUILTIN(__is_trivially_assignable) ||                             \
  !VEG_HAS_BUILTIN(__is_assignable) ||                                         \
  !VEG_HAS_BUILTIN(__is_nothrow_assignable)
#include <type_traits>
#endif

namespace proxsuite {
namespace linalg {
namespace veg {
namespace concepts {

VEG_DEF_CONCEPT_FROM_BUILTIN_OR_STD((typename T, typename U), assignable, T, U);
VEG_DEF_CONCEPT_FROM_BUILTIN_OR_STD((typename T, typename U),
                                    nothrow_assignable,
                                    T&&,
                                    U&&);

VEG_DEF_CONCEPT_FROM_BUILTIN_OR_TRAIT(typename T,
                                      trivially_copy_assignable,
                                      is_trivially_assignable,
                                      T&,
                                      T const&);
VEG_DEF_CONCEPT_FROM_BUILTIN_OR_TRAIT(typename T,
                                      trivially_move_assignable,
                                      is_trivially_assignable,
                                      T&,
                                      T&&);

VEG_DEF_CONCEPT(typename T, move_assignable, VEG_CONCEPT(assignable<T&, T&&>));
VEG_DEF_CONCEPT(typename T,
                nothrow_move_assignable,
                VEG_CONCEPT(nothrow_assignable<T&, T&&>));

VEG_DEF_CONCEPT(typename T,
                copy_assignable,
                VEG_CONCEPT(assignable<T&, T const&>));
VEG_DEF_CONCEPT(typename T,
                nothrow_copy_assignable,
                VEG_CONCEPT(nothrow_assignable<T&, T const&>));

} // namespace concepts
} // namespace veg
} // namespace linalg
} // namespace proxsuite

#include "proxsuite/linalg/veg/internal/epilogue.hpp"
#endif /* end of include guard VEG_ASSIGNABLE_HPP_4ZNCRTO7S */