6#if __cplusplus <= 199711L
13#define FL_STATIC_ASSERT_JOIN_IMPL(a, b) a##b
14#define FL_STATIC_ASSERT_JOIN(a, b) FL_STATIC_ASSERT_JOIN_IMPL(a, b)
16#define FL_STATIC_ASSERT_NAME FL_STATIC_ASSERT_JOIN(fl_static_assert_, __COUNTER__)
18#define FL_STATIC_ASSERT_NAME FL_STATIC_ASSERT_JOIN(fl_static_assert_, __LINE__)
20#define FL_STATIC_ASSERT_IMPL(expression) \
21 typedef char FL_STATIC_ASSERT_NAME[sizeof( \
22 ::fl::static_assert_failure<(bool)(expression)>)]
23#define FL_STATIC_ASSERT_SELECT(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
24 _11, _12, _13, _14, _15, _16, NAME, ...) \
26#define FL_STATIC_ASSERT_EXPR_1(expression) expression
27#define FL_STATIC_ASSERT_EXPR_2(expression, message) expression
28#define FL_STATIC_ASSERT_EXPR_3(a, b, message) a, b
29#define FL_STATIC_ASSERT_EXPR_4(a, b, c, message) a, b, c
30#define FL_STATIC_ASSERT_EXPR_5(a, b, c, d, message) a, b, c, d
31#define FL_STATIC_ASSERT_EXPR_6(a, b, c, d, e, message) a, b, c, d, e
32#define FL_STATIC_ASSERT_EXPR_7(a, b, c, d, e, f, message) a, b, c, d, e, f
33#define FL_STATIC_ASSERT_EXPR_8(a, b, c, d, e, f, g, message) a, b, c, d, e, \
35#define FL_STATIC_ASSERT_EXPR_9(a, b, c, d, e, f, g, h, message) a, b, c, d, \
37#define FL_STATIC_ASSERT_EXPR_10(a, b, c, d, e, f, g, h, i, message) a, b, c, \
39#define FL_STATIC_ASSERT_EXPR_11(a, b, c, d, e, f, g, h, i, j, message) a, b, \
40 c, d, e, f, g, h, i, j
41#define FL_STATIC_ASSERT_EXPR_12(a, b, c, d, e, f, g, h, i, j, k, message) a, \
42 b, c, d, e, f, g, h, i, j, k
43#define FL_STATIC_ASSERT_EXPR_13(a, b, c, d, e, f, g, h, i, j, k, l, \
45 a, b, c, d, e, f, g, h, i, j, k, l
46#define FL_STATIC_ASSERT_EXPR_14(a, b, c, d, e, f, g, h, i, j, k, l, m, \
48 a, b, c, d, e, f, g, h, i, j, k, l, m
49#define FL_STATIC_ASSERT_EXPR_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, \
51 a, b, c, d, e, f, g, h, i, j, k, l, m, n
52#define FL_STATIC_ASSERT_EXPR_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, \
54 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o
55#define FL_STATIC_ASSERT_EXPR(...) \
56 FL_STATIC_ASSERT_SELECT(__VA_ARGS__, FL_STATIC_ASSERT_EXPR_16, \
57 FL_STATIC_ASSERT_EXPR_15, \
58 FL_STATIC_ASSERT_EXPR_14, \
59 FL_STATIC_ASSERT_EXPR_13, \
60 FL_STATIC_ASSERT_EXPR_12, \
61 FL_STATIC_ASSERT_EXPR_11, \
62 FL_STATIC_ASSERT_EXPR_10, \
63 FL_STATIC_ASSERT_EXPR_9, FL_STATIC_ASSERT_EXPR_8, \
64 FL_STATIC_ASSERT_EXPR_7, FL_STATIC_ASSERT_EXPR_6, \
65 FL_STATIC_ASSERT_EXPR_5, FL_STATIC_ASSERT_EXPR_4, \
66 FL_STATIC_ASSERT_EXPR_3, FL_STATIC_ASSERT_EXPR_2, \
67 FL_STATIC_ASSERT_EXPR_1)(__VA_ARGS__)
71#define FL_STATIC_ASSERT(...) \
72 FL_STATIC_ASSERT_IMPL((FL_STATIC_ASSERT_EXPR(__VA_ARGS__)))
76#define FL_STATIC_ASSERT(...) static_assert(__VA_ARGS__)
Base definition for an LED controller.