// // Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2020 // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // #pragma once #include "td/utils/int_types.h" #include namespace td { template struct member_function_class; template struct member_function_class { using type = Type; static constexpr size_t argument_count() { return sizeof...(Args); } }; template using member_function_class_t = typename member_function_class::type; template constexpr size_t member_function_argument_count() { return member_function_class::argument_count(); } // no std::is_trivially_copyable in libstdc++ before 5.0 #if __GLIBCXX__ #define TD_IS_TRIVIALLY_COPYABLE(T) __has_trivial_copy(T) #else #define TD_IS_TRIVIALLY_COPYABLE(T) ::std::is_trivially_copyable::value #endif } // namespace td