forked from boostorg/config
This commit was manufactured by cvs2svn to create branch
'boost-graph-library'. [SVN r7698]
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
|
||||
// See http://www.boost.org for the most recent version.
|
||||
|
||||
#include <boost\config.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <iostream>
|
||||
|
||||
using std::cout;
|
||||
@@ -23,10 +23,6 @@ int main()
|
||||
cout << "BOOST_NO_INCLASS_MEMBER_INITIALIZER defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_ITERATOR_TRAITS
|
||||
cout << "BOOST_NO_ITERATOR_TRAITS defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_MEMBER_TEMPLATES
|
||||
cout << "BOOST_NO_MEMBER_TEMPLATES defined\n";
|
||||
# endif
|
||||
@@ -43,6 +39,10 @@ int main()
|
||||
cout << "BOOST_NO_STD_ITERATOR defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_STD_ITERATOR_TRAITS
|
||||
cout << "BOOST_NO_STD_ITERATOR_TRAITS defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_STDC_NAMESPACE
|
||||
cout << "BOOST_NO_STDC_NAMESPACE defined\n";
|
||||
# endif
|
||||
|
@@ -11,8 +11,12 @@
|
||||
// http://www.boost.org/libs/config
|
||||
|
||||
// Revision History (excluding minor changes for specific compilers)
|
||||
// 1 Sep 00 BOOST_NO_PRIVATE_IN_AGGREGATE added. (Mark Rodgers)
|
||||
// 23 Jul 00 Fixed spelling of BOOST_NO_INCLASS_MEMBER_INITIALIZATION in
|
||||
// comment (Dave Abrahams).
|
||||
// 10 Jul 00 BOOST_NO_POINTER_TO_MEMBER_CONST added (Mark Rodgers)
|
||||
// 26 Jun 00 BOOST_NO_STD_ITERATOR, BOOST_MSVC_STD_ITERATOR,
|
||||
// BOOST_NO_ITERATOR_TRAITS, BOOST_NO_USING_TEMPLATE,
|
||||
// BOOST_NO_STD_ITERATOR_TRAITS, BOOST_NO_USING_TEMPLATE,
|
||||
// added (Jeremy Siek)
|
||||
// 20 Jun 00 BOOST_MSVC added (Aleksey Gurtovoy)
|
||||
// 14 Jun 00 BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS (Jens M.)
|
||||
@@ -46,11 +50,7 @@
|
||||
// parameters cannot have a dependent type, for example
|
||||
// "template<class T, typename T::type value> class X { ... };"
|
||||
|
||||
// BOOST_NO_INCLASS_MEMBER_INITIALIZER: Compiler violates std::9.4.2/4.
|
||||
|
||||
// BOOST_NO_ITERATOR_TRAITS: The compiler does not provide a standard
|
||||
// compliant implementation of std::iterator_traits. Note that
|
||||
// the compiler may still have a non-standard implementation.
|
||||
// BOOST_NO_INCLASS_MEMBER_INITIALIZATION: Compiler violates std::9.4.2/4.
|
||||
|
||||
// BOOST_NO_MEMBER_TEMPLATES: Member template functions not fully supported.
|
||||
// Also see BOOST_MSVC6_MEMBER_TEMPLATES in the Compiler Control section below.
|
||||
@@ -63,9 +63,20 @@
|
||||
// friend functions to be defined at namespace scope, then using'ed to boost.
|
||||
// Probably GCC specific. See boost/operators.hpp for example.
|
||||
|
||||
// BOOST_NO_POINTER_TO_MEMBER_CONST: The compiler does not correctly handle
|
||||
// pointers to const member functions, preventing use of these in overloaded
|
||||
// function templates. See boost/functional.hpp for example.
|
||||
|
||||
// BOOST_NO_PRIVATE_IN_AGGREGATE: The compiler misreads 8.5.1, treating classes
|
||||
// as non-aggregate if they contain private or protected member functions.
|
||||
|
||||
// BOOST_NO_STD_ITERATOR: The C++ implementation fails to provide the
|
||||
// std::iterator class.
|
||||
|
||||
// BOOST_NO_STD_ITERATOR_TRAITS: The compiler does not provide a standard
|
||||
// compliant implementation of std::iterator_traits. Note that
|
||||
// the compiler may still have a non-standard implementation.
|
||||
|
||||
// BOOST_NO_STDC_NAMESPACE: The contents of C++ standard headers for C library
|
||||
// functions (the <c...> headers) have not been placed in namespace std.
|
||||
// Because the use of std::size_t is so common, a specific workaround for
|
||||
@@ -80,7 +91,9 @@
|
||||
// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION. Class template partial
|
||||
// specialization (14.5.4 [temp.class.spec]) not supported.
|
||||
|
||||
// BOOST_NO_USING_TEMPLATE: This needs some docs!
|
||||
// BOOST_NO_USING_TEMPLATE: The compiler will not accept a using declaration
|
||||
// that imports a template from the global namespace into a named namespace.
|
||||
// Probably Borland specific.
|
||||
|
||||
// Compiler Control or Information Macros ----------------------------------//
|
||||
//
|
||||
@@ -142,10 +155,11 @@
|
||||
# if __BORLANDC__ <= 0x0550
|
||||
// Borland C++ Builder 4 and 5:
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# define BOOST_NO_USING_TEMPLATE
|
||||
# define BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||
# if __BORLANDC__ == 0x0550
|
||||
// Borland C++ Builder 5, command-line compiler 5.5:
|
||||
# define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||
# define BOOST_NO_USING_TEMPLATE
|
||||
# endif
|
||||
# endif
|
||||
# if defined BOOST_DECL_EXPORTS
|
||||
@@ -177,6 +191,7 @@
|
||||
# elif defined __MWERKS__
|
||||
# if __MWERKS__ <= 0x2301
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# define BOOST_NO_POINTER_TO_MEMBER_CONST
|
||||
# endif
|
||||
# if __MWERKS__ >= 0x2300
|
||||
# define BOOST_SYSTEM_HAS_STDINT_H
|
||||
@@ -204,6 +219,7 @@
|
||||
# define BOOST_MSVC _MSC_VER
|
||||
# if _MSC_VER <= 1200 // 1200 == VC++ 6.0
|
||||
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
# define BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||
|
||||
// VC++ 6.0 has member templates but they have numerous problems including
|
||||
// cases of silent failure, so for safety we define:
|
||||
@@ -274,7 +290,7 @@
|
||||
# ifdef BOOST_NO_STDC_NAMESPACE
|
||||
# include <cstddef>
|
||||
namespace std { using ::ptrdiff_t; using ::size_t; }
|
||||
// using ::wchar_t; removed to work around old compilers (Ed Brey)
|
||||
// using ::wchar_t; removed since wchar_t is a C++ built-in type (Ed Brey)
|
||||
# endif
|
||||
|
||||
|
||||
|
87
index.htm
Normal file
87
index.htm
Normal file
@@ -0,0 +1,87 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<title>Configuration Header</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
<table border="1" bgcolor="#007F7F" cellpadding="2">
|
||||
<tr>
|
||||
<td bgcolor="#FFFFFF"><img src="../../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
|
||||
<td><a href="../../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
|
||||
<td><a href="../../libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
|
||||
<td><a href="../../people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
|
||||
<td><a href="../../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
|
||||
<td><a href="../../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h1>Configuration Header <a href="../../boost/config.hpp">boost/config.hpp</a></h1>
|
||||
<p>The <a href="../../boost/config.hpp">boost/config.hpp</a> header is used to
|
||||
pass configuration information to other boost files, allowing them to cope with
|
||||
platform dependencies such as arithmetic byte ordering, compiler pragmas, or
|
||||
compiler shortcomings. Without such configuration information, many current
|
||||
compilers would not work with the Boost libraries.</p>
|
||||
<p>Centralizing configuration information is this header reduces the number of
|
||||
files which must be modified when porting libraries to new platforms, or when
|
||||
compilers are updated. Ideally, no other files would have to be modified when
|
||||
porting to a new platform.</p>
|
||||
<p>Configuration headers are controversial because some view them as condoning
|
||||
broken compilers and encouraging non-standard subsets. Adding settings for
|
||||
additional platforms and maintaining existing settings can also be a problem. In
|
||||
other words, configuration headers are a necessary evil rather than a desirable
|
||||
feature. The boost config.hpp policy is designed to minimize the problems and
|
||||
maximize the benefits of a configuration header.</p>
|
||||
<h2>Boost config.hpp policy</h2>
|
||||
<p>For Library Users:</p>
|
||||
<ul>
|
||||
<li>Boost library users are never required to #include boost/config.hpp, and
|
||||
are discouraged from including it on their own.</li>
|
||||
<li>Boost library users can request support for additional platforms be added
|
||||
to config.hpp by emailing <a href="mailto:config@boost.org">config@boost.org</a>
|
||||
describing their request.</li>
|
||||
</ul>
|
||||
<p>For Library Implementors:</p>
|
||||
<ul>
|
||||
<li>Boost library implementors are not required to #include boost/config.hpp,
|
||||
and are not required in any way to support compilers which do not comply
|
||||
with the C++ Standard (ISO/IEC 14882).</li>
|
||||
<li>If a library implementor wishes to support some nonconforming compiler, or
|
||||
to support some platform specific feature, #include boost/config.hpp is the
|
||||
preferred way to obtain configuration information not available from the
|
||||
standard headers such as <climits>, etc.</li>
|
||||
<li>If configuration information can be deduced from standard headers such as
|
||||
<climits>, use those standard headers rather than boost/config.hpp.</li>
|
||||
<li>Boost files that use macros defined in boost/config.hpp should have
|
||||
sensible, standard conforming, default behavior if the macro is not defined.
|
||||
This means that the starting point for porting boost/config.hpp to a new
|
||||
platform is simply to define nothing at all specific to that platform. In
|
||||
the rare case where there is no sensible default behavior, an #error message
|
||||
should describe the problem.</li>
|
||||
<li>If a Boost library implementor wants something added to config.hpp, post a
|
||||
request on the Boost mailing list. There is no guarantee such a request will
|
||||
be honored; the intent is to limit the complexity of config.hpp.</li>
|
||||
</ul>
|
||||
<p>General:</p>
|
||||
<ul>
|
||||
<li>The intent is to support only compilers which appear on their way to
|
||||
becoming C++ Standard compliant, and only recent releases of those compilers
|
||||
at that.</li>
|
||||
<li>The intent is not to disable mainstream features now well-supported by the
|
||||
majority of compilers, such as namespaces, exceptions, RTTI, or templates.</li>
|
||||
</ul>
|
||||
<h2>Documentation</h2>
|
||||
<p>See <a href="../../boost/config.hpp">boost/config.hpp</a>; it is designed to
|
||||
be self documenting.</p>
|
||||
<h2>Test program</h2>
|
||||
<p>The <a href="config_test.cpp">config_test.cpp</a> program can be used to
|
||||
verify which #defines are in effect for your compiler.</p>
|
||||
<hr>
|
||||
<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->23 Jun 2000<!--webbot bot="Timestamp" endspan i-checksum="15048" --></p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
Reference in New Issue
Block a user