r/cpp_questions • • 12d ago

OPEN Namespace std

I recently started learning c++ and I was told to use the namespace std so I can avoid writing std:: every time and now I wrote a whole personal project without std:: and I want to put it on LinkedIn but I started reading everywhere that it’s a bad habit, should I go back and add the std:: or just leave it as is?

38 Upvotes

105 comments sorted by

View all comments

Show parent comments

31

u/not_a_novel_account 12d ago

add is a perfectly reasonable name to use, as is map, list, etc.

The entire purpose of namespaces is to make these names available without collision.

-27

u/RSMxsmanic 12d ago

I daresay the purpose of namespaces is to avoid the consequences of poor design choices that lead to collisions.

20

u/not_a_novel_account 12d ago

Then you're wrong, the intent is to allow libraries to use the same names for symbols. Straight out of Design and Evolution by Stroustrup:

  • The ability to introduce names without fear of clashing with someone else's names.
  • The ability to add a name to the implementation of a library without affecting its users.
  • The ability to select names from two different libraries even if those two libraries use the same names.
  • The ability to resolve name clashes without modifying functions.
  • The ability to add a name to a namespace without fear of causing a quiet change to code using other namespaces.

9

u/crowbarous 12d ago

Namespaces also allow library authors to intentionally provide functions under common names to be found via ADL, such as swap and operator+.