Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Bringing namespaces into scope is perfectly idiomatic C++, just don't do it in your headers.


IIRC, importing an entire namespace into scope is a feature that was added exclusively for backwards compatibility and is not idiomatic modern C++.

What is idiomatic is explicitly importing individual symbols into a name peace.

    #include <iostream>
    #include <vector>
    #include <string>
    
    using std::cout;
    using std::vector;
    using std::string;

    int main() { 
    
      vector<string> v {"explicit ", "is better ", "than implicit\n" };

      for (auto p: v) cout << p;
      
      return 0;
      
    }
I'm on mobile so please forgive errors.


Wow, I never knew about that. I always hated having std:: everywhere, just so I could have "correct" C++. But I also hated referencing to std implicitly. This is the perfect tradeoff: explicitly state intentions in the beginning, then implicitly reference them as you go. (works until you use eighty five billion lines just to import your symbols)


Sure, sure, but I don't know, personally it feels sloppy. Renaming namespaces to shorten them feels ok, as is importing specific names. Bringing in the whole shazam gives the impression that the person who was writing didn't really care very much.

But again, personal opinion - it can definitely be used in some contexts (just be consistent in your project!).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: