Traits.h cstdint type_traits utility Common.h InputArchive.h InputArchive.h OutputArchive.h OutputArchive.h terse::traits::sink terse::traits::needs_allocator terse::traits::needs_allocator< T, typename sink< typename T::allocator_type, decltype(std::declval< T >().get_allocator())>::type > terse::traits::true_sink terse::traits::has_serialize_member terse::traits::has_load_member terse::traits::has_save_member terse::traits::has_reserve_member terse::traits::has_push_back_member terse::traits::has_serialize_function terse::traits::has_load_function terse::traits::has_save_function terse::traits::has_wide_elements terse::traits::is_pair terse::traits::is_pair< std::pair< K, V > > terse::traits::is_tuple terse::traits::is_tuple< std::tuple< K, V > > terse terse::traits //CopyrightEpicGames,Inc.AllRightsReserved. #pragmaonce #ifdef_MSC_VER #pragmawarning(push) #pragmawarning(disable:43654987) #endif #include<cstdint> #include<type_traits> #include<utility> #ifdef_MSC_VER #pragmawarning(pop) #endif static_assert(sizeof(char)==1ul,"Unsupportedplatform,charisnot8-bitswide."); namespaceterse{ namespacetraits{ template<typename...> structsink{ usingtype=void; }; template<typenameT,typename=void> structneeds_allocator:std::false_type{}; template<typenameT> structneeds_allocator<T,typenamesink<typenameT::allocator_type, decltype(std::declval<T>().get_allocator())>::type>:std::true_type{}; template<class> structtrue_sink:std::true_type{}; //Serializermemberfunctions template<classT> staticautotest_serialize_member(std::int32_t)->true_sink<decltype(std::declval<T>().serialize(std::declval<T&>()))>; template<class> staticautotest_serialize_member(std::uint32_t)->std::false_type; template<classT> structhas_serialize_member:decltype(test_serialize_member<T>(0)){}; template<classT> staticautotest_load_member(std::int32_t)->true_sink<decltype(std::declval<T>().load(std::declval<T&>()))>; template<class> staticautotest_load_member(std::uint32_t)->std::false_type; template<classT> structhas_load_member:decltype(test_load_member<T>(0)){}; template<classT> staticautotest_save_member(std::int32_t)->true_sink<decltype(std::declval<T>().save(std::declval<T&>()))>; template<class> staticautotest_save_member(std::uint32_t)->std::false_type; template<classT> structhas_save_member:decltype(test_save_member<T>(0)){}; template<classTContainer> staticautotest_reserve_member(std::int32_t)->true_sink<decltype(std::declval<TContainer>().reserve(0u))>; template<class> staticautotest_reserve_member(std::uint32_t)->std::false_type; template<classT> structhas_reserve_member:decltype(test_reserve_member<T>(0)){}; template<classTContainer> staticautotest_push_back_member(std::int32_t)->true_sink<decltype(std::declval<TContainer>().push_back( std::declval<typenameTContainer::value_type>()))>; template<class> staticautotest_push_back_member(std::uint32_t)->std::false_type; template<classT> structhas_push_back_member:decltype(test_push_back_member<T>(0)){}; //Serializerfreefunctions template<classT> staticautotest_serialize_function(std::int32_t)->true_sink<decltype(serialize(std::declval<T&>(),std::declval<T&>()))>; template<class> staticautotest_serialize_function(std::uint32_t)->std::false_type; template<classT> structhas_serialize_function:decltype(test_serialize_function<T>(0)){}; template<classT> staticautotest_load_function(std::int32_t)->true_sink<decltype(load(std::declval<T&>(),std::declval<T&>()))>; template<class> staticautotest_load_function(std::uint32_t)->std::false_type; template<classT> structhas_load_function:decltype(test_load_function<T>(0)){}; template<classT> staticautotest_save_function(std::int32_t)->true_sink<decltype(save(std::declval<T&>(),std::declval<T&>()))>; template<class> staticautotest_save_function(std::uint32_t)->std::false_type; template<classT> structhas_save_function:decltype(test_save_function<T>(0)){}; template<typenameTContainer> usingis_batchable=std::is_scalar<typenameTContainer::value_type>; template<typenameTContainer> structhas_wide_elements{ staticconstexprboolvalue=(sizeof(typenameTContainer::value_type)>1ul); }; template<typenameT> structis_pair:publicstd::false_type{}; template<typenameK,typenameV> structis_pair<std::pair<K, V>>:publicstd::true_type{}; template<typenameT> structis_tuple:publicstd::false_type{}; template<typenameK,typenameV> structis_tuple<std::tuple<K,V>>:publicstd::true_type{}; }//namespacetraits }//namespaceterse