123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #ifndef BASE_THREADING_SEQUENCE_BOUND_INTERNAL_H_
- #define BASE_THREADING_SEQUENCE_BOUND_INTERNAL_H_
- #include <tuple>
- #include "base/compiler_specific.h"
- namespace base {
- namespace internal {
- template <typename MethodPtrType>
- struct MethodTraits;
- template <typename R, typename T, typename... Args>
- struct MethodTraits<R (T::*)(Args...)> {
- using ReturnType = R;
- using ArgsTuple = std::tuple<Args...>;
- };
- template <typename R, typename T, typename... Args>
- struct MethodTraits<R (T::*)(Args...) const> {
- using ReturnType = R;
- using ArgsTuple = std::tuple<Args...>;
- };
- template <typename MethodPtrType>
- using ExtractMethodReturnType =
- typename MethodTraits<MethodPtrType>::ReturnType;
- template <typename MethodPtrType>
- using ExtractMethodArgsTuple = typename MethodTraits<MethodPtrType>::ArgsTuple;
- }
- }
- #endif
|