16template <
bool Condition,
typename T =
void>
struct enable_if {};
28template <
bool Condition,
typename T =
void>
32template <
typename Base,
typename Derived>
struct is_base_of {
53template <
typename T,
typename U>
struct is_same {
54 static constexpr bool value =
false;
58template <
typename T>
struct is_same<T, T> {
59 static constexpr bool value =
true;
91template <
typename T,
typename F>
struct conditional<false, T, F> {
95template <
bool B,
typename T,
typename F>
100 static constexpr bool value =
false;
107template <
typename T,
size_t N>
struct is_array<T[N]> {
126 static constexpr bool value =
false;
129template <
typename Ret,
typename... Args>
struct is_function<Ret(Args...)> {
133template <
typename Ret,
typename... Args>
138template <
typename Ret,
typename... Args>
143template <
typename Ret,
typename... Args>
180 static constexpr bool value =
false;
190 return static_cast<T &&
>(t);
197 "Cannot forward an rvalue as an lvalue");
198 return static_cast<T &&
>(t);
214template <
typename T>
struct remove_cv<const volatile T> {
237 static constexpr bool value =
false;
250template <>
struct is_pod<unsigned char> {
256template <>
struct is_pod<unsigned short> {
268template <>
struct is_pod<unsigned long> {
274template <>
struct is_pod<unsigned long long> {
297template <
typename C,
typename Ret,
typename... A>
299template <typename C, typename Ret, typename... A>
303 static constexpr bool value =
false;
306template <
typename C,
typename Ret,
typename... A>
311template <
typename C,
typename Ret,
typename... A>
320 static constexpr bool value =
false;
384template <
typename Base,
typename Derived>
398 template <
typename U,
void (U::*M)(U &)>
struct helper {};
411template <typename T, bool = has_member_swap<T>::value>
struct swap_impl;
424 static void apply(T &a, T &b) { a.swap(b); }
428template <
typename T>
void swap(T &a, T &b) {
446 static constexpr bool value =
false;
449template <
typename T,
typename U,
typename... Rest>
462template <
typename T,
typename... Rest>
struct max_size<T, Rest...> {
475template <
typename T,
typename... Rest>
struct max_align<T, Rest...> {
490#define FASTLED_DEFINE_POD_COMPARISON_OPERATOR(CLASS, OP) \
491 template <typename T, typename U> \
492 typename fl::enable_if< \
493 fl::is_same<U, CLASS>::value && fl::is_pod<T>::value, bool>::type \
494 operator OP(const T &pod, const CLASS &obj) { \
497 template <typename T> \
498 typename fl::enable_if<fl::is_pod<T>::value, bool>::type operator OP( \
499 const CLASS &obj, const T &pod) { \
Implements the FastLED namespace macros.
constexpr remove_reference< T >::type && move(T &&t) noexcept
typename conditional< B, T, F >::type conditional_t
void swap(array< T, N > &lhs, array< T, N > &rhs) noexcept(noexcept(lhs.swap(rhs)))
typename remove_cv< T >::type remove_cv_t
typename decay< T >::type decay_t
enable_if_t< is_base_of< Base, Derived >::value > is_derived
void swap_by_copy(T &a, T &b)
typename add_pointer< T >::type add_pointer_t
typename enable_if< Condition, T >::type enable_if_t
constexpr T && forward(typename remove_reference< T >::type &t) noexcept
typename remove_reference< T >::type remove_reference_t
Implements a simple red square effect for 2D LED grids.
static constexpr bool value
static constexpr bool value
typename remove_reference< T >::type U
typename conditional< is_array< U >::value, typename remove_extent< U >::type *, typename conditional< is_function< U >::value, typename add_pointer< U >::type, typename remove_cv< U >::type >::type >::type type
static yes test(helper< U, &U::swap > *)
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr bool value
static constexpr size_t value
static constexpr size_t value
static constexpr size_t value
static constexpr size_t value
static void apply(T &a, T &b)
static void apply(T &a, T &b)