capydi
Loading...
Searching...
No Matches
MetaArity.hpp
Go to the documentation of this file.
1#ifndef ARITY_HPP_
2#define ARITY_HPP_
3
4#include <cstddef>
5#include <optional>
6
7namespace capy::meta
8{
9
31
32constexpr std::size_t MAX_LINEAR_META_ARITY = static_cast<std::size_t>(
34);
35
36consteval std::optional<MetaArity>
37 meta_arity_from_args_count(const std::size_t args_count)
38{
39 if (args_count < 1 || args_count > MAX_LINEAR_META_ARITY) {
40 return std::nullopt;
41 }
42
43 return static_cast<MetaArity>(args_count - 1);
44}
45
46template<std::size_t ARGS_COUNT>
47 requires (meta_arity_from_args_count(ARGS_COUNT).has_value())
49 = meta_arity_from_args_count(ARGS_COUNT).value();
50
51template<typename... Args>
53
54}
55
56#endif // !ARITY_HPP_
Definition Rebind.hpp:7
constexpr std::size_t MAX_LINEAR_META_ARITY
Definition MetaArity.hpp:32
constexpr MetaArity meta_arity_from_args_count_v
Definition MetaArity.hpp:49
MetaArity
Definition MetaArity.hpp:11
@ N10
Definition MetaArity.hpp:21
@ N6
Definition MetaArity.hpp:17
@ N16
Definition MetaArity.hpp:27
@ N15
Definition MetaArity.hpp:26
@ N8
Definition MetaArity.hpp:19
@ N14
Definition MetaArity.hpp:25
@ LINEAR_ARITIES_COUNT
Definition MetaArity.hpp:29
@ N1
Definition MetaArity.hpp:12
@ N11
Definition MetaArity.hpp:22
@ N3
Definition MetaArity.hpp:14
@ N4
Definition MetaArity.hpp:15
@ N5
Definition MetaArity.hpp:16
@ N7
Definition MetaArity.hpp:18
@ N2
Definition MetaArity.hpp:13
@ N13
Definition MetaArity.hpp:24
@ N12
Definition MetaArity.hpp:23
@ N9
Definition MetaArity.hpp:20
constexpr MetaArity meta_arity_from_args_v
Definition MetaArity.hpp:52
consteval std::optional< MetaArity > meta_arity_from_args_count(const std::size_t args_count)
Definition MetaArity.hpp:37