
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