Backport
tuple.hpp File Reference

This header provides definitions from the C++ header <tuple> More...

#include "type_traits.hpp"
#include "utility.hpp"
#include "functional.hpp"
#include <tuple>
#include <cstddef>
+ Include dependency graph for tuple.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

template<typename... Types>
using bpstd::tuple = std::tuple< Types... >
 
template<std::size_t I, typename T >
using bpstd::tuple_element = std::tuple_element< I, T >
 
template<std::size_t I, typename T >
using bpstd::tuple_element_t = typename tuple_element< I, T >::type
 
template<typename T >
using bpstd::tuple_size = std::tuple_size< T >
 
template<typename Fn , typename Tuple >
using bpstd::detail::apply_result_t = typename apply_result< Fn, Tuple >::type
 

Functions

template<std::size_t N, typename Tuple , typename = enable_if_t<detail::is_tuple<remove_cvref_t<Tuple>>::value && is_lvalue_reference<Tuple>::value>>
BPSTD_INLINE_VISIBILITY BPSTD_CPP14_CONSTEXPR tuple_element_t< N, remove_reference_t< Tuple > > & bpstd::get (Tuple &&t) noexcept
 
template<std::size_t N, typename Tuple , typename = enable_if_t<detail::is_tuple<remove_cvref_t<Tuple>>::value && !is_lvalue_reference<Tuple>::value>>
BPSTD_INLINE_VISIBILITY BPSTD_CPP14_CONSTEXPR tuple_element_t< N, remove_reference_t< Tuple > > && bpstd::get (Tuple &&t) noexcept
 
template<typename T , typename... Types>
BPSTD_CPP14_CONSTEXPR T & bpstd::get (tuple< Types... > &t) noexcept
 
template<typename T , typename... Types>
BPSTD_CPP14_CONSTEXPR T && bpstd::get (tuple< Types... > &&t) noexcept
 
template<typename T , typename... Types>
const BPSTD_CPP14_CONSTEXPR T & bpstd::get (const tuple< Types... > &t) noexcept
 
template<typename T , typename... Types>
const BPSTD_CPP14_CONSTEXPR T && bpstd::get (const tuple< Types... > &&t) noexcept
 
template<typename Fn , typename Tuple >
constexpr detail::apply_result_t< Fn, Tuple > bpstd::apply (Fn &&fn, Tuple &&tuple)
 Invokes the function fn using the arguments in tuple. More...
 
template<typename T , typename Tuple >
constexpr T bpstd::make_from_tuple (Tuple &&tuple)
 Constructs a type T using the arguments in tuple. More...
 
template<typename Fn , typename Tuple , std::size_t... I>
constexpr BPSTD_INLINE_VISIBILITY apply_result_t< Fn, Tuple > bpstd::detail::apply_impl (Fn &&fn, Tuple &&tuple, index_sequence< I... >)
 
template<typename T , typename Tuple , std::size_t... I>
constexpr BPSTD_INLINE_VISIBILITY T bpstd::detail::make_from_tuple_impl (Tuple &&tuple, index_sequence< I... >)
 

Detailed Description

This header provides definitions from the C++ header <tuple>

Definition in file tuple.hpp.

Function Documentation

◆ apply()

template<typename Fn , typename Tuple >
constexpr detail::apply_result_t<Fn, Tuple> bpstd::apply ( Fn &&  fn,
Tuple &&  tuple 
)
constexpr

Invokes the function fn using the arguments in tuple.

This invokes fn as if it were a call to bpstd::invoke using the arguments in tuple

Parameters
fnthe function to invoke
tuplethe tuple of arguments to pass to fn
Returns
the result from fn

◆ make_from_tuple()

template<typename T , typename Tuple >
constexpr T bpstd::make_from_tuple ( Tuple &&  tuple)
constexpr

Constructs a type T using the arguments in tuple.

Template Parameters
Tthe type to construct
Parameters
tuplethe tuple of arguments to pass to T's constructor