]> git.lyx.org Git - lyx.git/blob - boost/boost/config/stdlib/roguewave.hpp
make it compile without exceptions on gcc 2.96
[lyx.git] / boost / boost / config / stdlib / roguewave.hpp
1 //  (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
2 //  distribute this software is granted provided this copyright notice appears
3 //  in all copies. This software is provided "as is" without express or implied
4 //  warranty, and with no claim as to its suitability for any purpose.
5
6 //  See http://www.boost.org for most recent version.
7
8 //  Rogue Wave std lib:
9
10 #if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
11 #  include <utility>
12 #  if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
13 #     error This is not the Rogue Wave standard library
14 #  endif
15 #endif
16 //
17 // figure out a consistent version number:
18 //
19 #ifndef _RWSTD_VER
20 #  define BOOST_RWSTD_VER 0x010000
21 #elif _RWSTD_VER < 0x010000
22 #  define BOOST_RWSTD_VER (_RWSTD_VER << 8)
23 #else
24 #  define BOOST_RWSTD_VER _RWSTD_VER
25 #endif
26
27 #ifndef _RWSTD_VER
28 #  define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
29 #else
30 #  define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
31 #endif
32
33 //
34 // Prior to version 2.2.0 the primary template for std::numeric_limits
35 // does not have compile time constants, even though specializations of that
36 // template do:
37 //
38 #if BOOST_RWSTD_VER < 0x020200
39 #  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
40 #endif
41
42 //
43 // No std::iterator if it can't figure out default template args:
44 //
45 #if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
46 #  define BOOST_NO_STD_ITERATOR
47 #endif
48
49 //
50 // No iterator traits without partial specialization:
51 //
52 #if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
53 #  define BOOST_NO_STD_ITERATOR_TRAITS
54 #endif
55
56 //
57 // Prior to version 2.0, std::auto_ptr was buggy, and there were no
58 // new-style iostreams, and no conformant std::allocator:
59 //
60 #if (BOOST_RWSTD_VER < 0x020000)
61 #  define BOOST_NO_AUTO_PTR
62 #  define BOOST_NO_STRINGSTREAM
63 #  define BOOST_NO_STD_ALLOCATOR
64 #  define BOOST_NO_STD_LOCALE
65 #endif
66
67 //
68 // No template iterator constructors without member template support:
69 //
70 #if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
71 #  define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
72 #endif
73
74 //
75 // RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
76 // (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
77 // on HP aCC systems even though the allocator is in fact broken):
78 //
79 #if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100)
80 #  define BOOST_NO_STD_ALLOCATOR
81 #endif
82
83 //
84 // If we have a std::locale, we still may not have std::use_facet:
85 //
86 #if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
87 #  define BOOST_NO_STD_USE_FACET
88 #  define BOOST_HAS_TWO_ARG_USE_FACET
89 #endif
90
91 //
92 // There's no std::distance prior to version 2, or without
93 // partial specialization support:
94 //
95 #if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
96     #define BOOST_NO_STD_DISTANCE
97 #endif
98
99 //
100 // Some versions of the rogue wave library don't have assignable
101 // OutputIterators:
102 //
103 #if BOOST_RWSTD_VER < 0x020100
104 #  define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
105 #endif
106
107