SeqAn3 3.1.0
The Modern C++ library for sequence analysis.
type_pack_algorithm.hpp
Go to the documentation of this file.
1// -----------------------------------------------------------------------------------------------------
2// Copyright (c) 2006-2021, Knut Reinert & Freie Universität Berlin
3// Copyright (c) 2016-2021, Knut Reinert & MPI für molekulare Genetik
4// This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5// shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6// -----------------------------------------------------------------------------------------------------
7
13#pragma once
14
15#include <seqan3/std/concepts>
17#include <utility>
18
20
21namespace seqan3::detail
22{
23
24//-----------------------------------------------------------------------------
25// all_of
26//-----------------------------------------------------------------------------
27
58template <typename unary_predicate_t, typename ...pack_t>
60 requires (std::predicate<unary_predicate_t, pack_t> && ...)
62constexpr bool all_of(unary_predicate_t && fn, pack_t && ...args)
63{
64 return (fn(std::forward<pack_t>(args)) && ...);
65}
66
67//-----------------------------------------------------------------------------
68// for_each
69//-----------------------------------------------------------------------------
70
98template <typename unary_function_t, typename ...pack_t>
100 requires (std::invocable<unary_function_t, pack_t> && ...)
102constexpr void for_each(unary_function_t && fn, pack_t && ...args)
103{
104 (fn(std::forward<pack_t>(args)), ...);
105}
106
107} // namespace seqan3::detail
T all_of(T... args)
The <concepts> header from C++20's standard library.
T for_each(T... args)
Provides platform and dependency checks.
The <type_traits> header from C++20's standard library.