20 #ifndef __TPIE_STREAM_WRITABLE_H__
21 #define __TPIE_STREAM_WRITABLE_H__
22 #include <type_traits>
46 template <
typename TT>
47 static char magic(
typename TT::trivially_copyable*);
49 template <
typename TT>
50 static char magic(
typename TT::stream_writable*);
52 template <
typename TT>
53 static long magic(...);
55 static bool const value=
sizeof(magic<T>((std::true_type*)
nullptr))==
sizeof(
char);
58 template <
typename ... TT>
64 template <
typename T1,
typename T2,
typename ... TT>
66 std::integral_constant<bool, is_stream_writable<T1>::value && is_stream_writable<T2, TT...>::value> {};
70 std::integral_constant<bool, std::is_trivially_copyable<T>::value || is_stream_writable_override<T>::value> {};
72 template <
typename T1,
typename T2>
75 template <
typename ... TT>
79 #endif //__TPIE_STREAM_WRITABLE_H__