6 # ifndef VCCC_OPTIONAL_INTERNAL_CHECK_OVERLOAD_H_
7 # define VCCC_OPTIONAL_INTERNAL_CHECK_OVERLOAD_H_
9 # include <type_traits>
17 struct check_copy_constructible {};
19 struct check_copy_constructible<T, false> {
20 check_copy_constructible() =
default;
21 check_copy_constructible(check_copy_constructible
const&) =
delete;
22 check_copy_constructible(check_copy_constructible &&) =
default;
23 check_copy_constructible& operator=(check_copy_constructible
const&) =
default;
24 check_copy_constructible& operator=(check_copy_constructible &&) =
default;
28 struct check_move_constructible {};
30 struct check_move_constructible<T, false> {
31 check_move_constructible() =
default;
32 check_move_constructible(check_move_constructible
const&) =
default;
33 check_move_constructible(check_move_constructible &&) =
delete;
34 check_move_constructible& operator=(check_move_constructible
const&) =
default;
35 check_move_constructible& operator=(check_move_constructible &&) =
default;
39 struct check_copy_assignable {};
41 struct check_copy_assignable<T, false> {
42 check_copy_assignable() =
default;
43 check_copy_assignable(check_copy_assignable
const&) =
default;
44 check_copy_assignable(check_copy_assignable &&) =
default;
45 check_copy_assignable& operator=(check_copy_assignable
const&) =
delete;
46 check_copy_assignable& operator=(check_copy_assignable &&) =
default;
50 struct check_move_assignable {};
52 struct check_move_assignable<T, false> {
53 check_move_assignable() =
default;
54 check_move_assignable(check_move_assignable
const&) =
default;
55 check_move_assignable(check_move_assignable &&) =
default;
56 check_move_assignable& operator=(check_move_assignable
const&) =
default;
57 check_move_assignable& operator=(check_move_assignable &&) =
delete;
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35