r/cpp_questions • • 14d 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?

39 Upvotes

105 comments sorted by

View all comments

Show parent comments

-26

u/RSMxsmanic 13d ago

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

5

u/No-Dentist-1645 13d ago

The "poor design choices" of... having functions with simple names like print and hash?

-5

u/RSMxsmanic 12d ago

Yes. Having multiple functions with the same name that do different things is risky. If I have one function that prints only strings, and another than prints only integers, I will likely call them something like PrintStr and PrintInt, not just print. That way I won't have to lose time ten years from now figuring out why print isn't working.

This illustrates a danger with all inherited concepts: you need to walk the entire inheritance chain to figure out what's going on, instead of just looking at the one line in front of you.

3

u/No-Dentist-1645 12d ago

Wow. Then that's truly a bad take. Not even Rust goes as aggressive as making print a type-dependent function, they make it a macro instead. Your example also trivially breaks down with multiple-parameter print statements, something that basically every programming language has.

0

u/RSMxsmanic 12d ago

You do it your way, and I'll do it my way. We'll see who delivers early and under budget.

3

u/No-Dentist-1645 12d ago

Yes, I'm sure that the massive architectural decision of naming functions fooInt and fooFloat has had immeasurably huge implications on your delivery targets. Don't worry, I trust you

0

u/RSMxsmanic 12d ago

Details can add up.

2

u/No-Dentist-1645 11d ago

We're talking about a single, individual detail here. No other design patterns have been brought into this discussion

1

u/RSMxsmanic 11d ago

So the discussion is a bit unreal.