gpt4 book ai didi

带有类的 C++ 模板部分特化

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:52 25 4
gpt4 key购买 nike

我正在尝试使用类进行 C++ 部分模板特化。问题更多是关于语法而不是语义。其实我想要有如下的东西:

int main()
{
...
Reduce<int, float> r(new int, new float);
Reduce<int> r2(new int); // partial template specialization?
...
}

为了实现上述目标,我尝试了:

template <typename T, typename U>
class Reduce {
public:
Reduce(T *t, U *u) { }
};

template <typename T>
class Reduce<T,T> {
public:
Reduce(T *t) { }
};

对于上面的代码,我不能使用下面的语句:

Reduce<int> r2(new int); // error: wrong number of template arguments (1, should be 2)

我还要做:

Reduce<int, int> r2(new int); 

谁能解释一下:(1) 我怎样才能实现我想要的语法(如果可能的话)(2) 如果不可能,为什么? (即技术问题)

最佳答案

为第二个模板类型指定默认类型:

template <typename T, typename U = int>
class Reduce {
public:
Reduce(T *t, U *u) { }
};

或默认与第一个模板类型相同:

template <typename T, typename U = T>
class Reduce {
public:
Reduce(T *t, U *u) { }
};

参见 http://ideone.com/5RcEG例如。

关于带有类的 C++ 模板部分特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11292116/

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