5 #ifndef VCCC_CONCEPTS_COMMON_WITH_HPP_
6 #define VCCC_CONCEPTS_COMMON_WITH_HPP_
24 same_as< common_type_t<T, U>, common_type_t<U, T> >,
26 common_reference<std::add_lvalue_reference_t<const T>,
27 std::add_lvalue_reference_t<const U>> >
30 struct common_with_impl_2 : std::false_type {};
32 template<
typename T,
typename U>
33 struct common_with_impl_2<T, U, true>
35 std::is_constructible< common_type_t<T, U>, decltype(std::declval<T>()) >,
36 std::is_constructible< common_type_t<T, U>, decltype(std::declval<U>()) >,
37 common_reference_with<
38 std::add_lvalue_reference_t<const T>,
39 std::add_lvalue_reference_t<const U>>,
40 common_reference_with<
41 std::add_lvalue_reference_t<common_type_t<T, U>>,
43 std::add_lvalue_reference_t<const T>,
44 std::add_lvalue_reference_t<const U>
53 bool = conjunction<has_typename_type< common_type<T, U> >,
54 has_typename_type< common_type<U, T> >
57 struct common_with_impl_1 : common_with_impl_2<T, U> {};
59 template<
typename T,
typename U>
60 struct common_with_impl_1<T, U, false> : std::false_type {};
78 template<
typename T,
typename U>
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
specifies that two types share a common type
Definition: common_with.hpp:79