tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
apply.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2// SPDX-FileCopyrightText: Copyright (C) 2021 Tobias Hienzsch
3
4#ifndef TETL_TUPLE_APPLY_HPP
5#define TETL_TUPLE_APPLY_HPP
6
7#include <etl/_functional/invoke.hpp>
8#include <etl/_tuple/tuple.hpp>
9#include <etl/_tuple/tuple_size.hpp>
10#include <etl/_type_traits/remove_reference.hpp>
11#include <etl/_utility/forward.hpp>
12#include <etl/_utility/index_sequence.hpp>
13
14namespace etl {
15
16template <typename F, typename Tuple>
17constexpr auto apply(F&& f, Tuple&& t) -> decltype(auto)
18{
19 return [&]<etl::size_t... I>(etl::index_sequence<I...> /*i*/) -> decltype(auto) {
20 return etl::invoke(etl::forward<F>(f), etl::get<I>(etl::forward<Tuple>(t))...);
21 }(etl::make_index_sequence<etl::tuple_size_v<etl::remove_reference_t<Tuple>>>{});
22}
23
24} // namespace etl
25
26#endif // TETL_TUPLE_APPLY_HPP
Definition adjacent_find.hpp:9
constexpr auto apply(F &&f, Tuple &&t) -> decltype(auto)
Definition apply.hpp:17