Boost logo

Boost :

From: Alexander Nasonov (alnsn_at_[hidden])
Date: 2006-04-02 16:21:41


Pavel Vozenilek wrote:
> 1. The documentation should really start with Rationale
> section and should contain complete examples.
> Examples written in this thread would be good start.

Since it is a small addition to type_traits I decided to follow
type_traits style. Rather then writing complete documentation
I wrote small pieces that can be easily integrated into type_traits
documentation.

> 2. Includes should use
>
> #include <boost/config.hpp>
Noted.

> 3. I got problems with Windows Intel 9.0:

Looks like it compiles in MS compatibility mode. I noticed some problems
with MS compiler. Have you tried MSVC or Intel with MS compatibility
switched off?

There is a status for some compilers at the begginning of
promote_enum_test.cpp:

// Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for
// 80x86
// /Ze (enable extentions) promotes UIntEnum incorrectly to int.
// /Za (disable extentions) is totally broken.

I was suprised to see that many compilers have problems with enums.

> 4. Intel 7.0 seems to be right out,
> I was not able to compile any example.

I tested only Intel 8.1 for Linux on FreeBSD. It works fine.

> 5. Playing with BCB: I got some promising success
> but full port would require longer work.
> I can help here if it gets accepted into Boost.

I appreciate this.

> As an appetizer: all [::boost::] need to be converted
> into [boost::] (BCB doesn't like the leading ::)
> and there are some strange issues with namespaces;
Thanks.

> 6. In
>
> #if (defined(BOOST_MSVC) && (BOOST_MSVC == 1200)) \
> || (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) &&
> (BOOST_INTEL_CXX_VERSION <= 600)) \
> || (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER ==
> 1200))
>
> just all versions of BCB should be covered.
> 5.5, 5.6 and 5.8 do have the __intX thing.
>
> BCB version 0x600 doesn't exist yet.
>
>
> Similarly all Windows Intel compilers I know about have __intX
> as a separate type - the check <= 600 should be omitted too.

I copied this #if from <boost/type_traits/is_integral.hpp>
Have you noticed TODO nearby? It says:
// TODO: common macro for this #if. Or better yet, PP SEQ of non-standard types.

Thanks for comments,

-- 
Alexander Nasonov

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