STL in std

Bill Baxter dnewsgroup at billbaxter.com
Fri Dec 14 22:29:03 PST 2007


Paul Anderson wrote:
> Bill Baxter Wrote:
> 
>> 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
>> What's the distinction between std.* and stl.* then?  Anything in std.* 
>> can't have templates in it?  That seems like an artificial distinction 
>> to me.  The current way seems fine to me.
>>
>> --bb
> 
> I'm not suggesting that the existence of templates is the distinction. I'm suggesting that a reasonably stand-alone set of modules should not be mixed in higgledy-piggledy with all the rest.
> 
> From the Introduction to the Standard Template Library <http://www.sgi.com/tech/stl/stl_introduction.html>: "The Standard Template Library, or STL, is a C++ library of container classes, algorithms, and iterators; it provides many of the basic algorithms and data structures of computer science." 
> 
> I'm suggesting this library of classes, algorithms and iterators deserves it's own distinct package. Particularly since it is derived from an existing, well-known library.

I could be wrong, but I believe the new modules in std are only loosely 
inspired by C++'s STL.  Clearly Andrei is familiar with C++ STL, as any 
good C++ programmer should be, but I think it is serving only as a rough 
guide.  And even if he were trying to port it verbatim, the differences 
between D and C++ are great enough (especially in the area of templates) 
that the result wouldn't really end up all that much like the original 
STL anyway.

Finally, all of C++ STL lives in the std namespace, (along with some 
stuff like iostreams and wrappers of C headers that are not actually a 
part of STL), so if the new D stuff is intended to be a port, then 
doesn't it make the most sense for it to go into the std namespace in D 
too, along with the rest of the std library?

--bb



More information about the Digitalmars-d mailing list