Quote:
You can't decouple C# and .NET
Yes you can. .NET is just a CLR implementation, you can run C# on any CLR implementation. Furthermore, nothing in the C# standard really mandates that you use a CLR... you could have the language compile to native code if you liked (though nobody has bothered to implement such a C# compiler).
In any case...
Quote:
You can write, run and ship a C++ program without the STL. You can (and I have) write C++ in environments where the STL does not exist.
There are two things wrong here. First, did you really mean the STL (the old SGI library), or did you mean the SC++L (the modern standard C++ library, which contains some of what used to be the STL)? They are different, although commonly used interchangeable, so clarifying your meaning would help.
I'll assume you meant the SC++L, because that makes the most sense in this context. I'll also assume that by .NET you mean the standard library that is exposed by .NET (all the System.* stuff), since I already pointed out the fallacy in your statements when .NET is taken to mean the underlying common language runtime implementation.
In that case, you're still wrong. Just because you ship code that does not
utilize the SC++L does not mean it isn't there. Likewise, just because you ship code that makes no reference to the System namespace doesn't mean it isn't there. But you can, in fact, ship code in both C++ and C# that does not make use of the standard library as long as you rely appropriately on 3rd party libraries (otherwise there's actually very little you can do with the language).
This tends to be true of many languages, in fact. The actual
language intrinsics portion of a language tends to be very limiting, and the standard library facilities (built on top of those basic intrinsics) tend to be what gives many languages their expressiveness and power. The way that many modern languages (and even C++ is moving in this direction) entangle their language intrinsics with their standard library (for example, as syntactic sugar) is becoming increase more common and pervasive, so it makes even less sense nowadays to consider a language without its standard library.
Note that you can make the argument that you worked with an implementation of language X that lacked its standard library (for example, C++ without any of the standard headers), but this really doesn't hold up because such an implementation is not standard-conforming, at which point you can say, make or do pretty much anything with said implementation since it has no baseline. Consequently, any remotely standards-conforming C++ environment should ship with a remotely-standards-conforming implementation of the SC++L (but not necessarily the STL, as its the SC++L that is detailed in the C++ Standard document, not the STL, which is technically a 3rd party library despite what the S stands for).