509

Someone brought this article to my attention that claims (I'm paraphrasing) the STL term is misused to refer to the entire C++ Standard Library instead of the parts that were taken from SGI STL.

(...) it refers to the "STL", despite the fact that very few people still use the STL (which was designed at SGI).

Parts of the C++ Standard Library were based on parts of the STL, and it is these parts that many people (including several authors and the notoriously error-ridden cplusplus.com) still refer to as "the STL". However, this is inaccurate; indeed, the C++ standard never mentions "STL", and there are content differences between the two.

(...) "STL" is rarely used to refer to the bits of the stdlib that happen to be based on the SGI STL. People think it's the entire standard library. It gets put on CVs. And it is misleading.

I hardly know anything about C++'s history so I can't judge the article's correctness. Should I refrain from using the term STL? Or is this an isolated opinion?

Community
  • 1
  • 1
Pieter
  • 31,619
  • 76
  • 167
  • 242
  • [related discussion](http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Advanced-STL-2-of-n) – fredoverflow Mar 05 '11 at 17:42
  • 69
    People need good names to describe things. Stepanov's genius changed the way we program. A name like "standard library programming" is utterly useless to describe that. Call it "stl programming" and *everybody* knows what you mean. Arguing about that just misses the point: we need a good name. – Hans Passant Mar 05 '11 at 19:00
  • 39
    @Hans: No, _you_ miss the point: "_everybody_ knows what you mean" is **not true**. – Lightness Races in Orbit Mar 06 '11 at 22:28
  • 20
    I have no idea what you mean. – Hans Passant Mar 06 '11 at 22:30
  • 1
    @Hans: So read the article, and all the answers below. I don't see what is so confusing about "no, you're wrong, not everybody knows what you mean". – Lightness Races in Orbit Mar 08 '11 at 14:53
  • 3
    @Hans: Yes, "STL programing" is a good tag to put on code that uses the STL. It is, however, a very bad tag to put on code that uses IO streams. Both the STL and streams are part of the standard library, which encompasses different concepts for different tasks. Of course, those tasks would then have to be tagged differently, too. – sbi Mar 10 '11 at 14:14
  • 24
    [Here](http://stackoverflow.com/questions/5647543/implementing-simple-stl-compatible-input-stream) is a perfect example of someone who is using "the STL" to refer to the entire C++ Standard Library. It continues to baffle me that so many people swear blind that nobody ever does this, when it's plain to see almost on a daily basis. – Lightness Races in Orbit Apr 13 '11 at 10:28
  • 19
    [2,747 results for "stl streams" on Stack Overflow](http://stackoverflow.com/search?q=stl+streams). – Lightness Races in Orbit Apr 19 '11 at 14:08
  • 1
    "For most intents and purposes, STL == C++ standard library, but there are some differences" http://stackoverflow.com/questions/5719842/what-is-wrong-with-my-usage-of-c-standard-librarys-find – Lightness Races in Orbit Apr 19 '11 at 17:01
  • 1
    The `STL` was not originally developed at `SGI` it was developed by Stepanov at Hewlett Packard and was formally accepted into the C++ Standard at least a year before `SGI` released their implementation. Stepanov actively worked with members of the Standard Committee (esp Bjarne Stroustrup) for its inclusion into the `C++` standard and Stepanov himself referred to the library's inclusion in the Standard Library as the `STL`. So the term `STL` has **always** been associated with its inclusion in the Standard Library, even by its author and by those who helped him to develop the proposal. – Galik May 21 '17 at 05:47
  • Presumably this is why every major `C++` author continues to refer to those parts of the Standard Library as the `STL` referring to the *containers* and *algorithms*. The term has never been used to refer to the Standard Library as a whole by any authoritative text. – Galik May 21 '17 at 05:49
  • 2
    The original author of the `STL` refers to it as part of the C++ Standard Draft Library in this article from `1995` http://stepanovpapers.com/BYTE_com.htm **"The Standard Template Library is a framework of data structures (called containers in STL) and algorithms accepted as part of the draft C++ standard. A reference implementation of STL has bee n put into the public domain by Hewlett-Packard (it can be downloaded from butler.hpl.hp.com), and a growing number of commercial vendors are now shipping STL. "** – Galik May 21 '17 at 06:29
  • @Galik I had read that article in russian and being russian, I should note that the russian word related to english "standard" have save root but have got a slightly broader meaning in colloquial language than english term. It does not necessary imply that it is set by standard document, standard didn't existed way back then. It only implies that it should be commonly used. There are people who say that STL was written just few days before standard was out, which is incorrect. It was written by Stepanov during years of work in HP, the "creation" date is date of publishing it. – Swift - Friday Pie Feb 07 '19 at 08:11
  • @Swift-FridayPie That article was written after the `STL` had been *officially accepted* into the standard by the standards committee. The standard, at that time, was still in a draft state and Stepanov had been working with members of the Standards committee, mainly Stroustrup, on the details of the library for its inclusion in the standard. In the article he literally says it is **"accepted as part of the draft C++ standard"** – Galik Feb 07 '19 at 08:34

7 Answers7

640

The "STL" was written by Alexander Stepanov in the days long before C++ was standardised. C++ existed through the 80s, but what we now call "C++" is the language standardised in ISO/IEC 14882:2014 (and earlier versions, such as ISO/IEC 14882:2011).

The STL was already widely used as a library for C++, giving programmers access to containers, iterators and algorithms. When the standardisation happened, the language committee designed parts of the C++ Standard Library (which is part of the language standard) to very closely match the STL.

Over the years, many people — including prominent book authors, and various websites — have continued to refer to the C++ Standard Library as "the STL", despite the fact that the two entities are separate and that there are some differences. These differences are even more pronounced in the upcoming new C++ standard, which includes various features and significantly alters some classes.

The original STL is now often called "an implementation of the C++ Standard Template Library" (rather backwards to actual history!), in the same way that your Microsoft Visual Studio or GCC ships an implementation of the C++ Standard Library. But the "Standard Template Library" and the "Standard Library" are not the same thing.

The battle is about whether the current Standard Library should be called "the STL" in whole or in part, and/or whether it matters what it's called.

For "STL"

There is a school of thought that says that everybody knows now that "STL" means the standard library, just as everybody now knows that "C++" is the ISO-standardised language.

It also includes those who believe that it doesn't really matter as long as all parties understand what is being talked about.

It's a term made even more prevalent by the nature of the beast, much of which makes heavy use of the C++ feature known as "templates".

For "C++ Standard Library" (or stdlib)

However, there is another school of thought — to which I subscribe — that says that this is confusing. People learning C++ for the first time do not know this distinction, and may not notice small language differences.

The author of that article has numerous times encountered people who believe that the entire C++ Standard Library is the STL, including features that were never part of the STL itself. Most vocal proponents of "the STL", in contrast, know exactly what they mean by it and refuse to believe that not everybody "gets it". Clearly, the term's usage is not uniform.

In addition, there are some STL-like libraries that are in fact implementations of the original STL, not the C++ Standard Library. Until recently, STLPort was one of them (and even there, the confusion abounds!).

Further, the C++ Standard does not contain the text "STL" anywhere, and some people habitually employ phrases like "the STL is included in the C++ Standard Library", which is plain incorrect.

It's my belief that continuing to propagate the usage of the term in this way will just lead to the misunderstanding going on forever. Alas, it may be entirely counter-productive to attempt to change things, even if it's supposed to be for the better. We may just be stuck with double-meanings forever.

Conclusion

I appreciate that this post has been a little biased: I wrote the article you linked to. :) Anyway, I hope this helps to explain the battle a bit better.

Update 13/04/2011

Here are three perfect examples of someone who is using "the STL" to refer to the entire C++ Standard Library. It continues to baffle me that so many people swear blind that nobody ever does this, when it's plain to see almost on a daily basis.

Community
  • 1
  • 1
Lightness Races in Orbit
  • 378,754
  • 76
  • 643
  • 1,055
  • If there are any opposing views that I have not mentioned, please comment and I will be more than happy to add them to the answer (even though I would disagree with them). – Lightness Races in Orbit Mar 05 '11 at 17:57
  • 145
    The *S*tandard *T*emplate *L*ibrary was not only created by *St*epanov and *L*ee, but they were also working at the *S*oftware *T*echnology *L*aboratory at the time. – Kragen Javier Sitaker Mar 15 '11 at 06:50
  • 22
    Had someone today asking what header `std::iota` is in, because he couldn't get it to work. [It's an SGI non-standard extension](http://www.sgi.com/tech/stl/iota.html), that they call "standard" when it suits them because it's "the STL", and everybody knows that "the STL" is part of the C++ Standard Library, right? And it was introduced in C++0x, but is not available in C++03. Grrr. – Lightness Races in Orbit Jun 23 '11 at 23:48
  • 1
    [Another example of someone talking about the STL as if it were a synonym for the whole stdlib.](http://stackoverflow.com/questions/7482567/is-there-a-clean-separating-definition-between-stl-and-c-standard-library/7482752#7482752) – Lightness Races in Orbit Sep 20 '11 at 09:15
  • 47
    And MS STL is maintained by *S*tephan *T*. *L*avavej, aka STL. – Mihaela Mar 11 '12 at 14:54
  • 14
    [Apparently even STL himself uses "STL" to mean the whole damn lot](http://stackoverflow.com/a/14572050/560648) – Lightness Races in Orbit Feb 12 '13 at 11:51
  • 29
    Bjarne Stroustrup specifically differentiates the STL from other parts of the Standard Library in the "canon", The C++ Programming Language 4th Edition. – codenheim Aug 16 '14 at 01:22
  • Interestingly, as noted by Stepanov himself, the very first version of STL was written in Scheme (a Lisp dialect), the next was in Ada iirc and in C++ it is actually version 3. – Peter K May 18 '15 at 10:44
  • Would you then be a proponent of burninating the *stl* tag and establishing a tag like *cppstdlib* or somesuch? – Kuba hasn't forgotten Monica Jul 24 '15 at 15:20
  • 1
    @KubaOber: In my perfect hypothetical reality? Yes, absolutely. [tag:stdlib] would do nicely. In the real world? Nah, probably not. More trouble than its worth as long as this misconception is so horribly widespread. Or perhaps it would help...? Hmm, dunno. I do know that I wouldn't get much support for it, so whatever. :) – Lightness Races in Orbit Jul 24 '15 at 15:22
  • 2
    @mrjoltcola 'Bjarne Stroustrup specifically differentiates the STL from other parts of the Standard Library in the "canon"' -- Stroustrup is a /was a professor somewhere, and I guess there is an obligation in that profession to acknowledge the use of others' work, ie the inclusion of STL into the C++ standard. Though he allegedly removed half of the content so that it can be accepted by the conservative standard committee. – thor Jan 07 '16 at 07:40
  • @LightnessRacesinOrbit I really like your answer! – Curious Feb 04 '16 at 02:55
  • 2
    Every prominent author and every important text on `C++` refers only to the *containers* and *algorithms* parts of the standard library as the `STL` which gives the usage proper legitimacy. The reason being that the `STL` and its philosophy are revolutionary and need to be referred to as a whole for purposes of Computer Science and Education. Other parts of the Standard Library are not properly referred to as the `STL` and surely it should be our job to correct people rather than add to the confusion? – Galik Jul 03 '16 at 23:05
  • 2
    @Galik: Correcting people is what I am trying to do. Mixing terms is what confuses people. – Lightness Races in Orbit Jul 03 '16 at 23:38
  • 3
    @LightnessRacesinOrbit I did spend some time looking for a book that used the term `STL` to refer to something other than the *containers*, *iterators* and *algorithms* portion of the Standard Library and I was unable to find one. We all know that Straustrup, Mayer, Sutter and others use the term as I have described. I have yet to find an author from the [Recommended Books](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) list that doesn't. – Galik Jul 04 '16 at 00:03
  • @LightnessRacesinOrbit I think you contradict yourself in your answer. First you say `"there is a school of thought that says that everybody knows now that "STL" means the standard library"`. And then `"The author of that article has numerous times encountered people who believe that the entire C++ Standard Library is the STL, including features that were never part of the STL itself"`. That's the same thing. My point is, the origin of the term STL has only historical significance. People learning C++ now *don't need* to know what the STL was back then. It's just an alias for the stdlib now. – Alex Aug 28 '16 at 19:42
  • 1
    @Alex: How is that a contradiction? I know it's the same thing, and never claimed otherwise. I simply referred to the same group of people at difference places in my answer. – Lightness Races in Orbit Aug 28 '16 at 19:48
  • The contradiction I see is that if we simplify your statements we get this: "Some people believe X to be true. I do not agree because I have encountered many people who believe X to be true", and then some arguments follow. – Alex Aug 28 '16 at 19:59
  • Though you are probably right that there is still confusion. A better way to put what I wanted to say is, there *could* be no confusion if we just agree to call the standard library STL :) – Alex Aug 28 '16 at 20:00
  • @Alex: Indeed, if every C++ developer sat down and came to an agreement, then there would no longer be disagreement. But that hasn't happened, and likely never will :) – Lightness Races in Orbit Aug 28 '16 at 20:01
  • 1
    Compounding the issue is that the C++ standard library is a conglomeration of modified complete and/or partial versions of other libraries, and/or unique libraries based on those aforementioned other libraries, such as the C standard library, the STL, and Boost. It can be helpful to have a term to refer to each of these groups in the standard library, but the main issue is that no one actually _explains_ the terms and their origins. – Justin Time - Reinstate Monica Feb 08 '17 at 19:02
  • 4
    It's obvious from the name that the C compatibility headers contain the interfaces for the "C standard library" component of the C++ standard library, and the part from Boost doesn't seem to have its own subgroup name (as far as I'm aware, at least), but most tutorials and other sites don't explain that "the STL" is specifically the portion of the C++ standard library that's based on the original STL, which leads to a lot of confusion when they use the term STL (since, without explanation, it just looks like an abbreviation for _STandard Library_ ). – Justin Time - Reinstate Monica Feb 08 '17 at 19:03
  • Do you have this account https://stackoverflow.com/users/560648/lightness-races-in-orbit and also https://stackoverflow.com/users/18771/tomalak ? Is one of them inactive? – Johannes Schaub - litb Mar 01 '18 at 17:38
  • 1
    @JohannesSchaub-litb: No, the other Tomalak is a German gentleman, with no relationship to myself. It's just a co-incidence. Why do you ask? – Lightness Races in Orbit Mar 01 '18 at 17:41
  • @LightnessRacesinOrbit haha, I thought I only know a single Tomalak. But now I realize they are actually two person. Thanks :) – Johannes Schaub - litb Mar 01 '18 at 17:53
  • 2
    @JohannesSchaub-litb: Yes unfortunately the phrase "there is only one Tomalak" is not actually true – Lightness Races in Orbit Mar 01 '18 at 17:55
  • Am I misreading here? This answer seems to say that the "STL" literally only means the *original* implementation by SGI of C++ templates, iterators, algorithms, etc. However, here is a paper by Stroustroup, et al, which uses the term - though unfortunately doesn't define it. I guess they mean some subset of any iteration of the C++ standard library... http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3351.pdf – cp.engr Sep 06 '18 at 15:15
  • 1
    @cp.engr You must be misreading because most of this answer tells how there are different opinions/approaches/points of view on the topic. You've found one of them. Not sure what else to say about it really – Lightness Races in Orbit Sep 06 '18 at 16:16
  • @LightnessRacesinOrbit, the answer says "some people habitually employ phrases like 'the STL is included in the C++ Standard Library', which is plain incorrect." And yet they language creators appear to be using it in this way. I agree that there is inconsistency, and that it is not clearly defined (AFAIK), but it seems to me the only way to rectify the situation would be to escalate the issue, and get the language/library maintainers to make a statement on it. – cp.engr Sep 06 '18 at 17:01
  • 1
    @cp.engr Yes, the language creators are often as guilty as anyone else. That's one reason that escalating it will be of little purpose: this argument has been beaten to death and it's not a good use of time to continue fighting it. – Lightness Races in Orbit Sep 06 '18 at 17:33
  • 1
    *[github.com/microsoft/STL: MSVC's implementation of the C++ Standard Library.](https://github.com/microsoft/STL/)* *Sigh.* – Marc.2377 Oct 28 '19 at 08:16
  • 1
    @Marc.2377 Sadface :( – Lightness Races in Orbit Oct 28 '19 at 11:01
91

There is no one answer that's really correct. Alexander Stepanov developed a library he called STL (working for HP at the time). That library was then proposed for inclusion in the C++ standard.

That basically "forked" development. The committee included some parts, rejected others completely, and redesigned a few (with Alexander's participation). Development of the original library was later moved to Silicon Graphics, but continued separately from the C++ standard library.

After those pieces were added to the standard library, some other parts of the standard library were modified to fit better with what was added (e.g., begin, end, rbegin and rend were added to std::string so it could be used like a container). Around the same time, most of the library (even pieces that were completely unrelated) were made into templates to accommodate different types (e.g., standard streams).

Some people also use STL as just a short form of "STandard Library".

That means when somebody uses the term "STL" they could be referring to any of about half a dozen different things. For better or worse, most people who use it seem to ignore the multiplicity of meanings, and assume that everybody else will recognize what they're referring to. This leads to many misunderstandings, and at least a few serious flame-wars that made most of the participants look foolish because they were simply talking about entirely different things.

Unfortunately, the confusion is likely to continue unabated. It's much more convenient to refer to "STL" than something like "the containers, iterators, and algorithms in the C++ standard library, but not including std::string, even though it can act like a container." Even though "C++ standard library" isn't quite as long and clumsy as that, "STL" is still a lot shorter and simpler still. Until or unless somebody invents terms that are more precise (when necessary), and just as convenient, "STL" will continue to be used and confusion will continue to result.

L. F.
  • 19,445
  • 8
  • 48
  • 82
Jerry Coffin
  • 476,176
  • 80
  • 629
  • 1,111
  • @Tomalak Geret'kal: That sort of works for the whole standard library, but even there you run into a problem: when I say (for example): "X is in stdlib", am I referring to what the standard requires all conforming compilers to supply, or what a particular compiler happens to supply? – Jerry Coffin Mar 05 '11 at 20:09
  • 5
    @Jerry: The former; that's what "std" stands for. :) – Lightness Races in Orbit Mar 06 '11 at 15:14
  • @Tomalak Geret'kal: The point wasn't to ask how you'd use it, but to point to the fact that different people use the term in different ways (and one of the points of adding namespaces was to *allow* vendors to define extra names safely...) – Jerry Coffin Mar 06 '11 at 15:59
  • 7
    @Jerry: Not sure where namespaces come into it. Compliant implementations do not add anything to namespace `std`. I was talking about the "std" in "stdlib", which stands for "standard". I think it's pretty clear what that means! – Lightness Races in Orbit Mar 06 '11 at 22:27
  • @Tomalak Geret'kal: Of course, an implementation allowed to add things to `std` (§17 lists several classes of reserved identifiers). It's not at clear what "standard" means though -- Microsoft has (recently) worked at clarifying what parts of the "standard" library are in the standard, but gcc generally does a lot less to differentiate between "mandated by the standard", and "provided in our library." – Jerry Coffin Mar 06 '11 at 22:36
  • 4
    @Jerry: I really don't think that it's a stretch to expect someone to read the adjective "standard" as "this is in the standard". Meanwhile, 17.4.3.1/1 is quite clear that adding things to namespace `std` is UB except in some specific named cases: these cases of addition are named in the standard, and thus are still perfectly compliant; "standard" would still apply. – Lightness Races in Orbit Mar 06 '11 at 23:18
  • 2
    The history of SGI and HP here is backwards. Stepanov was at HP before he was at SGI. – Kragen Javier Sitaker Mar 15 '11 at 06:52
  • 2
    I just reread the comments here and thought it was worth adding one more (admittedly minor) point: I think it is a bit of a stretch to expect "standard" to always mean "this is in the standard". In particular, many C++ programmers used the phrase "standard library" long before there *was* a standard. Lest one think they were referring to the library in the C standard, I'll point out that the same was true of C programmers well before there was (even a draft of) a C standard. – Jerry Coffin Dec 18 '13 at 15:07
64

The term "STL" or "Standard Template Library" does not show up anywhere in the ISO 14882 C++ standard. So referring to the C++ standard library as STL is wrong. The term "C++ Standard Library" or "standard library" is what's officially used by ISO 14882:

ISO 14882 C++ Standard:

17 - Library introduction [lib.library]:

  1. This clauses describes the contents of the C++ Standard Library, how a well-formed C++ program makes use of the library, and how a conforming implementation may provide the entities in the library.

...

STL is a library originally designed by Alexander Stepanov, independent of the C++ standard. However, some components of the C++ standard library include STL components like vector, list and algorithms like copy and swap.

But of course the C++ standard includes much more things outside the STL, so the term "C++ standard library" is more correct (and is what's actually used by the standards documents).

In silico
  • 51,091
  • 10
  • 150
  • 143
24

I've made this same argument recently, but I believe a little tolerance can be allowed. If Scott Meyers makes the same mistake, you're in good company.

Mark Ransom
  • 299,747
  • 42
  • 398
  • 622
  • 2
    @Tomalak & @Mark: Actually Scott doesn't, `-1` from me. The book is indeed about the STL in the meaning of "the parts of the std lib stemming from Stepanov's library". Take the time to look through the books TOC. The only thing outside the original STL I could find was `std::string`, and that had been equipped to be a full-blown STL container. – sbi Mar 10 '11 at 14:21
  • 1
    @sbi: You've evidently misinterpreted my position. I would not use "STL" in the manner that Scott does. Please read my answer. – Lightness Races in Orbit Mar 10 '11 at 15:17
  • 6
    @Tomalak, I would not use "STL" in that manner either, although I've probably been guilty of it in the past. I just don't think it's worth beating people up over. – Mark Ransom Mar 10 '11 at 18:33
  • 1
    That I can respect. I get most arsy about people who refuse to acknowledge the potential ambiguity at all. :) – Lightness Races in Orbit Mar 11 '11 at 01:09
  • 12
    You'd also be in the company of Bjarne Stroustrup - ref. eg. http://www.stroustrup.com/DnE2005.pdf : "the STL (the "Standard Template Library"; that is, the containers and algorithm framework of the ISO C++ standard library)" – Sander De Dycker Aug 11 '14 at 13:21
  • @SanderDeDycker not sure I got your point. In the given quote Stroustrup refers to STL as to a subset of the standard library, which encompasses containers and algorithms and not entire standard c++ library. – The Dreams Wind Jan 22 '23 at 07:55
  • @TheDreamsWind : The OP asked whether the term STL should be used at all when talking about the C++ standard library (whether referring to parts of it or its entirety). This answer points out a prominent person that does use the term in that context, and all I did was add another such person to the list. I wasn't making a point (other than echoing Mark Ransom's sentiment that it's not a huge deal if you use the term), nor did I intend to make a value judgment on the quote I mentioned. – Sander De Dycker Jan 22 '23 at 09:28
14

From the GNU Standard C++ Library (libstdc++) FAQ:


The STL (Standard Template Library) was the inspiration for large chunks of the C++ Standard Library, but the terms are not interchangeable and they don't mean the same thing. The C++ Standard Library includes lots of things that didn't come from the STL, and some of them aren't even templates, such as std::locale and std::thread.

Libstdc++-v3 incorporates a lot of code from the SGI STL (the final merge was from release 3.3). The code in libstdc++ contains many fixes and changes compared to the original SGI code.

In particular, string is not from SGI and makes no use of their "rope" class (although that is included as an optional extension), neither is valarray nor some others. Classes like vector<> were from SGI, but have been extensively modified.

More information on the evolution of libstdc++ can be found at the API evolution and backwards compatibility documentation.

The FAQ for SGI's STL is still recommended reading.


FYI, as of March 2018 even the official STL web site www.sgi.com/tech/stl/ is gone.

Nicol Bolas
  • 449,505
  • 63
  • 781
  • 982
vstepaniuk
  • 667
  • 6
  • 14
-2

In layman words: STL is part of Standard Library.

C++ Standard Library is group into:

  1. Standard Functional Library -I/O, -String and character handling, -Mathematical, -Time, date, and localization, -Dynamic allocation, -Miscellaneous, -Wide-character functions

  2. Standard OOP and Generics Library -The Standard C++ I/O Classes -The String Class -The Numeric Classes -The STL Container Classes -The STL Algorithms -The STL Function Objects -The STL Iterators -The STL Allocators -The Localization library -Exception Handling Classes -Miscellaneous Support Library

So if you are talking about STL as Standard Library, it is OK and just remember that STL implementations allow for generics and others are more specific to one type.

Please refer to https://www.tutorialspoint.com/cplusplus/cpp_standard_library.htm

-3

C++ Standard Library includes C++ STL

The contents of the C++ standard library are:

  1. C++ version of C language header file
  2. C++ IO header file
  3. C++ STL

So please don’t confuse the C++ standard library with STL.

  • 4
    While it is true that *parts* of the STL were incorporated into the C++98 standard library, it is not true that STL, IOStream, and C-stuff are the only things in the standard library. Even the C++98 standard library. – Nicol Bolas Aug 02 '20 at 03:47