|
- #include <gtest/gtest.h>
-
- #include <cppmp/misc/generic_predicate.h>
-
- template<typename X, typename = void>
- struct builder
- {
- using is_default = cppmp::true_t;
-
- template<typename... T_args>
- static constexpr decltype(auto) apply(T_args&&...)
- { static_assert(sizeof...(T_args) == -1, "Invalid parameters for build(...)!"); }
- };
-
- template<>
- struct builder<
- cppmp::list<int>,
- void>
- {
- static constexpr decltype(auto) apply(int i)
- { return i; }
- };
-
- constexpr decltype(auto) build = cppmp::generic_predicate<builder> { };
-
- static_assert(
- !decltype(build)::is_valid<void>::value,
- "Expected build to be invalid");
-
- static_assert(
- decltype(build)::is_valid<int>::value,
- "Expected build to be valid");
-
- TEST(generic_predicate_tests, simple)
- {
- auto i = build(5);
-
- EXPECT_EQ(5, i);
- }
|