template<in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
void triangular_matrix_left_product(InMat A, Triangle t, DiagonalStorage d, InOutMat C);
template<class ExecutionPolicy,
in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
void triangular_matrix_left_product(ExecutionPolicy&& exec,
InMat A, Triangle t, DiagonalStorage d, InOutMat C);
template<in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
void triangular_matrix_right_product(InMat A, Triangle t, DiagonalStorage d, InOutMat C);
template<class ExecutionPolicy,
in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
void triangular_matrix_right_product(ExecutionPolicy&& exec,
InMat A, Triangle t, DiagonalStorage d, InOutMat C);