есть ли способ заставить функции принимать только векторы целых чисел (int, unsigned int, uint32_t и т. Д.) И только эти?Я пытаюсь написать простую функцию, которая возвращает сумму всех значений с одинаковым типом возврата (так как я не могу быть уверен, будет ли значение больше (2 ^ 32 - 1). Однако, поскольку std::vector<T>
неу меня есть оператор cout
для всего типа, я не могу сделать sum(vector<vector<T> >)
, так как он вернет вектор (игнорируя тот факт, что вектор + вектор не работает). Я не хочу перегружать каждый тип, чтобы что-то отслеживать, потому что я немне просто нужно, чтобы функция работала, когда T - это некоторая форма типа int (и, если возможно, с плавающей точкой)
Я пытался использовать try/except
, но кодовые блоки ловят операторы типов, поэтому я не могускомпилировать, если я sum(vector <vector <T> >)
template <typename T>
T sum(std::vector <T> in){
try{
T total = 0;
for(int x = 0; x < in.size(); x++)
total += in[x];
return total;
}
catch (int e){
std::cout << "Error " << e << " has occured." << std::endl;
exit(e);
}
}