File size: 4,783 Bytes
8ae5fc5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #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)
|