2014-07-15 19 views
6

w bibliotece Zajmuję, często mają tego rodzaju kodu:Jak dokumentować funkcje, które są włączone w SFINAE z Doxygen?

template<typename T = P, enable_if_c<has_V_field<T>> = detail::dummy> 
constexpr std::size_t v(){ 
    return T::V; 
} 

template<typename T = P, disable_if_c<has_V_field<T>> = detail::dummy> 
constexpr std::size_t v(){ 
    return 1; 
} 

dwóch funkcji zrobić to samo, ale są włączane w zależności od typu. Chciałbym udokumentować tylko jedną z nich, a co więcej, chciałbym, jeśli to możliwe, pokazać ją w Doxygen bez szablonu, jako constexpr std::size_t v(). Dla użytkownika szablony tutaj nie mają żadnej wartości.

Czy to możliwe w przypadku Doxygen?

Odpowiedz

1

Można umieścić funkcję, którą chcesz zobaczyć w sekcji warunkowego tak:

#ifdef DOXYGEN_ONLY 

/*! documentation for v. */ 
constexpr std::size_t v(); 

#else // actual implementation with two variants selected via SFINAE 

template<typename T = P, enable_if_c<has_V_field<T>> = detail::dummy> 
constexpr std::size_t v(){ 
    return T::V; 
} 

template<typename T = P, disable_if_c<has_V_field<T>> = detail::dummy> 
constexpr std::size_t v(){ 
    return 1; 
} 

#endif 

, a następnie użyj następujących ustawień konfiguracji:

ENABLE_PREPROCESSING = YES 
PREDEFINED    = DOXYGEN_ONLY 
Powiązane problemy