SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
record_like.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
10#pragma once
11
12#include <seqan3/io/record.hpp>
14
15namespace seqan3::detail
16{
17
20template <typename record_t>
21struct is_derived_from_record
22{
23private:
25 static std::false_type derived_from(...);
26
28 template <typename... args_t>
29 static std::true_type derived_from(seqan3::record<args_t...> &);
30
31public:
33 static constexpr bool value = decltype(derived_from(std::declval<record_t &>())){};
34};
35
41template <typename record_t>
42concept record_like = tuple_like<record_t> && is_derived_from_record<std::remove_cvref_t<record_t>>::value;
44} // namespace seqan3::detail
Whether a type behaves like a tuple.
Provides the seqan3::record template and the seqan3::field enum.
The class template that file records are based on; behaves like a std::tuple.
Definition record.hpp:190
Provides seqan3::tuple_like.
Hide me