TTKMusicPlayer  4.2.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
Macros
ttktraits.h File Reference

Go to the source code of this file.

Macros

#define TTK_DECLARE_HAS_MEMBER(__trait_name__)
 
#define TTK_DECLARE_GLOBAL_SIGNATURE(__trait_name__, __func_name__)
 
#define TTK_DECLARE_CLASS_SIGNATURE(__trait_name__, __func_name__)
 

Macro Definition Documentation

#define TTK_DECLARE_CLASS_SIGNATURE (   __trait_name__,
  __func_name__ 
)
Value:
template <typename Void, typename Obj, typename Func> \
struct __trait_name__ : std::false_type {}; \
template <typename Obj, typename Func> \
struct __trait_name__<std::void_t<decltype(static_cast<Func Obj::*>(&Obj::__func_name__))>, Obj, Func> : std::true_type {}; \
template <typename Obj, typename Func> \
using __trait_name__##Check = __trait_name__<void, Obj, Func>;

Definition at line 61 of file ttktraits.h.

#define TTK_DECLARE_GLOBAL_SIGNATURE (   __trait_name__,
  __func_name__ 
)
Value:
std::nullptr_t __func_name__(...); \
template <typename T> \
struct __trait_name__ \
{ \
template <typename U, U> struct helper; \
template <typename U> static std::uint8_t test(helper<U*, &__func_name__>*); \
template <typename U> static std::uint16_t test(...); \
static constexpr bool value = sizeof(test<T>(0)) == sizeof(std::uint8_t); \
}

Definition at line 50 of file ttktraits.h.

#define TTK_DECLARE_HAS_MEMBER (   __trait_name__)
Value:
template <typename T, typename... Args> \
struct has_member_##__trait_name__ \
{ \
private: \
template <typename U> \
static auto test(int)->decltype(std::declval<U>().__trait_name__(std::declval<Args>() ...), std::true_type()); \
template <typename U> \
static std::false_type test(...); \
public: \
static constexpr bool value = std::is_same<decltype(test<T>(0)), std::true_type>::value; \
}
#define T(v)
Definition: http_parser.c:237

Definition at line 23 of file ttktraits.h.