class B>
Либо оба типа - целые, либо оба типа - с плавающей точкой.
Я хочу выбрать, какой из них шире, и вернуть из функции значение такого типа.
Это возможно?
да, возможно. есть std::common_type, но скорее всего вам подойдёт просто auto
я только что об этом подумал, даже написал т акое вот template <class A, class B> auto sum(A a, B b) { return a+b; } Но в моём случае, похоже, не подходит: надо перемножить два вектора template <class V, class U> void multiply(const vector<V>& vv, const vector<U>& vu) { }
Это называется шаблон с одним параметром
Он видимо имеет в виду что-то типа typename broader<int16_t, int32_t>::type a; // int32_t
Ну уж извинтиляйте, так Страуструп упражнение формулирует: Write a template function that takes a vector<T> vt and a vector<U> vu as arguments and returns the sum of all vt[i]*vu[i] s.
Так просто std::vector<decltype(vt[0]*vu[0])>
Обсуждают сегодня