20 #ifndef __TPIE_STREAM_WRITABLE_H__
21 #define __TPIE_STREAM_WRITABLE_H__
22 #include <type_traits>
43 template <
typename TT>
44 static char magic(
typename TT::trivially_copyable*);
46 template <
typename TT>
47 static char magic(
typename TT::stream_writable*);
49 template <
typename TT>
50 static long magic(...);
52 static bool const value=
sizeof(magic<T>((std::true_type*)
nullptr))==
sizeof(
char);
55 template <
typename ... TT>
61 template <
typename T1,
typename T2,
typename ... TT>
63 std::integral_constant<bool, is_stream_writable<T1>::value && is_stream_writable<T2, TT...>::value> {};
67 std::integral_constant<bool, std::is_trivially_copyable<T>::value || is_stream_writable_override<T>::value> {};
69 template <
typename T1,
typename T2>
72 template <
typename ... TT>
76 #endif //__TPIE_STREAM_WRITABLE_H__