Boost logo

Boost :

From: Dave Abrahams (abrahams_at_[hidden])
Date: 2000-05-31 18:48:18


Looking at operators.hpp I note the line:

          class D = ptrdiff_t,

And I note two other facts:
1. There is no #include <cstddef>, which is where ptrdiff_t is defined
2. There is a std:: qualification missing on ptrdiff_t

Now, I know from working on the STLport that we will have problems on
one of the compilers we're trying to support in that case
(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) if we write
std::ptrdiff_t, since the compiler's default lib puts all those names
in the global namespace even if you use the new-style headers.

The STLport effectively brings all those names into std for you, so
you can write conforming code.

We have 3 options that I can see:

1. #define BOOST_CSTD_ to be either 'std', or nothing depending on
the standard library in use. When we write names from the 'C'
library, we qualify with BOOST_CSTD_::. This is a pain in the butt,
but has the least potential impact on users and is more likely to
stay correct.

2. Require the use of a more-conforming standard library
implementation, like the STLport.

3. Do nothing.

Opinions?
Dave


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