Loading...
Searching...
No Matches
traits.h
Go to the documentation of this file.
1
23
24#ifndef FCPP_TRAITS_H
25#define FCPP_TRAITS_H
26
27#include <iterator>
28#include <type_traits>
29
30namespace fcpp::traits {
31
32template <typename T, typename = void>
33struct is_additive : std::false_type {};
34
35template <typename T>
37 T, typename std::enable_if<
38 true,
39 decltype(std::declval<T &>() + std::declval<T &>(), (void)0)>::type>
40 : std::true_type {};
41
42template <typename T, typename = void>
43struct is_equality_comparable : std::false_type {};
44
45template <typename T>
47 T, typename std::enable_if<
48 true,
49 decltype(std::declval<T &>() == std::declval<T &>(), (void)0)>::type>
50 : std::true_type {};
51
52template <typename T, typename = void>
53struct is_less_than_comparable : std::false_type {};
54
55template <typename T>
57 T, typename std::enable_if<
58 true,
59 decltype(std::declval<T &>() < std::declval<T &>(), (void)0)>::type>
60 : std::true_type {};
61
62} // namespace fcpp::traits
63
64#endif // FCPP_TRAITS_H
Definition traits.h:33