Я пишу библиотеку, которая широко использует мета-программирования, и имеет классы свойств, таких какСкрыть специализации шаблона Параметры в Doxygen Output
/// Doxygen comments...
template<class T>
struct unit_traits<T, typename void_t<
typename T::base_unit_type,
typename T::conversion_ratio,
typename T::pi_exponent_ratio,
typename T::translation_ratio>::type>
{
typedef typename T::base_unit_type base_unit_type; ///< typedef documentation
typedef typename T::conversion_ratio conversion_ratio; ///< typedef documentation
typedef typename T::pi_exponent_ratio pi_exponent_ratio; ///< typedef documentation
typedef typename T::translation_ratio translation_ratio; ///< typedef documentation
};
Однако специализация просто деталь реализации (есть в других местах, где специализации используются для завершения рекурсий и т. д.), и он загромождает вывод doxygen, поскольку пользователю библиотеки действительно нужно знать, что доступно unit_traits<someType>::...
. Есть ли способ скрыть параметры специализации в документации, желательно без создания фиктивных целей документации?
UPDATE
Просто чтобы быть ясно, я попытался следующие, и они не скрывают специализации:
template<class T>
struct unit_traits
/** @cond */
<T, typename void_t<
typename T::base_unit_type,
typename T::conversion_ratio,
typename T::pi_exponent_ratio,
typename T::translation_ratio>::type>
/** @endcond */
{
typedef typename T::base_unit_type base_unit_type;
typedef typename T::conversion_ratio conversion_ratio;
typedef typename T::pi_exponent_ratio pi_exponent_ratio;
typedef typename T::translation_ratio translation_ratio;
};
и
template<class T>
struct unit_traits
#ifndef DOXYGEN_SHOULD_SKIP_THIS
<T, typename void_t<
typename T::base_unit_type,
typename T::conversion_ratio,
typename T::pi_exponent_ratio,
typename T::translation_ratio>::type>
#endif
{
typedef typename T::base_unit_type base_unit_type;
typedef typename T::conversion_ratio conversion_ratio;
typedef typename T::pi_exponent_ratio pi_exponent_ratio;
typedef typename T::translation_ratio translation_ratio;
};
Возможный дубликат: http://stackoverflow.com/questions/20979469/template-specialisation-of-a-static-function-is-shown-in-doxygen-genered- documen – Jonathan
это не дубликат этого вопроса, потому что вы не можете/** @cond */просто специализации, вы должны игнорировать всю структуру, используя этот метод.Я все еще хочу, чтобы 'struct unit_traits' был документирован, я просто не хочу, чтобы он показывал специализацию. –