
On Wed, Jun 29, 2005 at 12:59:57PM +0100, John Maddock wrote:
Umm, now I'm confused. Why is explicit instantiation in more than one translation unit illegal?
I think I must be loosing it.... I can't find any such prohibition anywhere.... I was so sure that I'd had problems with this in the past as well!
You are referring to the explicit instantiation of the same template specialization in several TUs, aren't you? That is indeed prohibited. I am too lazy to look for chapter and verse in my copy of the standard but Vandevoorde and Josuttis write in "C++ Templates. The Complete Guide": Section 6.2.1: There should be, at most, one explicit instantiation of each distinct entity in a program. [...] Not following this rule usually results in linker errors that report duplicate definitions of the instantiated entities. Section 10.5: The standard also specifies that there can be at most one explicit instantiation of a certain template specialization in a program. Furthermore, if a template specialization is explicitly instantiated, it should not be explicitly specialized, and vice versa. Regards Christoph -- http://www.informatik.tu-darmstadt.de/TI/Mitarbeiter/cludwig.html LiDIA: http://www.informatik.tu-darmstadt.de/TI/LiDIA/Welcome.html