// SPDX-FileCopyrightText: Copyright (c) 2008-2013, NVIDIA Corporation. All rights reserved. // SPDX-License-Identifier: Apache-2.0 /*! \file pair.h * \brief A type encapsulating a heterogeneous pair of elements */ #pragma once #include #if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC) # pragma GCC system_header #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG) # pragma clang system_header #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC) # pragma system_header #endif // no system header #include #include #include #include THRUST_NAMESPACE_BEGIN /*! \addtogroup utility * \{ */ /*! \addtogroup pair * \{ */ // Documented in tuple.h — only declared here for compatibility with pair users. using ::cuda::std::tuple_element; using ::cuda::std::tuple_size; /*! \p pair is a generic data structure encapsulating a heterogeneous * pair of values. * * \tparam T1 The type of \p pair's first object type. There are no * requirements on the type of \p T1. T1's type is * provided by pair::first_type. * * \tparam T2 The type of \p pair's second object type. There are no * requirements on the type of \p T2. T2's type is * provided by pair::second_type. * * \verbatim embed:rst:leading-asterisk * .. versionadded:: 2.2.0 * \endverbatim */ #ifdef _CCCL_DOXYGEN_INVOKED // Provide a fake alias for doxygen template using pair = ::cuda::std::pair; #else // ^^^ _CCCL_DOXYGEN_INVOKED ^^^ / vvv !_CCCL_DOXYGEN_INVOKED vvv using ::cuda::std::pair; #endif // _CCCL_DOXYGEN_INVOKED using ::cuda::std::get; using ::cuda::std::make_pair; /*! \} // pair */ /*! \} // utility */ THRUST_NAMESPACE_END