假设我为一个大小数组创建了一个模板:

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部分)。有没有一种方法可以创建依赖返回类型,该依赖返回类型是函数参数的依赖类型的总和?

最佳答案

SizeASizeB在函数声明中是typename,而不是int。您显然不能添加类型,但是如果您将函数的模板参数声明为int,则一切正常。

09-06 22:25