diff --git a/include/seqan3/alignment/configuration/align_config_output.hpp b/include/seqan3/alignment/configuration/align_config_output.hpp index ec4a1a8e66..8f500c5c13 100644 --- a/include/seqan3/alignment/configuration/align_config_output.hpp +++ b/include/seqan3/alignment/configuration/align_config_output.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include namespace seqan3::align_cfg { diff --git a/include/seqan3/alignment/configuration/align_config_score_type.hpp b/include/seqan3/alignment/configuration/align_config_score_type.hpp index 76ede20d58..959d56f9b9 100644 --- a/include/seqan3/alignment/configuration/align_config_score_type.hpp +++ b/include/seqan3/alignment/configuration/align_config_score_type.hpp @@ -14,7 +14,7 @@ #include #include -#include +#include namespace seqan3::align_cfg { diff --git a/include/seqan3/alignment/matrix/alignment_optimum.hpp b/include/seqan3/alignment/matrix/alignment_optimum.hpp index c8621ac113..d049e11bca 100644 --- a/include/seqan3/alignment/matrix/alignment_optimum.hpp +++ b/include/seqan3/alignment/matrix/alignment_optimum.hpp @@ -16,8 +16,8 @@ #include #include -#include #include +#include #include #include #include diff --git a/include/seqan3/alignment/matrix/detail/affine_cell_proxy.hpp b/include/seqan3/alignment/matrix/detail/affine_cell_proxy.hpp index 31d959ed93..a09b3a19dc 100644 --- a/include/seqan3/alignment/matrix/detail/affine_cell_proxy.hpp +++ b/include/seqan3/alignment/matrix/detail/affine_cell_proxy.hpp @@ -17,8 +17,8 @@ #include #include -#include #include +#include #include #include diff --git a/include/seqan3/alignment/matrix/detail/alignment_score_matrix_one_column.hpp b/include/seqan3/alignment/matrix/detail/alignment_score_matrix_one_column.hpp index 1a7c2a2219..bd90f37450 100644 --- a/include/seqan3/alignment/matrix/detail/alignment_score_matrix_one_column.hpp +++ b/include/seqan3/alignment/matrix/detail/alignment_score_matrix_one_column.hpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include namespace seqan3::detail diff --git a/include/seqan3/alignment/matrix/detail/alignment_score_matrix_one_column_base.hpp b/include/seqan3/alignment/matrix/detail/alignment_score_matrix_one_column_base.hpp index 77c0445c47..af13a39dfd 100644 --- a/include/seqan3/alignment/matrix/detail/alignment_score_matrix_one_column_base.hpp +++ b/include/seqan3/alignment/matrix/detail/alignment_score_matrix_one_column_base.hpp @@ -16,8 +16,8 @@ #include #include -#include #include +#include #include namespace seqan3::detail diff --git a/include/seqan3/alignment/matrix/detail/alignment_score_matrix_proxy.hpp b/include/seqan3/alignment/matrix/detail/alignment_score_matrix_proxy.hpp index 90d04533b9..927df42e8c 100644 --- a/include/seqan3/alignment/matrix/detail/alignment_score_matrix_proxy.hpp +++ b/include/seqan3/alignment/matrix/detail/alignment_score_matrix_proxy.hpp @@ -12,7 +12,7 @@ #pragma once -#include +#include #include namespace seqan3::detail diff --git a/include/seqan3/alignment/matrix/detail/combined_score_and_trace_matrix.hpp b/include/seqan3/alignment/matrix/detail/combined_score_and_trace_matrix.hpp index 27cf50199a..26cc8471ed 100644 --- a/include/seqan3/alignment/matrix/detail/combined_score_and_trace_matrix.hpp +++ b/include/seqan3/alignment/matrix/detail/combined_score_and_trace_matrix.hpp @@ -16,9 +16,9 @@ #include #include -#include #include #include +#include namespace seqan3::detail { diff --git a/include/seqan3/alignment/matrix/detail/matrix_coordinate.hpp b/include/seqan3/alignment/matrix/detail/matrix_coordinate.hpp index e4d2f25197..fcf1e7b72e 100644 --- a/include/seqan3/alignment/matrix/detail/matrix_coordinate.hpp +++ b/include/seqan3/alignment/matrix/detail/matrix_coordinate.hpp @@ -15,8 +15,8 @@ #include #include -#include #include +#include #include #include diff --git a/include/seqan3/alignment/matrix/detail/score_matrix_single_column.hpp b/include/seqan3/alignment/matrix/detail/score_matrix_single_column.hpp index 8dbaa64014..f0984b091f 100644 --- a/include/seqan3/alignment/matrix/detail/score_matrix_single_column.hpp +++ b/include/seqan3/alignment/matrix/detail/score_matrix_single_column.hpp @@ -17,10 +17,10 @@ #include #include -#include #include #include #include +#include #include namespace seqan3::detail diff --git a/include/seqan3/alignment/matrix/detail/trace_matrix_full.hpp b/include/seqan3/alignment/matrix/detail/trace_matrix_full.hpp index 5f756557b5..dea33abc79 100644 --- a/include/seqan3/alignment/matrix/detail/trace_matrix_full.hpp +++ b/include/seqan3/alignment/matrix/detail/trace_matrix_full.hpp @@ -20,11 +20,11 @@ #include #include #include -#include #include #include #include #include +#include namespace seqan3::detail { diff --git a/include/seqan3/alignment/pairwise/detail/alignment_algorithm_state.hpp b/include/seqan3/alignment/pairwise/detail/alignment_algorithm_state.hpp index 455367acf3..a04eda1ebe 100644 --- a/include/seqan3/alignment/pairwise/detail/alignment_algorithm_state.hpp +++ b/include/seqan3/alignment/pairwise/detail/alignment_algorithm_state.hpp @@ -14,7 +14,7 @@ #include #include -#include +#include #include namespace seqan3::detail diff --git a/include/seqan3/alignment/pairwise/policy/affine_gap_policy.hpp b/include/seqan3/alignment/pairwise/policy/affine_gap_policy.hpp index 5e77484858..91ea5ed2c0 100644 --- a/include/seqan3/alignment/pairwise/policy/affine_gap_policy.hpp +++ b/include/seqan3/alignment/pairwise/policy/affine_gap_policy.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include namespace seqan3::detail { diff --git a/include/seqan3/alignment/pairwise/policy/simd_affine_gap_policy.hpp b/include/seqan3/alignment/pairwise/policy/simd_affine_gap_policy.hpp index 57c38a6204..5c8b37e2c6 100644 --- a/include/seqan3/alignment/pairwise/policy/simd_affine_gap_policy.hpp +++ b/include/seqan3/alignment/pairwise/policy/simd_affine_gap_policy.hpp @@ -19,8 +19,8 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/include/seqan3/alignment/scoring/gap_scheme.hpp b/include/seqan3/alignment/scoring/gap_scheme.hpp index 780ce4a443..e6bc704bf0 100644 --- a/include/seqan3/alignment/scoring/gap_scheme.hpp +++ b/include/seqan3/alignment/scoring/gap_scheme.hpp @@ -12,12 +12,12 @@ #pragma once +#include #include #include -#include #include -#include +#include namespace seqan3 { diff --git a/include/seqan3/alignment/scoring/scoring_scheme_base.hpp b/include/seqan3/alignment/scoring/scoring_scheme_base.hpp index 98b355af89..4da7c410f3 100644 --- a/include/seqan3/alignment/scoring/scoring_scheme_base.hpp +++ b/include/seqan3/alignment/scoring/scoring_scheme_base.hpp @@ -17,8 +17,8 @@ #include #include -#include #include +#include #if SEQAN3_WITH_CEREAL #include diff --git a/include/seqan3/alphabet/composite/alphabet_tuple_base.hpp b/include/seqan3/alphabet/composite/alphabet_tuple_base.hpp index 790ddf5d35..015bb3086d 100644 --- a/include/seqan3/alphabet/composite/alphabet_tuple_base.hpp +++ b/include/seqan3/alphabet/composite/alphabet_tuple_base.hpp @@ -18,11 +18,11 @@ #include -#include -#include #include +#include +#include #include -#include +#include #include #include #include diff --git a/include/seqan3/alphabet/composite/detail.hpp b/include/seqan3/alphabet/composite/detail.hpp index 5e55b67b58..9cc61c09f0 100644 --- a/include/seqan3/alphabet/composite/detail.hpp +++ b/include/seqan3/alphabet/composite/detail.hpp @@ -13,7 +13,7 @@ #pragma once #include -#include +#include #include #include diff --git a/include/seqan3/alphabet/concept.hpp b/include/seqan3/alphabet/concept.hpp index 5beeabac94..d9dfaba5be 100644 --- a/include/seqan3/alphabet/concept.hpp +++ b/include/seqan3/alphabet/concept.hpp @@ -16,8 +16,8 @@ #include #include -#include #include +#include #include #include diff --git a/include/seqan3/alphabet/detail/alphabet_proxy.hpp b/include/seqan3/alphabet/detail/alphabet_proxy.hpp index 5d8a6db33f..4077b170af 100644 --- a/include/seqan3/alphabet/detail/alphabet_proxy.hpp +++ b/include/seqan3/alphabet/detail/alphabet_proxy.hpp @@ -17,8 +17,8 @@ #include #include #include -#include #include +#include #include namespace seqan3 diff --git a/include/seqan3/argument_parser/validators.hpp b/include/seqan3/argument_parser/validators.hpp index e593958032..3026d92e38 100644 --- a/include/seqan3/argument_parser/validators.hpp +++ b/include/seqan3/argument_parser/validators.hpp @@ -21,13 +21,13 @@ #include #include -#include #include #include #include #include #include #include +#include #include #include #include diff --git a/include/seqan3/core/algorithm/bound.hpp b/include/seqan3/core/algorithm/bound.hpp index 6a8777097e..8fcf967409 100644 --- a/include/seqan3/core/algorithm/bound.hpp +++ b/include/seqan3/core/algorithm/bound.hpp @@ -14,8 +14,8 @@ #pragma once -#include #include +#include SEQAN3_DEPRECATED_HEADER("This header is deprecated and will be removed in SeqAn-3.1.0. The contained functionality has been replaced by the seqan3::align_cfg::band_fixed_size configuration.") diff --git a/include/seqan3/core/concept/all.hpp b/include/seqan3/core/concept/all.hpp index 711f9f2219..902399a719 100644 --- a/include/seqan3/core/concept/all.hpp +++ b/include/seqan3/core/concept/all.hpp @@ -13,14 +13,5 @@ #pragma once #include -#include +#include #include - -/*!\defgroup concept Concept - * \ingroup core - * \brief Additional concepts that are not specific to a SeqAn module. - * - * \details - * - * \todo write me. - */ diff --git a/include/seqan3/core/concept/core_language.hpp b/include/seqan3/core/concept/core_language.hpp index 90c74444f0..cf4c57573a 100644 --- a/include/seqan3/core/concept/core_language.hpp +++ b/include/seqan3/core/concept/core_language.hpp @@ -6,189 +6,15 @@ // ----------------------------------------------------------------------------------------------------- /*!\file - * \brief Provides concepts for core language types and relations that don't have concepts in C++20 (yet). + * \brief [DEPRECATED] Provides concepts for core language types and relations that don't have concepts in C++20 (yet). * \author Hannes Hauswedell + * \deprecated This header will be removed in 3.1.0; Please \#include + * instead. */ #pragma once -#include +#include -#include -#include - -namespace seqan3::detail -{ - -/*!\addtogroup concept - * \{ - */ - -/*!\interface seqan3::detail::weakly_equality_comparable_with <> - * \tparam t1 The first type to compare. - * \tparam t2 The second type to compare. - * \brief Requires the two operands to be comparable with `==` and `!=` in both directions. - */ -//!\cond -template -SEQAN3_CONCEPT weakly_equality_comparable_with = - requires(std::remove_reference_t const & t, - std::remove_reference_t const & u) - { - std::convertible_to; - std::convertible_to; - std::convertible_to; - std::convertible_to; - }; -//!\endcond - -//!\brief Binary type trait that behaves like the seqan3::detail::weakly_equality_comparable_with concept. -template -struct weakly_equality_comparable_with_trait : - std::integral_constant> -{}; - -/*!\interface seqan3::detail::weakly_ordered_with <> - * \tparam t1 The first type to compare. - * \tparam t2 The second type to compare. - * \brief Requires the two operands to be comparable with `<`, `<=`, `>` and `>=` in both directions. - */ -//!\cond -template -SEQAN3_CONCEPT weakly_ordered_with = requires (std::remove_reference_t const & v1, - std::remove_reference_t const & v2) -{ - std::convertible_to; - std::convertible_to; - std::convertible_to v2), bool>; - std::convertible_to= v2), bool>; - - std::convertible_to; - std::convertible_to; - std::convertible_to v1), bool>; - std::convertible_to= v1), bool>; -}; -//!\endcond - -//!\brief Binary type trait that behaves like the seqan3::detail::weakly_ordered_with concept. -template -struct weakly_ordered_with_trait : std::integral_constant> -{}; - -//!\} - -} // seqan3::detail - -namespace seqan3 -{ - -/*!\addtogroup concept - * \{ - */ - -/*!\interface seqan3::implicitly_convertible_to <> - * \brief Resolves to `std::ranges::implicitly_convertible_to()`. - */ -//!\cond -template -SEQAN3_CONCEPT implicitly_convertible_to = std::is_convertible_v; -//!\endcond - -/*!\interface seqan3::explicitly_convertible_to <> - * \brief Resolves to `std::ranges::explicitly_convertible_to()`. - */ -//!\cond -template -SEQAN3_CONCEPT explicitly_convertible_to = requires (t vt) { { static_cast(vt)}; }; -//!\endcond - -/*!\interface seqan3::arithmetic <> - * \brief A type that satisfies std::is_arithmetic_v. - * \sa https://en.cppreference.com/w/cpp/types/is_arithmetic - */ -//!\cond -template -SEQAN3_CONCEPT arithmetic = std::is_arithmetic_v; -//!\endcond - -/*!\interface seqan3::floating_point <> - * \extends seqan3::arithmetic - * \brief An arithmetic type that also satisfies std::is_floating_point_v. - * \sa https://en.cppreference.com/w/cpp/types/is_floating_point - */ -//!\cond -template -SEQAN3_CONCEPT floating_point = arithmetic && std::is_floating_point_v; -//!\endcond - -/*!\interface seqan3::builtin_character <> - * \extends std::integral - * \brief This concept encompasses exactly the types `char`, `signed char`, `unsigned char`, `wchar_t`, - * `char16_t` and `char32_t`. - */ -//!\cond - -template -SEQAN3_CONCEPT builtin_character = std::integral && - (std::same_as || std::same_as || std::same_as || -#ifdef __cpp_char8_t - std::same_as || -#endif - std::same_as || std::same_as || std::same_as); -//!\endcond - -/*!\interface seqan3::trivially_destructible <> - * \extends std::destructible - * \brief A type that satisfies std::is_trivially_destructible_v. - * \sa https://en.cppreference.com/w/cpp/types/is_destructible - */ -//!\cond -template -SEQAN3_CONCEPT trivially_destructible = std::destructible && std::is_trivially_destructible_v; -//!\endcond - -/*!\interface seqan3::trivially_copyable - * \brief A type that satisfies std::is_trivially_copyable_v. - * \extends std::copyable - * \sa https://en.cppreference.com/w/cpp/types/is_trivially_copyable - */ -//!\cond -template -SEQAN3_CONCEPT trivially_copyable = std::copyable && std::is_trivially_copyable_v; -//!\endcond - -/*!\interface seqan3::trivial - * \brief A type that satisfies seqan3::trivially_copyable and seqan3::trivially_destructible. - * \extends seqan3::trivially_copyable - * \extends seqan3::trivially_destructible - * \sa https://en.cppreference.com/w/cpp/types/is_trivial - */ -//!\cond -template -SEQAN3_CONCEPT trivial = trivially_copyable && trivially_destructible && std::is_trivial_v; -//!\endcond - -/*!\interface seqan3::standard_layout - * \brief Resolves to std::is_standard_layout_v. - * \sa https://en.cppreference.com/w/cpp/types/is_standard_layout - */ -//!\cond -template -SEQAN3_CONCEPT standard_layout = std::is_standard_layout_v; -//!\endcond - -/*!\interface seqan3::weakly_assignable_from - * \brief Resolves to std::is_assignable_v. - * \sa https://en.cppreference.com/w/cpp/types/is_assignable - * - * \details - * - * Note that this requires less than std::assignable_from, it simply tests if the expression - * `std::declval() = std::declval()` is well-formed. - */ -//!\cond -template -SEQAN3_CONCEPT weakly_assignable_from = std::is_assignable_v; -//!\endcond - -} // namespace seqan3 +SEQAN3_DEPRECATED_HEADER( + "This header is deprecated and will be removed in SeqAn-3.1.0; Please #include instead.") diff --git a/include/seqan3/core/detail/template_inspection.hpp b/include/seqan3/core/detail/template_inspection.hpp index 9902297a7a..69f43b0e92 100644 --- a/include/seqan3/core/detail/template_inspection.hpp +++ b/include/seqan3/core/detail/template_inspection.hpp @@ -240,11 +240,7 @@ using valid_template_spec_or_t = typename valid_template_spec_or +/*!\interface seqan3::detail::template_specialisation_of <> * \brief Provides concept `seqan3::template_specialisation_of` for checking the type specialisation of * some type with a given template, for example a specialized `type_list` with the `type_list` template. * @@ -264,7 +260,6 @@ template typename type_template> SEQAN3_CONCEPT template_specialisation_of = is_type_specialisation_of_v; //!\endcond -//!\} // ---------------------------------------------------------------------------- // strip_type_identity diff --git a/include/seqan3/io/alignment_file/format_bam.hpp b/include/seqan3/io/alignment_file/format_bam.hpp index 427445cf19..8f497e6d9b 100644 --- a/include/seqan3/io/alignment_file/format_bam.hpp +++ b/include/seqan3/io/alignment_file/format_bam.hpp @@ -21,7 +21,6 @@ #include #include -#include #include #include #include @@ -44,6 +43,7 @@ #include #include #include +#include #include namespace seqan3 diff --git a/include/seqan3/io/alignment_file/format_sam.hpp b/include/seqan3/io/alignment_file/format_sam.hpp index 572a52e7ff..07bd412dc1 100644 --- a/include/seqan3/io/alignment_file/format_sam.hpp +++ b/include/seqan3/io/alignment_file/format_sam.hpp @@ -20,7 +20,6 @@ #include #include -#include #include #include #include @@ -43,9 +42,10 @@ #include #include #include -#include #include +#include #include +#include #include #include diff --git a/include/seqan3/io/alignment_file/format_sam_base.hpp b/include/seqan3/io/alignment_file/format_sam_base.hpp index f67d9e13bc..86cbb49a8d 100644 --- a/include/seqan3/io/alignment_file/format_sam_base.hpp +++ b/include/seqan3/io/alignment_file/format_sam_base.hpp @@ -20,7 +20,6 @@ #include #include -#include #include #include #include @@ -41,10 +40,11 @@ #include #include #include -#include #include +#include #include #include +#include #include #include diff --git a/include/seqan3/io/alignment_file/sam_tag_dictionary.hpp b/include/seqan3/io/alignment_file/sam_tag_dictionary.hpp index 6584ee5a7c..b6179b580d 100644 --- a/include/seqan3/io/alignment_file/sam_tag_dictionary.hpp +++ b/include/seqan3/io/alignment_file/sam_tag_dictionary.hpp @@ -16,10 +16,10 @@ #include #include -#include #include #include #include +#include namespace seqan3::detail { diff --git a/include/seqan3/io/detail/magic_header.hpp b/include/seqan3/io/detail/magic_header.hpp index b00353c594..a09f860eb4 100644 --- a/include/seqan3/io/detail/magic_header.hpp +++ b/include/seqan3/io/detail/magic_header.hpp @@ -18,8 +18,8 @@ #include #include -#include #include +#include #include #include diff --git a/include/seqan3/io/detail/misc_input.hpp b/include/seqan3/io/detail/misc_input.hpp index edd0124053..c300eaa18c 100644 --- a/include/seqan3/io/detail/misc_input.hpp +++ b/include/seqan3/io/detail/misc_input.hpp @@ -12,11 +12,16 @@ #pragma once +#include +#include +#include #include +#include +#include #include #include -#include + #ifdef SEQAN3_HAS_BZIP2 #include #endif @@ -26,11 +31,7 @@ #include #endif #include -#include -#include -#include -#include -#include +#include namespace seqan3::detail { diff --git a/include/seqan3/io/detail/misc_output.hpp b/include/seqan3/io/detail/misc_output.hpp index fbba87eb2e..568b0c59f6 100644 --- a/include/seqan3/io/detail/misc_output.hpp +++ b/include/seqan3/io/detail/misc_output.hpp @@ -16,7 +16,7 @@ #include #include -#include +#include #ifdef SEQAN3_HAS_BZIP2 #include #endif diff --git a/include/seqan3/range/views/convert.hpp b/include/seqan3/range/views/convert.hpp index 3ba6e72f50..1880c16f05 100644 --- a/include/seqan3/range/views/convert.hpp +++ b/include/seqan3/range/views/convert.hpp @@ -12,10 +12,11 @@ #pragma once -#include #include #include +#include + namespace seqan3::views { diff --git a/include/seqan3/search/configuration/max_error_common.hpp b/include/seqan3/search/configuration/max_error_common.hpp index fa8ebb0eed..96766abad8 100644 --- a/include/seqan3/search/configuration/max_error_common.hpp +++ b/include/seqan3/search/configuration/max_error_common.hpp @@ -13,10 +13,11 @@ #pragma once -#include -#include #include +#include +#include + namespace seqan3::search_cfg { diff --git a/include/seqan3/utility/all.hpp b/include/seqan3/utility/all.hpp index fa3bbc9ed6..b163752b39 100644 --- a/include/seqan3/utility/all.hpp +++ b/include/seqan3/utility/all.hpp @@ -32,3 +32,7 @@ * The utility module has no dependency to any other module except the \ref core * module. */ + +/*!\defgroup utility_concept Concept + * \ingroup utility + */ diff --git a/include/seqan3/utility/char_operations/transform.hpp b/include/seqan3/utility/char_operations/transform.hpp index 6d742d96d1..ff0abee422 100644 --- a/include/seqan3/utility/char_operations/transform.hpp +++ b/include/seqan3/utility/char_operations/transform.hpp @@ -14,7 +14,7 @@ #include -#include +#include #include namespace seqan3::detail diff --git a/include/seqan3/utility/detail/exposition_only_concept.hpp b/include/seqan3/utility/detail/exposition_only_concept.hpp new file mode 100644 index 0000000000..816549dcd4 --- /dev/null +++ b/include/seqan3/utility/detail/exposition_only_concept.hpp @@ -0,0 +1,205 @@ +// ----------------------------------------------------------------------------------------------------- +// Copyright (c) 2006-2020, Knut Reinert & Freie Universität Berlin +// Copyright (c) 2016-2020, Knut Reinert & MPI für molekulare Genetik +// This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License +// shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md +// ----------------------------------------------------------------------------------------------------- + +/*!\file + * \brief Provides concepts for core language types and relations that don't have concepts in C++20 (yet). + * \author Hannes Hauswedell + */ + +#pragma once + +#include +#include + +#include + +namespace seqan3::detail +{ + +/*!\addtogroup utility_concept + * \{ + */ + +/*!\interface seqan3::detail::weakly_equality_comparable_with <> + * \tparam t1 The first type to compare. + * \tparam t2 The second type to compare. + * \brief Requires the two operands to be comparable with `==` and `!=` in both directions. + */ +//!\cond +template +SEQAN3_CONCEPT weakly_equality_comparable_with = + requires(std::remove_reference_t const & t, + std::remove_reference_t const & u) + { + std::convertible_to; + std::convertible_to; + std::convertible_to; + std::convertible_to; + }; +//!\endcond + +//!\brief Binary type trait that behaves like the seqan3::detail::weakly_equality_comparable_with concept. +template +struct weakly_equality_comparable_with_trait : + std::integral_constant> +{}; + +/*!\interface seqan3::detail::weakly_ordered_with <> + * \tparam t1 The first type to compare. + * \tparam t2 The second type to compare. + * \brief Requires the two operands to be comparable with `<`, `<=`, `>` and `>=` in both directions. + */ +//!\cond +template +SEQAN3_CONCEPT weakly_ordered_with = requires (std::remove_reference_t const & v1, + std::remove_reference_t const & v2) +{ + std::convertible_to; + std::convertible_to; + std::convertible_to v2), bool>; + std::convertible_to= v2), bool>; + + std::convertible_to; + std::convertible_to; + std::convertible_to v1), bool>; + std::convertible_to= v1), bool>; +}; +//!\endcond + +//!\brief Binary type trait that behaves like the seqan3::detail::weakly_ordered_with concept. +template +struct weakly_ordered_with_trait : std::integral_constant> +{}; + +//!\} + +} // seqan3::detail + +namespace seqan3 +{ + +/*!\addtogroup utility_concept + * \{ + */ + +/*!\interface seqan3::implicitly_convertible_to <> + * \brief Resolves to `std::ranges::implicitly_convertible_to()`. + * \noapi + */ +//!\cond +template +SEQAN3_CONCEPT implicitly_convertible_to = std::is_convertible_v; +//!\endcond + +/*!\interface seqan3::explicitly_convertible_to <> + * \brief Resolves to `std::ranges::explicitly_convertible_to()`. + * \noapi + */ +//!\cond +template +SEQAN3_CONCEPT explicitly_convertible_to = requires (t vt) { { static_cast(vt)}; }; +//!\endcond + +/*!\interface seqan3::arithmetic <> + * \brief A type that satisfies std::is_arithmetic_v. + * \sa https://en.cppreference.com/w/cpp/types/is_arithmetic + * \noapi + */ +//!\cond +template +SEQAN3_CONCEPT arithmetic = std::is_arithmetic_v; +//!\endcond + +/*!\interface seqan3::floating_point <> + * \extends seqan3::arithmetic + * \brief An arithmetic type that also satisfies std::is_floating_point_v. + * \sa https://en.cppreference.com/w/cpp/types/is_floating_point + * \noapi + */ +//!\cond +template +SEQAN3_CONCEPT floating_point = arithmetic && std::is_floating_point_v; +//!\endcond + +/*!\interface seqan3::builtin_character <> + * \extends std::integral + * \brief This concept encompasses exactly the types `char`, `signed char`, `unsigned char`, `wchar_t`, + * `char16_t` and `char32_t`. + * \noapi + */ +//!\cond + +template +SEQAN3_CONCEPT builtin_character = std::integral && + (std::same_as || std::same_as || std::same_as || +#ifdef __cpp_char8_t + std::same_as || +#endif + std::same_as || std::same_as || std::same_as); +//!\endcond + +/*!\interface seqan3::trivially_destructible <> + * \extends std::destructible + * \brief A type that satisfies std::is_trivially_destructible_v. + * \sa https://en.cppreference.com/w/cpp/types/is_destructible + * \noapi + */ +//!\cond +template +SEQAN3_CONCEPT trivially_destructible = std::destructible && std::is_trivially_destructible_v; +//!\endcond + +/*!\interface seqan3::trivially_copyable + * \brief A type that satisfies std::is_trivially_copyable_v. + * \extends std::copyable + * \sa https://en.cppreference.com/w/cpp/types/is_trivially_copyable + * \noapi + */ +//!\cond +template +SEQAN3_CONCEPT trivially_copyable = std::copyable && std::is_trivially_copyable_v; +//!\endcond + +/*!\interface seqan3::trivial + * \brief A type that satisfies seqan3::trivially_copyable and seqan3::trivially_destructible. + * \extends seqan3::trivially_copyable + * \extends seqan3::trivially_destructible + * \sa https://en.cppreference.com/w/cpp/types/is_trivial + * \noapi + */ +//!\cond +template +SEQAN3_CONCEPT trivial = trivially_copyable && trivially_destructible && std::is_trivial_v; +//!\endcond + +/*!\interface seqan3::standard_layout + * \brief Resolves to std::is_standard_layout_v. + * \sa https://en.cppreference.com/w/cpp/types/is_standard_layout + * \noapi + */ +//!\cond +template +SEQAN3_CONCEPT standard_layout = std::is_standard_layout_v; +//!\endcond + +/*!\interface seqan3::weakly_assignable_from + * \brief Resolves to std::is_assignable_v. + * \sa https://en.cppreference.com/w/cpp/types/is_assignable + * \noapi + * + * \details + * + * Note that this requires less than std::assignable_from, it simply tests if the expression + * `std::declval() = std::declval()` is well-formed. + */ +//!\cond +template +SEQAN3_CONCEPT weakly_assignable_from = std::is_assignable_v; +//!\endcond +//!\} + +} // namespace seqan3 diff --git a/include/seqan3/utility/simd/views/iota_simd.hpp b/include/seqan3/utility/simd/views/iota_simd.hpp index 96bb6684e8..2ac9a92d0a 100644 --- a/include/seqan3/utility/simd/views/iota_simd.hpp +++ b/include/seqan3/utility/simd/views/iota_simd.hpp @@ -14,7 +14,7 @@ #include -#include +#include #include #include #include diff --git a/test/unit/alphabet/semi_alphabet_test_template.hpp b/test/unit/alphabet/semi_alphabet_test_template.hpp index 3058fdc47c..cc06de310e 100644 --- a/test/unit/alphabet/semi_alphabet_test_template.hpp +++ b/test/unit/alphabet/semi_alphabet_test_template.hpp @@ -9,9 +9,9 @@ #include #include -#include #include #include +#include template using semi_alphabet_test = ::testing::Test; diff --git a/test/unit/std/concept/CMakeLists.txt b/test/unit/std/concept/CMakeLists.txt index e70c7d6556..b9c02eeefc 100644 --- a/test/unit/std/concept/CMakeLists.txt +++ b/test/unit/std/concept/CMakeLists.txt @@ -1,4 +1,3 @@ -seqan3_test(core_language_test.cpp) seqan3_test(comparison_test.cpp) seqan3_test(object_test.cpp) seqan3_test(callable_test.cpp) diff --git a/test/unit/std/concept/comparison_test.cpp b/test/unit/std/concept/comparison_test.cpp index a8317348ee..ba3fa5dbb0 100644 --- a/test/unit/std/concept/comparison_test.cpp +++ b/test/unit/std/concept/comparison_test.cpp @@ -7,10 +7,10 @@ #include +#include #include -#include -#include +#include #include "auxiliary.hpp" diff --git a/test/unit/std/concept/object_test.cpp b/test/unit/std/concept/object_test.cpp index 92bc3e7cad..5c672ed353 100644 --- a/test/unit/std/concept/object_test.cpp +++ b/test/unit/std/concept/object_test.cpp @@ -7,10 +7,10 @@ #include +#include #include -#include -#include +#include #include "auxiliary.hpp" diff --git a/test/unit/utility/detail/CMakeLists.txt b/test/unit/utility/detail/CMakeLists.txt index 62c1f2e23d..a2729a7ff4 100644 --- a/test/unit/utility/detail/CMakeLists.txt +++ b/test/unit/utility/detail/CMakeLists.txt @@ -1,2 +1,3 @@ seqan3_test (bits_of_test.cpp) seqan3_test (to_little_endian_test.cpp) +seqan3_test(exposition_only_concept_test.cpp) diff --git a/test/unit/std/concept/core_language_test.cpp b/test/unit/utility/detail/exposition_only_concept_test.cpp similarity index 96% rename from test/unit/std/concept/core_language_test.cpp rename to test/unit/utility/detail/exposition_only_concept_test.cpp index 5f1932de24..5676e3cfd8 100644 --- a/test/unit/std/concept/core_language_test.cpp +++ b/test/unit/utility/detail/exposition_only_concept_test.cpp @@ -7,12 +7,12 @@ #include +#include #include -#include -#include +#include -#include "auxiliary.hpp" +#include "../../std/concept/auxiliary.hpp" TEST(core_language_concepts, same_as) {