Re: standard namespace
On Apr 21, 6:36 pm, blargg....@gishpuppy.com (blargg) wrote:
Alf P. Steinbach wrote:
* blargg:
Alf P. Steinbach wrote:
[...]
I'd agree if the above were the reasoning, but the <c*>
headers DO reliably put those names IN namespace std, so
that one can consistently refer to standard names with
std:: in one's own code.
Puzzling.
What advantage do you see in that?
* It's an advantage for you to write std::printf instead
of just printf?
It's an advantage to be ABLE to write std::whatever when
whatever is a name from the standard library, rather than
having to write std::whatever for some names, and whatever for
others.
I'm not sure I follow. In my projects, I'm using several
standard libraries: C++, Posix, Sybase... And I do have to keep
them straight; I can't write std::pthread_mutex_init, for
example. And the look and feel of the C library is closer to
Posix than it is to C++, so it actually seems more natural to
not use std::. How is time, in time.h, different from poll, in
poll.h? And what about popen, in stdio.h (but not necessarily
in <cstdio>---at least, I can't find a document anywhere that
guarantees it). Not to mention that two of the most used
facilities in the C library, assert and errno, are macros, and
will be without the std:: even if I use the <c*> headers.
In most header files, you don't want a using directive, so the
consistency is a benefit:
Consistency is an enormous benefit. None of the other C
libraries I use (Posix, etc.) put their names in std::, so why
should the standard C library?
[...]
Only in a header file where you don't want a using directive;
in a source file, you'd rather drop std:: entirely:
I disagree. Within a function, you might use a using
declaration, to shorten the name, but otherwise: the name of the
standard input in C++ is std::cin, not cin, and that's the way
you normally write it.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34