Is it possible to write the complete C++ standard library (including STL of course, but self-contained, only internal dependencies) using only C++? I would imagine containers and <cstdlib> functionality would be doable in terms of chars, bitshifts, and for loops and other byte fancy things, but stuff like exceptions and perhaps std::cout and std::cin seem hard to me without a dependency to begin with. Let’s say there is a set of OS functions available, that are completely implemented in assembly (to avoid any C contamination).
I’m assuming the compiler understands everything from classes and virtual functions to templates and function overloading, these are language level things and have no place in a library IMHO.
If this has been asked before or is a trivially stupid question, please forgive me. I’m not trying to start a C<->C++ war here, just trying to figure out the limitations of implementing a beast such as the Standard library…
Thanks!
Since pretty much anything written in C can be rewritten fairly easily in C++, you’re asking whether assembly code is needed, and the answer is generally no.
Unless we’re talking about embedded programming, operating systems have all the necessary file and I/O functionality available through system calls, usually (nowadays) in C format. The library needs to call them, likely through
extern "C"{ ... }declarations. The operating system functions are not considered part of the C++ library, and typically aren’t exact matches to anything defined in the C++ Standard.To implement a C++ standard library, you would need to be familiar with the language itself, know the OS calls you’re going to use, and have the algorithms you’re going to use. At that point, it’s a relatively straightforward matter of writing the software.