STL in std

S S at s.com
Fri Dec 14 15:44:35 PST 2007


Templates generate new binary objects.  The way the D compiler currently handles them is very screwy.

For example:

if foo.d makes use of a template in bar.d for the type of "string" then:

dmd foo.d bar.d 

will generate foo.o and bar.o.  Said instance of the template in bar exists in bar.o.   If, however, foo.d is compiled separate from bar.d it will compile fine, but no template code will be generated.

In order for phobos to have templates you would have to include the d files from phobos that have templates in them on the command-line and then link them together.

The other option to fix this is to have DMD implicitly, or by option, put the generated object code for the template in the object file corresponding to the D file that used it.

This second option causes name conflicts when linking two sources that used the same template.....  The linker can be told to ignore duplicates though.  I think this is the best option.

-SC


Paul Anderson Wrote:

> While I appreciate the addition of the Standard Template Library to phobos in 2.008, I have misgivings about the package name(s). Rather than naming them std.algorithm, std.functional, etc., how about stl.algorithm, stl.functional, etc., i.e., STL rather than STD. Or, if the similarity is too confusing, std.stl.algorithm, std.stl.functional,...
> 
> I know there is an ongoing flat (phobos) vs. hierarchical (Tango) debate, but this seems to me to be a clear case for using a distinct package (or subpackage) name: a group of interrelated modules that are (more or less) independent of other packages.
> 
> The alternative seems to be an ever-lengthening list of std.betterbeverydescriptive packages.
> 
> I hope since this is a very recent addition it won't cause a lot of work to rename them in the next release. 
> 
> Anyone else feel the same way?
> 
> Paul




More information about the Digitalmars-d mailing list