From: Martynas Kunigelis Newsgroups: comp.os.msdos.djgpp Subject: C++ templates: another reason to switch to ELF Date: Mon, 10 Feb 1997 16:11:30 +0000 Organization: LITNET Lines: 21 Message-ID: NNTP-Posting-Host: santaka.sc-uni.ktu.lt Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Hi folks! You might or might not be familiar with the problem g++ has with templates: if you instantiate a particular class/function template with the same parameters in different translation units, code for those instances will be duplicated everywhere you do so. There's a workaround using #pragma interface/implementation, but it's unportable and rather ugly. Borland solved this problem by adding extra intelligence to their linker, so the linker eliminates duplicated code. GNU linker also can do this, but only for two formats: ELF and AOUT. The key here is __attribute__((weak)), which is supported only on these two formats. In fact, ELF-configured g++ emits weak attribute for every piece of template code, so duplicated stuff gets eliminated. Voila! There's also a Cygnus patch implementing template instance repository a la CFront, but it's unofficial and has many other disadvantages. Anyone willing to do the hard job? Martynas