@@ -246,12 +246,25 @@ class ConstraintsChecker
246
246
return true ;
247
247
}
248
248
249
- template <typename T, typename U, std::enable_if_t <std::is_enum<T>::value && !std::is_pointer<U>::value, int > = 0 >
249
+ template <typename T, typename U,
250
+ std::enable_if_t <std::is_enum<T>::value && !std::is_enum<U>::value && !std::is_pointer<U>::value, int > = 0 >
250
251
bool CheckConstraintMinValue (const char * itemName, T current, U expected)
251
252
{
252
253
return CheckConstraintMinValue (itemName, chip::to_underlying (current), expected);
253
254
}
254
255
256
+ template <typename T, typename U, std::enable_if_t <std::is_enum<T>::value && std::is_enum<U>::value, int > = 0 >
257
+ bool CheckConstraintMinValue (const char * itemName, T current, U expected)
258
+ {
259
+ return CheckConstraintMinValue (itemName, chip::to_underlying (current), chip::to_underlying (expected));
260
+ }
261
+
262
+ template <typename T, typename U, std::enable_if_t <!std::is_enum<T>::value && std::is_enum<U>::value, int > = 0 >
263
+ bool CheckConstraintMinValue (const char * itemName, T current, U expected)
264
+ {
265
+ return CheckConstraintMinValue (itemName, current, chip::to_underlying (expected));
266
+ }
267
+
255
268
template <typename T, typename U, std::enable_if_t <!std::is_pointer<U>::value, int > = 0 >
256
269
bool CheckConstraintMinValue (const char * itemName, chip::BitFlags<T> current, U expected)
257
270
{
@@ -309,12 +322,25 @@ class ConstraintsChecker
309
322
return true ;
310
323
}
311
324
312
- template <typename T, typename U, std::enable_if_t <std::is_enum<T>::value && !std::is_pointer<U>::value, int > = 0 >
325
+ template <typename T, typename U,
326
+ std::enable_if_t <std::is_enum<T>::value && !std::is_enum<U>::value && !std::is_pointer<U>::value, int > = 0 >
313
327
bool CheckConstraintMaxValue (const char * itemName, T current, U expected)
314
328
{
315
329
return CheckConstraintMaxValue (itemName, chip::to_underlying (current), expected);
316
330
}
317
331
332
+ template <typename T, typename U, std::enable_if_t <std::is_enum<T>::value && std::is_enum<U>::value, int > = 0 >
333
+ bool CheckConstraintMaxValue (const char * itemName, T current, U expected)
334
+ {
335
+ return CheckConstraintMaxValue (itemName, chip::to_underlying (current), chip::to_underlying (expected));
336
+ }
337
+
338
+ template <typename T, typename U, std::enable_if_t <!std::is_enum<T>::value && std::is_enum<U>::value, int > = 0 >
339
+ bool CheckConstraintMaxValue (const char * itemName, T current, U expected)
340
+ {
341
+ return CheckConstraintMaxValue (itemName, current, chip::to_underlying (expected));
342
+ }
343
+
318
344
template <typename T, typename U, std::enable_if_t <!std::is_pointer<U>::value, int > = 0 >
319
345
bool CheckConstraintMaxValue (const char * itemName, chip::BitFlags<T> current, U expected)
320
346
{
0 commit comments