File tree Expand file tree Collapse file tree 1 file changed +16
-0
lines changed
include/DRAMUtils/DRAMUtils/util Expand file tree Collapse file tree 1 file changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -61,6 +61,22 @@ struct is_one_of<T, type_sequence<Ts...>> :
61
61
std::bool_constant<(std::is_same_v<T, Ts> || ...)>
62
62
{};
63
63
64
+ // Helper struct to check if types in a sequence are unique
65
+ // forward declaration
66
+ template <typename ... Ts>
67
+ struct unique_types : std::true_type {}; // empty case
68
+ // specialization
69
+ template <typename First, typename ... Ts>
70
+ struct unique_types <First, Ts...> :
71
+ std::bool_constant<
72
+ (sizeof ...(Ts) == 0 ) || // single type case
73
+ !(std::is_same_v<First, Ts> || ...) && // check if First is not in Ts...
74
+ unique_types<Ts...>::value // recursive check
75
+ >
76
+ {};
77
+ template <typename ... Ts>
78
+ struct unique_types <type_sequence<Ts...>> : unique_types<Ts...> {};
79
+
64
80
// Helper
65
81
// Default case
66
82
template <typename T, typename = void >
You can’t perform that action at this time.
0 commit comments