template <class T>
auto foo(T x) { ... };
namespace impl {
template<typename T>
struct is_streamable<T, std::void_t<decltype(std::declval<std::wostream &>() << std::declval<T>())>> : std::true_type { };
}
template<class T, class = std::enable_if_t<!impl::is_streamable_v<const T &> && std::is_convertible_v<const T &, std::wstring_view>>>
std::wostream &operator <<(std::wostream &stream, const T &thing)
{
return stream << static_cast<std::wstring_view>(thing);
}
enum struct DataHolder { };
enum class DataThingy { };
enum class Boolean : char {
True, False, FileNotFound
};
union Soy
{
};