Одним из (так много) неудачных недостатков дизайна C++ является то, что в принципе невозможно отделить реализацию от интерфейса при использовании метапрограммирования шаблонов.Скрыть детали реализации шаблона от Doxygen
Все над моей библиотекой у меня есть такие вещи, как:
template <typename Ma, typename Mb>
typename boost::enable_if_c<
detail::IsMatrix<Ma>::val and detail::IsMatrix<Mb>::val and
detail::MatrixDimensionCheck<Ma,Mb>::isStaticMatch,
bool>::type
operator==(const Ma &a, const Mb &b) {
return detail::matrixEqual(a,b);
}
Если это нечитаемое, я не виню тебя. Большая часть этого беспорядка просто определяет тип возвращаемого значения как bool
, если аргументы являются матрицами и соответствующими размерами, и не определены, если они что-то другое (таким образом, полагаясь на SFINAE, чтобы этот оператор не скрывал другие важные вещи).
Так как кинематика по существу статической проверки типов функция теперь встроена в подпись моей обычной функции C++, эти реализационные кишки появятся в сгенерированной документации.
Я не хочу, чтобы пользователь должен был прочитать это. Все, что им нужно знать, это то, что эта функция возвращает bool
(что почти невозможно сказать, прочитав выше). В документах я могу кратко, на простом английском языке, объяснить, что этот оператор принимает только матрицы.
Есть ли способ уговорить Doxygen сделать этот беспорядок типа bool
? (Я предполагаю, что более или менее нет возможности очистить это в коде напрямую, но идеи приветствуются, если вы можете что-то придумать).
Есть причины, почему я предпочитаю рукописную документацию по «автоматически генерируется» документации. Я почти всегда трачу больше времени на создание системы документации/исправление ее приемлемости, в то время как я мог бы написать всю документацию в действительно хорошем формате. – orlp
@nightcracker: до тех пор, пока вы ничего не измените, например параметры, функции и т. Д., Не обновляя документацию. Затем он выходит из строя и становится хуже, чем бесполезно. Кроме того, Doxygen поддерживает рукописную документацию просто отлично. –
Возможно, это вопрос [this] (http://stackoverflow.com/questions/3435225/c-meta-programming-doxygen-documentation). – elemakil