Я хочу определить пользовательские сокращения OpenMP для типов из библиотеки Eigen, в частности матрицы. Мне удалось определить один для определенного типа c, то есть вектора с динамическим размером long int
s, но я бы предпочел определить их более широко. Можно ли определить шаблонные сокращения? Конечно, следующее не компилируется ('#pragma' is not allowed here
):
template<typename Derived>
#pragma omp declare reduction(+ : Eigen::MatrixBase<Derived> : std::transform( \
omp_out.begin(), omp_out.end(), \
omp_in.begin(), omp_out.begin(), \
std::plus<Index>() \
)) \
initializer( omp_priv = decltype(omp_orig)::Zero( \
omp_orig.rows(), omp_orig.cols() \
) )
(фрагмент кода, основанный на этот ответ на мой предыдущий вопрос)
Есть ли способ определения шаблонных пользовательских сокращений или что-то, что достигает той же цели?
Я знаю этот вопрос кстати. Это не то же самое, потому что он описывает использование стандартного сокращения в шаблонной функции.