camenduru's picture
thanks to nvidia ❤
8ae5fc5
#include <metal.hpp>
#include "test.hpp"
#define MATRIX(M, N) \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, VALUE(M) COMMA(N) VALUES(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, VALUE(M) COMMA(N) NUMBERS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, VALUE(M) COMMA(N) PAIRS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, VALUE(M) COMMA(N) LISTS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, VALUE(M) COMMA(N) MAPS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, VALUE(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, NUMBER(M) COMMA(N) VALUES(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, NUMBER(M) COMMA(N) NUMBERS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, NUMBER(M) COMMA(N) PAIRS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, NUMBER(M) COMMA(N) LISTS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, NUMBER(M) COMMA(N) MAPS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, NUMBER(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, PAIR(M) COMMA(N) VALUES(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, PAIR(M) COMMA(N) NUMBERS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, PAIR(M) COMMA(N) PAIRS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, PAIR(M) COMMA(N) LISTS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, PAIR(M) COMMA(N) MAPS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, PAIR(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LIST(M) COMMA(N) VALUES(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LIST(M) COMMA(N) NUMBERS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LIST(M) COMMA(N) PAIRS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LIST(M) COMMA(N) LISTS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LIST(M) COMMA(N) MAPS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LIST(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, MAP(M) COMMA(N) VALUES(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, MAP(M) COMMA(N) NUMBERS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, MAP(M) COMMA(N) PAIRS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, MAP(M) COMMA(N) LISTS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, MAP(M) COMMA(N) MAPS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, MAP(M) COMMA(N) LAMBDAS(N)>), (FALSE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(M) COMMA(N) VALUES(N)>), (BOOL(M == N))); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(M) COMMA(N) NUMBERS(N)>), (BOOL(M == N))); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(M) COMMA(N) PAIRS(N)>), (BOOL(M == N))); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(M) COMMA(N) LISTS(N)>), (BOOL(M == N))); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(M) COMMA(N) MAPS(N)>), (BOOL(M == N))); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(M) COMMA(N) LAMBDAS(N)>), (BOOL(M == N))); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(_) COMMA(N) VALUES(N)>), (TRUE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(_) COMMA(N) NUMBERS(N)>), (TRUE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(_) COMMA(N) PAIRS(N)>), (TRUE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(_) COMMA(N) LISTS(N)>), (TRUE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(_) COMMA(N) MAPS(N)>), (TRUE)); \
CHECK((metal::is_invocable<metal::lambda<metal::invoke>, LAMBDA(_) COMMA(N) LAMBDAS(N)>), (TRUE)); \
CHECK((metal::invoke<LAMBDA(M) COMMA(M) VALUES(M)>), (EXPR(M)<VALUES(M)>)); \
CHECK((metal::invoke<LAMBDA(_) COMMA(M) VALUES(M)>), (EXPR(_)<VALUES(M)>)); \
CHECK((metal::invoke<LAMBDA(M) COMMA(M) LAMBDAS(M)>), (EXPR(M)<LAMBDAS(M)>)); \
CHECK((metal::invoke<LAMBDA(_) COMMA(M) LAMBDAS(M)>), (EXPR(_)<LAMBDAS(M)>)); \
/**/
GEN(MATRIX)