12345678910111213141516171819202122232425262728293031323334 |
- #pragma once
- #include <ATen/native/CompositeRandomAccessorCommon.h>
- namespace at { namespace native {
- struct TupleInfoCPU {
- template <typename ...Types>
- using tuple = std::tuple<Types...>;
- template <typename ...Types>
- static constexpr auto tie(Types&... args) noexcept {
- return std::tie(args...);
- }
- };
- template <typename KeyAccessor, typename ValueAccessor>
- using CompositeRandomAccessorCPU =
- CompositeRandomAccessor<KeyAccessor, ValueAccessor, TupleInfoCPU>;
- template <typename Values, typename References>
- void swap(
- references_holder<Values, References> rh1,
- references_holder<Values, References> rh2
- ) {
- return std::swap(rh1.data(), rh2.data());
- }
- template <int N, typename Values, typename References>
- auto get(references_holder<Values, References> rh) -> decltype(std::get<N>(rh.data())) {
- return std::get<N>(rh.data());
- }
- }} // namespace at::native
|