0
클래스가 주어진 템플릿의 특성화 여부를 결정하는 형식 특성이 필요합니다. This answer은 대부분의 경우에 작동하는 구현을 제공합니다.정적 constexpr 멤버에 대한 is_specialization 형식 특성
그러나 static constexpr 멤버 유형에는 작동하지 않는 것 같습니다. (wandbox에서도 사용 가능) 다음 예에서 마지막 static_assert는 연타와 GCC 트렁크에 실패 :이 올바른 행동하고, 어떻게 내가이 일을하는 타입의 특성을 작성할 수 있습니다
#include <type_traits>
// from https://stackoverflow.com/questions/16337610/how-to-know-if-a-type-is-a-specialization-of-stdvector
template<typename Test, template<typename...> class Ref>
struct is_specialization : std::false_type {};
template<template<typename...> class Ref, typename... Args>
struct is_specialization<Ref<Args...>, Ref>: std::true_type {};
template<typename T>
struct bar {
bool x;
};
struct foo {
bar<int> y;
static constexpr bar<bool> z{true};
};
int main() {
static_assert(is_specialization<decltype(foo::y), bar>{});
static_assert(is_specialization<decltype(foo::z), bar>{});
}
나는이 개 질문이 static constexpr 멤버의 유형을 참조합니까?