snippets 0.1.0
Loading...
Searching...
No Matches
varadic_numeric.hpp
Go to the documentation of this file.
1#ifndef VARADIC_NUMERIC_H
2#define VARADIC_NUMERIC_H
3
4#include <concepts>
5namespace hsc_snippets
6{
7
8 template <typename T>
9 concept numeric = std::integral<T> || std::floating_point<T>;
10
11 template <numeric T>
12 bool lessThanAll(T x, T val)
13 {
14 return x < val;
15 }
16 template <numeric T, numeric... Args>
17 bool lessThanAll(T x, T val, Args... args)
18 {
19 if (!(x < val))
20 return false;
21 return lessThanAll(x, args...);
22 }
23
24 template <numeric T>
25 bool lessThanOrEqualToAll(T x, T val)
26 {
27 return x <= val;
28 }
29 template <numeric T, numeric... Args>
30 bool lessThanOrEqualToAll(T x, T val, Args... args)
31 {
32 if (!(x <= val))
33 return false;
34 return lessThanOrEqualToAll(x, args...);
35 }
36
37 template <numeric T>
38 bool greaterThanAll(T x, T val)
39 {
40 return x > val;
41 }
42 template <numeric T, numeric... Args>
43 bool greaterThanAll(T x, T val, Args... args)
44 {
45 if (!(x > val))
46 return false;
47 return greaterThanAll(x, args...);
48 }
49
50 template <numeric T>
51 bool greaterThanOrEqualToAll(T x, T val)
52 {
53 return x >= val;
54 }
55 template <numeric T, numeric... Args>
56 bool greaterThanOrEqualToAll(T x, T val, Args... args)
57 {
58 if (!(x >= val))
59 return false;
60 return greaterThanOrEqualToAll(x, args...);
61 }
62
63 template <numeric T>
64 T sum(T x)
65 {
66 return x;
67 }
68 template <numeric T, numeric... Args>
69 T sum(T x, Args... args)
70 {
71 return x + sum(args...);
72 }
73
74}
75
76#endif // VARADIC_NUMERIC_H
Definition varadic_numeric.hpp:9
Definition big_integer.hpp:14
bool greaterThanOrEqualToAll(T x, T val)
Definition varadic_numeric.hpp:51
T sum(T x)
Definition varadic_numeric.hpp:64
bool lessThanOrEqualToAll(T x, T val)
Definition varadic_numeric.hpp:25
bool greaterThanAll(T x, T val)
Definition varadic_numeric.hpp:38
bool lessThanAll(T x, T val)
Definition varadic_numeric.hpp:12