SeqAn3 3.2.0
The Modern C++ library for sequence analysis.
integer_traits.hpp
Go to the documentation of this file.
1// -----------------------------------------------------------------------------------------------------
2// Copyright (c) 2006-2022, Knut Reinert & Freie Universität Berlin
3// Copyright (c) 2016-2022, 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
8#pragma once
9
10#include <limits>
11#include <type_traits>
12
14
20namespace seqan3::detail
21{
22
23// ------------------------------------------------------------------
24// min_viable_uint_t
25// ------------------------------------------------------------------
26
29template <uint64_t value>
30using min_viable_uint_t = std::conditional_t<
31 value <= 1ull,
32 bool,
33 std::conditional_t<value <= 255ull,
34 uint8_t,
35 std::conditional_t<value <= 65535ull,
36 uint16_t,
38
42template <uint64_t value>
43constexpr auto min_viable_uint_v = static_cast<min_viable_uint_t<value>>(value);
44
45// ------------------------------------------------------------------
46// size_in_values_v
47// ------------------------------------------------------------------
48
51template <typename int_t>
52 requires std::is_integral_v<int_t>
53constexpr size_t size_in_values_v =
55
56} // namespace seqan3::detail
T max(T... args)
Provides platform and dependency checks.