proxsuite 0.7.1
The Advanced Proximal Optimization Toolbox
Loading...
Searching...
No Matches
assignable.hpp
Go to the documentation of this file.
1#ifndef VEG_ASSIGNABLE_HPP_4ZNCRTO7S
2#define VEG_ASSIGNABLE_HPP_4ZNCRTO7S
3
6
7#if !VEG_HAS_BUILTIN(__is_trivially_assignable) || \
8 !VEG_HAS_BUILTIN(__is_assignable) || \
9 !VEG_HAS_BUILTIN(__is_nothrow_assignable)
10#include <type_traits>
11#endif
12
13namespace proxsuite {
14namespace linalg {
15namespace veg {
16namespace concepts {
17
18VEG_DEF_CONCEPT_FROM_BUILTIN_OR_STD((typename T, typename U), assignable, T, U);
19VEG_DEF_CONCEPT_FROM_BUILTIN_OR_STD((typename T, typename U),
20 nothrow_assignable,
21 T&&,
22 U&&);
23
25 trivially_copy_assignable,
26 is_trivially_assignable,
27 T&,
28 T const&);
30 trivially_move_assignable,
31 is_trivially_assignable,
32 T&,
33 T&&);
34
35VEG_DEF_CONCEPT(typename T, move_assignable, VEG_CONCEPT(assignable<T&, T&&>));
36VEG_DEF_CONCEPT(typename T,
37 nothrow_move_assignable,
38 VEG_CONCEPT(nothrow_assignable<T&, T&&>));
39
40VEG_DEF_CONCEPT(typename T,
41 copy_assignable,
42 VEG_CONCEPT(assignable<T&, T const&>));
43VEG_DEF_CONCEPT(typename T,
44 nothrow_copy_assignable,
45 VEG_CONCEPT(nothrow_assignable<T&, T const&>));
46
47} // namespace concepts
48} // namespace veg
49} // namespace linalg
50} // namespace proxsuite
51
53#endif /* end of include guard VEG_ASSIGNABLE_HPP_4ZNCRTO7S */
#define VEG_CONCEPT(...)
Definition macros.hpp:1241
#define VEG_DEF_CONCEPT(Tpl, Name,...)
Definition macros.hpp:321
#define VEG_DEF_CONCEPT_FROM_BUILTIN_OR_TRAIT(Tpl, Trait, Std_Trait,...)
Definition prologue.hpp:40
#define VEG_DEF_CONCEPT_FROM_BUILTIN_OR_STD(Tpl, Trait,...)
Definition prologue.hpp:50