| | #include <metal.hpp> |
| |
|
| | #include "test.hpp" |
| |
|
| | #define MATRIX(M, N) \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, VALUE(M) COMMA(N) VALUES(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, VALUE(M) COMMA(N) NUMBERS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, VALUE(M) COMMA(N) PAIRS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, VALUE(M) COMMA(N) LISTS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, VALUE(M) COMMA(N) MAPS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, VALUE(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, NUMBER(M) COMMA(N) VALUES(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, NUMBER(M) COMMA(N) NUMBERS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, NUMBER(M) COMMA(N) PAIRS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, NUMBER(M) COMMA(N) LISTS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, NUMBER(M) COMMA(N) MAPS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, NUMBER(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, PAIR(M) COMMA(N) VALUES(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, PAIR(M) COMMA(N) NUMBERS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, PAIR(M) COMMA(N) PAIRS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, PAIR(M) COMMA(N) LISTS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, PAIR(M) COMMA(N) MAPS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, PAIR(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LIST(M) COMMA(N) VALUES(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LIST(M) COMMA(N) NUMBERS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LIST(M) COMMA(N) PAIRS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LIST(M) COMMA(N) LISTS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LIST(M) COMMA(N) MAPS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LIST(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, MAP(M) COMMA(N) VALUES(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, MAP(M) COMMA(N) NUMBERS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, MAP(M) COMMA(N) PAIRS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, MAP(M) COMMA(N) LISTS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, MAP(M) COMMA(N) MAPS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, MAP(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(M) COMMA(N) VALUES(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(M) COMMA(N) NUMBERS(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(M) COMMA(N) PAIRS(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(M) COMMA(N) LISTS(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(M) COMMA(N) MAPS(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(M) COMMA(N) LAMBDAS(N)>), (TRUE)); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(_) COMMA(N) VALUES(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(_) COMMA(N) NUMBERS(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(_) COMMA(N) PAIRS(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(_) COMMA(N) LISTS(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(_) COMMA(N) MAPS(N)>), (BOOL(!N))); \ |
| | CHECK((metal::is_invocable<metal::lambda<metal::bind>, LAMBDA(_) COMMA(N) LAMBDAS(N)>), (TRUE)); \ |
| | CHECK((metal::is_invocable<metal::bind<LAMBDA(M) COMMA(N) ENUM(N, LAMBDA FIX(M))> COMMA(N) VALUES(N)>), (BOOL(M == N))); \ |
| | CHECK((metal::invoke<metal::bind<LAMBDA(M) COMMA(M) ENUM(M, LAMBDA FIX(N))> COMMA(N) VALUES(N)>), (EXPR(M)<ENUM(M, NUMBER FIX(N))>)); \ |
| | CHECK((metal::invoke<metal::bind<LAMBDA(_) COMMA(M) ENUM(M, LAMBDA FIX(N))> COMMA(N) VALUES(N)>), (EXPR(_)<ENUM(M, NUMBER FIX(N))>)); \ |
| | |
| |
|
| | GEN(MATRIX) |
| |
|