11#ifndef TLX_LOGGER_WRAP_UNPRINTABLE_HEADER
12#define TLX_LOGGER_WRAP_UNPRINTABLE_HEADER
22template <
typename,
typename =
void>
24{
static constexpr bool value =
false; };
26template <
typename Type>
29 std::declval<std::ostream&>() << std::declval<Type const&>(), void())>
30{
static constexpr bool value =
true; };
34template <
typename Type>
42template <
typename Type>
43typename enable_if<has_ostream_operator<Type>::value, Type>::type
50template <
typename Type>
51typename enable_if<!has_ostream_operator<Type>::value,
const char*>::type
52wrap_unp(Type,
const char* instead =
"<unprintable>") {
58template <
typename Type>
59typename enable_if<has_ostream_operator<Type>::value, Type>::type
enable_if<!has_ostream_operator< Type >::value, constchar * >::type wrap_unp(Type, const char *instead="<unprintable>")
SFINAE magic to return "<unprintable>" instead if the value HAS NO ostream operator << available.
enable_if<!has_ostream_operator< Type >::value, constchar * >::type wrap_unprintable(Type, const char *instead="<unprintable>")
SFINAE magic to return "<unprintable>" instead if the value HAS NO ostream operator << available.
SFINAE enable_if – copy of std::enable_if<> with less extra cruft.
static constexpr bool value
SFINAE magic helper for wrap_unprintable()
static constexpr bool value