Hi Harald, > On 26 Aug 2015, at 16:32 , Heese, Harald <harald.he...@philips.com> wrote: > > Hi Dimitri! > > Thanks for the quick answer. > > You are right, the provided code does not compile. The modified example now is > > //! a test class with overloaded template members > class Bar > { > public: > //! first overload of template member function > template <typename T> > T foo(T a, int b) > { return a; } > > //! second overload of template member function > template <typename T> > T foo(T a, double c) > { return a; } > }; > > //! force instantiation of first overload for type 'short' > template short Bar::foo<short>(short, int); > > If you compile this using > gcc -c bar.cpp > > the corresponding object file will contain exactly one symbol (which you can > see using nm). This is exactly what is intended (to force the creation of a > symbol for a specific template parameter). > > The syntax you suggested refers to a different concept, namely "template > specialization". In that case, the statement > template<> short Bar::foo<short>(short, int); > is a function declaration, which would require a separate function definition > in order to create a corresponding symbol. If I would compile the modified > example with your suggestion, then the corresponding object file does not > contain any symbols (which is not what is intended).
I see. A solution/workaround is to use \relates, i.e.: //! \relates Bar //! \brief force instantiation of first overload for type 'short' template short Bar::foo<short>(short, int); Regards, Dimitri ------------------------------------------------------------------------------ _______________________________________________ Doxygen-users mailing list Doxygen-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/doxygen-users