0
クラスが特定のテンプレートの特殊化であるかどうかを判断するタイプの特性が必要です。 This answerは、ほとんどの場合に機能する実装を提供します。静的なconstexprメンバのis_specialization型の特性
しかし、静的な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>{});
}
私は2つの質問があります私は静的なconstexprメンバの型を参照していますか?