VCCC  2024.05
VisualCamp Common C++ library
copy_constructible.hpp
Go to the documentation of this file.
1 //
2 // Created by yonggyulee on 2023/12/24.
3 //
4 
5 #ifndef VCCC_CONCEPTS_COPY_CONSTRUCTIBLE_HPP_
6 #define VCCC_CONCEPTS_COPY_CONSTRUCTIBLE_HPP_
7 
13 
14 namespace vccc {
15 namespace detail {
16 
18 struct copy_constructible_impl
19  : conjunction<
20  move_constructible<T>,
21  constructible_from<T, T&>, convertible_to<T&, T>,
22  constructible_from<T, const T&>, convertible_to<const T&, T>,
23  constructible_from<T, const T>, convertible_to<const T, T>
24  > {};
25 
26 template<typename T>
27 struct copy_constructible_impl<T, false> : std::false_type {};
28 
29 } // namespace detail
30 
33 
54 template<typename T>
55 struct copy_constructible : detail::copy_constructible_impl<T> {};
56 
58 
59 } // namespace vccc
60 
61 #endif // VCCC_CONCEPTS_COPY_CONSTRUCTIBLE_HPP_
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
specifies that an object of a type can be copy constructed and move constructed
Definition: copy_constructible.hpp:55