Boost's "cstdint" Usage

Posted by patt0h on Stack Overflow See other posts from Stack Overflow or by patt0h
Published on 2010-04-25T17:08:49Z Indexed on 2010/04/25 17:13 UTC
Read the original article Hit count: 261

Filed under:
|
|
|
|

Boost's C99 stdint implementation is awfully handy. One thing bugs me, though. They dump all of their typedefs into the boost namespace. This leaves me with three choices when using this facility:

  1. Use "using namespace boost"
  2. Use "using boost::[u]<type><width>_t"
  3. Explicitly refer to the target type with the boost:: prefix; e.g., boost::uint32_t foo = 0;

  • Option ? 1 kind of defeats the point of namespaces. Even if used within local scope (e.g., within a function), things like function arguments still have to be prefixed like option ? 3.
  • Option ? 2 is better, but there are a bunch of these types, so it can get noisy.
  • Option ? 3 adds an extreme level of noise; the boost:: prefix is often = to the length of the type in question.

My question is: What would be the most elegant way to bring all of these types into the global namespace? Should I just write a wrapper around boost/cstdint.hpp that utilizes option ? 2 and be done with it?


Also, wrapping the header like so didn't work on VC++ 10 (problems with standard library headers):

namespace Foo
{
  #include <boost/cstdint.hpp>

  using namespace boost;
}

using namespace Foo;

Even if it did work, I guess it would cause ambiguity problems with the ::boost namespace.

© Stack Overflow or respective owner

Related posts about c++

Related posts about boost