Phi
is_move_assignable.hpp
1 #ifndef INCG_PHI_CORE_TYPE_TRAITS_IS_MOVE_ASSIGNABLE_HPP
2 #define INCG_PHI_CORE_TYPE_TRAITS_IS_MOVE_ASSIGNABLE_HPP
3 
4 #include "phi/phi_config.hpp"
5 
6 #if PHI_HAS_EXTENSION_PRAGMA_ONCE()
7 # pragma once
8 #endif
9 
10 #include "phi/compiler_support/constexpr.hpp"
11 #include "phi/compiler_support/inline_variables.hpp"
12 #include "phi/type_traits/add_lvalue_reference.hpp"
13 #include "phi/type_traits/add_rvalue_reference.hpp"
14 #include "phi/type_traits/integral_constant.hpp"
15 #include "phi/type_traits/is_assignable.hpp"
16 
17 DETAIL_PHI_BEGIN_NAMESPACE()
18 
19 template <typename TypeT>
20 struct is_move_assignable : public is_assignable<typename add_lvalue_reference<TypeT>::type,
21  typename add_rvalue_reference<TypeT>::type>
22 {};
23 
24 template <typename TypeT>
25 struct is_not_move_assignable : public integral_constant<bool, !is_move_assignable<TypeT>::value>
26 {};
27 
28 #if PHI_HAS_FEATURE_VARIABLE_TEMPLATE()
29 
30 template <typename TypeT>
31 PHI_INLINE_VARIABLE PHI_CONSTEXPR bool is_move_assignable_v = is_move_assignable<TypeT>::value;
32 
33 template <typename TypeT>
34 PHI_INLINE_VARIABLE PHI_CONSTEXPR bool is_not_move_assignable_v =
36 
37 #endif
38 
39 DETAIL_PHI_END_NAMESPACE()
40 
41 #endif // INCG_PHI_CORE_TYPE_TRAITS_IS_MOVE_ASSIGNABLE_HPP
Definition: integral_constant.hpp:19
Definition: add_lvalue_reference.hpp:52
Definition: is_assignable.hpp:69
Definition: is_move_assignable.hpp:20
Definition: is_move_assignable.hpp:25
Definition: add_rvalue_reference.hpp:76