Ответ 1
Невозможно документировать параметры вашего шаблона, как вы описали.
Я бы сказал, что это не очень хорошая идея, потому что тогда вы будете документировать параметры своего шаблона по-другому, чем обычные параметры, и зачем вам это нужно?
Обычно это выглядит так:
/*! \p transpose : transpose a matrix
*
* \param A input matrix
* \param At output matrix (transpose of A)
*
* \tparam MatrixType1 matrix
* \tparam MatrixType2 matrix
*/
template <typename MatrixType1, typename MatrixType2>
void transpose(const MatrixType1& A, MatrixType2& At);
и вы хотите, чтобы это выглядело следующим образом:!
/*! \p transpose : transpose a matrix
*
* \param A input matrix
* \param At output matrix (transpose of A)
*
*/
template <
typename MatrixType1, ///< matrix
typename MatrixType2 ///< matrix
>
void transpose(const MatrixType1& A, MatrixType2& At);
Почему?