Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

40 рядки
833 B

  1. #include <gtest/gtest.h>
  2. #include <cppmp/misc/generic_predicate.h>
  3. template<typename X, typename = void>
  4. struct builder
  5. {
  6. using is_default = cppmp::true_t;
  7. template<typename... T_args>
  8. static constexpr decltype(auto) apply(T_args&&...)
  9. { static_assert(sizeof...(T_args) == -1, "Invalid parameters for build(...)!"); }
  10. };
  11. template<>
  12. struct builder<
  13. cppmp::list<int>,
  14. void>
  15. {
  16. static constexpr decltype(auto) apply(int i)
  17. { return i; }
  18. };
  19. constexpr decltype(auto) build = cppmp::generic_predicate<builder> { };
  20. static_assert(
  21. !decltype(build)::is_valid<void>::value,
  22. "Expected build to be invalid");
  23. static_assert(
  24. decltype(build)::is_valid<int>::value,
  25. "Expected build to be valid");
  26. TEST(generic_predicate_tests, simple)
  27. {
  28. auto i = build(5);
  29. EXPECT_EQ(5, i);
  30. }