假设我为一个大小数组创建了一个模板:
template <int Size>
class SizedArray {
private:
std::vector<int> array_;
public:
SizedArray() {
for (int i = 0; i < Size; ++i) {
array_.push_back(0);
}
}
... // other methods
};
我想定义一个新函数
merge
,该函数创建一个新的SizedArray
,其中包含来自两个SizedArray
的元素template<typename SizeA, typename SizeB>
SizedArray<SizeA + SizeB> merge(SizedArray<SizeA> a, SizedArray<SizeB> b) {
// additional code
}
但是,当我尝试编译此代码时,出现错误,提示“模板参数1无效”(可能是由于返回类型的
SizeA + SizeB
部分)。有没有一种方法可以创建依赖返回类型,该依赖返回类型是函数参数的依赖类型的总和? 最佳答案
SizeA
和SizeB
在函数声明中是typename
,而不是int
。您显然不能添加类型,但是如果您将函数的模板参数声明为int
,则一切正常。