도대체 _DEFINE_SPEC라는 매크로는 무엇인가요?

dltkddyd의 이미지

#define _DEFINE_SPEC_0_HELPER                          \
  template<>
 
#define _DEFINE_SPEC_1_HELPER                          \
  template<typename _Tp>
 
#define _DEFINE_SPEC_2_HELPER                          \
  template<typename _Tp, typename _Cp>
 
#define _DEFINE_SPEC(_Order, _Trait, _Type, _Value)    \
  _DEFINE_SPEC_##_Order##_HELPER                       \
    struct _Trait<_Type>                               \
    : public integral_constant<bool, _Value> { };

이 _DEFINE_SPEC라는 것이 어떻게 작동되는 것인지 모르겠습니다.

is_integral 클래스의 경우

template struct __is_integral_helper:public false_type { };

경우는 있는데,

template struct __is_integral_helper<_Tp>:public false_type { };

이런 식의 특수화된 템플릿 클래스는 없습니다. 저 _DEFINE_SPEC만 있고요.