Возврат шаблонных зависимых типов

Допустим, я создаю шаблон для массивного размера:

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 содержащие элементы из двух SizedArrays

template<typename SizeA, typename SizeB>
SizedArray<SizeA + SizeB> merge(SizedArray<SizeA> a, SizedArray<SizeB> b) {
// additional code
}

Тем не менее, когда я пытаюсь скомпилировать этот код, я получаю сообщение об ошибке «Аргумент шаблона 1 недействителен» (предположительно из-за SizeA + SizeB часть типа возврата). Есть ли способ создать зависимый тип возврата, который является суммой зависимых типов аргументов функции?

2

Решение

SizeA а также SizeB являются typenameс не ints в объявлении вашей функции. Вы, очевидно, не можете добавлять типы, но если вы объявите параметры шаблона функции как int все будет работать.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]