Аргументы шаблона или функции как детали реализации в doxygen?

Есть ли в doxygen какой-либо общий способ указать, что некоторые параметры шаблона C ++ для параметров функции являются деталями реализации и не должны указываться пользователем?

Например, параметр шаблона, используемый в качестве счетчика уровня рекурсии в методе метапрограммирования, или параметр SFINAE в функции?

Например :

/// \brief Do something
/// \tparam MyFlag A flag...
/// \tparam Limit Recursion limit
/// \tparam Current Recursion level counter. SHOULD NOT BE EXPLICITELY SPECIFIED !!!
template<bool MyFlag, unsigned int Limit, unsigned int Current = 0> myFunction();

Есть ли нормализованный вариант с кислородом, эквивалентный «НЕ ДОЛЖНО БЫТЬ УКАЗАНО !!!» ?

1

Решение

Мне кажется, что весь шаблон — это деталь реализации другого интерфейса:

template<bool MyFlag, unsigned int Limit, unsigned int Current = 0> myFunctionImpl();

template<bool MyFlag, unsigned int Limit> myFunction() {
myFunctionImpl<MyFlag, Limit, 0>();
}

Теперь становится проще документировать: myFunction() (и все его аргументы) являются частью интерфейса, который не включает счетчик итераций. myFunctionImpl() является реализацией этого интерфейса и не нуждается в документировании вообще (или только в минимальной степени с комментарием, утверждающим, что это деталь реализации, и пользовательский код не должен зависеть от него или использовать его напрямую). Если вы хотите, вы можете заключить реализацию в #ifdef блокировать так, чтобы препроцессор doxygen удалил его, и он не появился в сгенерированной документации.

3

Другие решения

Один из способов сообщить, что параметр не должен быть указан, — это скрыть его в документации. Например, вы можете условно скомпилировать внутренние параметры:

/// \brief Do something
/// \tparam MyFlag A flag...
/// \tparam Limit Recursion limit
template<bool MyFlag, unsigned int Limit
#if !defined(DOXYGEN)
, unsigned int Current = 0
#endif
> myFunction();

Это предотвратит их появление в документации, но они все равно будут доступны для реализации.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector