5 #ifndef VCCC_CONCEPTS_DEREFERENCEABLE_HPP_
6 #define VCCC_CONCEPTS_DEREFERENCEABLE_HPP_
16 template<
typename T,
typename =
void>
17 struct dereferenceable_impl_3 : std::false_type {};
20 struct dereferenceable_impl_3<T,
void_t<decltype(*std::declval<T&>())>>
21 : is_referencable<decltype(*std::declval<T&>())> {};
25 template<
typename T,
bool = std::is_
void<std::remove_po
inter_t<std::remove_reference_t<T>>>::value >
26 struct dereferenceable_impl_2 : dereferenceable_impl_3<T> {};
29 struct dereferenceable_impl_2<T, true> : std::false_type {};
32 struct dereferenceable_impl_1 : dereferenceable_impl_2<T> {};
35 struct dereferenceable_impl_1<T, false> : std::false_type {};
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 dereferenced
Definition: dereferenceable.hpp:45