gpt4 book ai didi

c++ - 如何将模板类的静态成员专门化为模板类型?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:35 27 4
gpt4 key购买 nike

假设我有以下类(class):

template<class T>
struct A
{
static int value;
};

template<class T>
int A<T>::value = 0;

我可以毫无问题地将 A::value 专门化为具体类型:

struct B
{
};

template<>
int A<B>::value = 1;

我想在模板类型上专门化 A::value,我尝试了以下操作:

template<class T>
struct C
{
};

// error: template definition of non-template 'int A<C<T> >::value'
template<>
template<class T>
int A<C<T> >::value = 2;

有什么办法可以做到这一点,还是只能在非模板类型上专门化 A::value?

最佳答案

您可以只对初始化进行特化,而不是引入一个完整的显式特化

template<class T>
struct Value {
static int const value = 0;
};

template<class T>
struct Value< C<T> > {
static int const value = 2;
};

template<class T>
int A<T>::value = Value<T>::value;

关于c++ - 如何将模板类的静态成员专门化为模板类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3949621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com