Я хочу написать шаблонную функцию на c ++ 14 и хочу сделать тип возвращаемого значения функции максимально гибким. Поэтому иногда параметры, принимаемые функцией, являются примитивами (int
, double
), но иногда они могут быть контейнерами или даже Eigen
объектами!
Так что с примитивами я бы просто написал что-то вроде этого:
template<typename T, typename U>
auto normalise(T first, U second)
{
return first * second;
}
Но предположим, что если я поставлю Eigen::VectorXd
, этот код не будет работать. Как я могу преодолеть этот барьер?
Я собирался добавить оператор if, но я не смогу ничего сравнить, так как параметры не будут объявлены до этого.