5 # ifndef VCCC_LOG_DETAIL_C_PRINTABLE_HPP
6 # define VCCC_LOG_DETAIL_C_PRINTABLE_HPP
8 # include <type_traits>
16 struct can_decay_to_scalar_impl : std::conditional<std::is_scalar<T>::value || std::is_array<T>::value,
17 std::true_type, std::false_type>::type {};
19 template<
typename ...Ts>
20 struct can_decay_to_scalar : conjunction<can_decay_to_scalar_impl<Ts>...> {};
22 template<
typename ...Ts>
23 using can_decay_to_scalar_t =
typename can_decay_to_scalar<Ts...>::type;
25 template<
typename ...>
26 struct are_types_c_printable : std::false_type {};
30 struct are_types_c_printable<T> : std::false_type {};
32 template<
typename T,
typename ...Ts>
33 struct are_types_c_printable<T, Ts...>
34 : std::integral_constant<bool,
35 (std::is_same<char *, std::decay_t<T>>::value || std::is_same<const char*, std::decay_t<T>>::value) &&
36 can_decay_to_scalar<Ts...>::value> {};
38 template<
typename ...Ts>
39 using are_types_c_printable_t =
typename are_types_c_printable<Ts...>::type;
Definition: directory.h:12