SeqAn3 3.1.0
The Modern C++ library for sequence analysis.
record_like.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/io/record.hpp>
17
18namespace seqan3::detail
19{
20
23template <typename record_t>
24struct is_derived_from_record
25{
26private:
28 static std::false_type derived_from(...);
29
31 template <typename ...args_t>
32 static std::true_type derived_from(seqan3::record<args_t...> &);
33public:
34
36 static constexpr bool value = decltype(derived_from(std::declval<record_t &>())){};
37};
38
44template <typename record_t>
45SEQAN3_CONCEPT record_like = tuple_like<record_t> &&
46 is_derived_from_record<std::remove_cvref_t<record_t>>::value;
48} // 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:191
Provides seqan3::tuple_like.