Рекомендации по написанию функций, использующих матрицы / массивы Эйгена, очень хорошо документированы здесь. Но меня интересует, как сделать то же самое для Eigen :: Tensor. предметы и выражения.
В частности, я хочу написать общие шаблонные функции, которые принимают тензорные объекты или выражения в качестве параметров при выполнении некоторых операций с ними (включая изменение размера / модификацию).
Я пробовал использовать TensorBase ‹> в качестве параметра функции, например:
template<class Derived, int AccessLevel>
void myRankAgnosticFunc(Eigen::TensorBase<Derived, AccessLevel >& tensor) {
...
tensor.derived().resize(...); // Doesn't work since derived() is private
....
}
Однако в отличие от Eigen :: MatrixBase производная () защищена и не может использоваться.
Есть предложения, как писать общие шаблонные функции с объектами Eigen :: Tensor?