Boost logo

Boost :

From: Gennaro Prota (gennaro_prota_at_[hidden])
Date: 2006-07-25 20:48:06


On Tue, 25 Jul 2006 19:25:04 -0500, "Hartmut Kaiser"
<hartmut.kaiser_at_[hidden]> wrote:

>> But what is the benefit? I think that's the key question. If
>> they don't have any they are just misleading. I'd say there
>> are very few exceptions to this (in truth the only one which
>> comes to mind is the nifty counter idiom).
>
>It's just an easy way to move a helper function 'out of the way'. But as
>always it's a matter of taste and personal style so I'm not going to argue
>with you :-P

Why not :-P Not sure what do you mean by 'out of the way' here. The
whole unnamed namespace is still subject to an implicit using
declaration:

 namespace { void my_helper(); }

behaves the same as

 namespace name_unique_to_the_translation_unit
 {}

 using name_unique_to_the_translation_unit;
 
 namespace name_unique_to_the_translation_unit
 { void my_helper(); }

Thus:

  // a.hpp
  //
  namespace wave {
    namespace { void my_helper(); }
  }

  // a.cpp
  //
  #include "a.hpp"
  namespace wave {

    int my_helper();

    void f()
    {
      my_helper(); // oops!
    }
  }

Comparing this with the version without unnamed namespace it seems to
me it only allows the error to go undetected longer (i.e. until you
attempt the function call)

>The mentioned problems are fixed now.

Thanks, but please only fix things if you are convinced that they need
to be fixed. There's no authority here :-)

--
[ Gennaro Prota, C++ developer for hire ]

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk