Compare commits

...

10 Commits

Author SHA1 Message Date
da75fc4197 Create branches/filesystem-v3 for v2 removal
[SVN r77385]
2012-03-18 20:54:17 +00:00
e0e8ccb712 Detail: Add macro to explicitly enable forward declaration of containers.
[SVN r77067]
2012-02-18 15:48:59 +00:00
17612676b8 Detail: Disable container forward declarations for recent versions of libstdc++, refs #6326.
[SVN r76419]
2012-01-11 23:00:55 +00:00
948271c0ae Fix Clang workaround.
Fixes #6156.

[SVN r76323]
2012-01-05 17:29:22 +00:00
609cf3c49f Detail: Fix BOOST_CONTAINER_FWD_COMPLEX_STRUCT. Refs #6139.
My last change was wrong, it isn't struct for Dinkumware. In GCC's
standard library it's declared as a class, but later defined as a
struct. This is so far untested as I'm building the latest trunk version
of clang (the warning doesn't show for the current clang release).

[SVN r75600]
2011-11-21 23:21:32 +00:00
735804d636 Detail: complex is a struct in Dinkumware.
IIRC it's `class` in SGI's STL and most other implementations. The state
for similar warnings for the compilers that I've looked at:

- Visual C++ never warns because I used a pragma to disable the warning.
- GCC never warns with its standard library since it contains a
  `system_header` pragma. It might warn for other libraries.
- Clang respects GCC's pragma so it never warns for GCC's standard
  library. Forward declarations are disabled for libc++ so this isn't an
  issue there. It does warn when using Dinkumware and possibly other
  standard libraries.

I'm tempted to make container forwarding 'opt-in' rather than 'opt-out'.
Or maybe only enable for compiler/library combinations where it's known
to work.

[SVN r75561]
2011-11-19 23:29:24 +00:00
4c711ba972 Detail: Revert [67484] in container_fwd. Refs #6139
[SVN r75544]
2011-11-18 11:32:43 +00:00
0f51c7701d Use <intrin.h> for VS2010+. Refs #4678.
[SVN r75396]
2011-11-07 23:08:53 +00:00
7b712685ce Detail: Don't forward declare containers for gcc in profile mode. Refs #6029.
Also a big clear comment about `BOOST_DETAIL_NO_CONTAINER_FWD` and a
fixed typo.

[SVN r75016]
2011-10-17 20:36:56 +00:00
2423aff085 Detail: Turn forward declarations for IBM Visual Age standard library.
[SVN r73453]
2011-07-30 20:24:39 +00:00
8 changed files with 50 additions and 27 deletions

View File

@ -16,8 +16,22 @@
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
////////////////////////////////////////////////////////////////////////////////
// //
// Define BOOST_DETAIL_NO_CONTAINER_FWD if you don't want this header to //
// forward declare standard containers. //
// //
// BOOST_DETAIL_CONTAINER_FWD to make it foward declare containers even if it //
// normally doesn't. //
// //
// BOOST_DETAIL_NO_CONTAINER_FWD overrides BOOST_DETAIL_CONTAINER_FWD. //
// //
////////////////////////////////////////////////////////////////////////////////
#if !defined(BOOST_DETAIL_NO_CONTAINER_FWD)
# if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
# if defined(BOOST_DETAIL_CONTAINER_FWD)
// Force forward declarations.
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
// STLport
# define BOOST_DETAIL_NO_CONTAINER_FWD
# elif defined(__LIBCOMO__)
@ -31,13 +45,23 @@
# define BOOST_DETAIL_NO_CONTAINER_FWD
# elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
// GNU libstdc++ 3
# if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL)
//
// Disable forwarding for all recent versions, as the library has a
// versioned namespace mode, and I don't know how to detect it.
# if __GLIBCXX__ >= 20070513 \
|| defined(_GLIBCXX_DEBUG) \
|| defined(_GLIBCXX_PARALLEL) \
|| defined(_GLIBCXX_PROFILE)
# define BOOST_DETAIL_NO_CONTAINER_FWD
# else
# if defined(__GLIBCXX__) && __GLIBCXX__ >= 20040530
# define BOOST_CONTAINER_FWD_COMPLEX_STRUCT
# endif
# endif
# elif defined(__STL_CONFIG_H)
// generic SGI STL
//
// Forward declaration seems to be okay, but it has a copule of odd
// Forward declaration seems to be okay, but it has a couple of odd
// implementations.
# define BOOST_CONTAINER_FWD_BAD_BITSET
# if !defined(__STL_NON_TYPE_TMPL_PARAM_BUG)
@ -47,26 +71,18 @@
// MSL standard lib:
# define BOOST_DETAIL_NO_CONTAINER_FWD
# elif defined(__IBMCPP__)
// take the default VACPP std lib
# define BOOST_DETAIL_NO_CONTAINER_FWD
// The default VACPP std lib, forward declaration seems to be fine.
# elif defined(MSIPL_COMPILE_H)
// Modena C++ standard library
# define BOOST_DETAIL_NO_CONTAINER_FWD
# elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
// Dinkumware Library (this has to appear after any possible replacement
// libraries)
//
// Works fine.
# else
# define BOOST_DETAIL_NO_CONTAINER_FWD
# endif
#endif
// BOOST_DETAIL_TEST_* macros are for testing only
// and shouldn't be relied upon. But you can use
// BOOST_DETAIL_NO_CONTAINER_FWD to prevent forward
// declaration of containers.
#if !defined(BOOST_DETAIL_TEST_CONFIG_ONLY)
#if defined(BOOST_DETAIL_NO_CONTAINER_FWD) && \
@ -104,16 +120,17 @@ namespace std
template <class charT, class traits, class Allocator> class basic_string;
#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
template <class charT> struct string_char_traits;
#else
template <class charT> struct char_traits;
#endif
#if BOOST_CLANG
template <class T> struct complex;
#else
template <class T> class complex;
#endif
#if defined(BOOST_CONTAINER_FWD_COMPLEX_STRUCT)
template <class T> struct complex;
#else
template <class T> class complex;
#endif
#if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
template <class T, class Allocator> class deque;

View File

@ -16,9 +16,10 @@
/* If we're using clang + glibc, we have to get hacky.
* See http://llvm.org/bugs/show_bug.cgi?id=6907 */
#if defined(__clang__) && \
#if defined(__clang__) && (__clang_major__ < 3) && \
defined(__GNU_LIBRARY__) && /* up to version 5 */ \
defined(__GLIBC__) /* version 6 + */
defined(__GLIBC__) && /* version 6 + */ \
!defined(_FENV_H)
#define _FENV_H
#include <features.h>

0
include/boost/detail/indirect_traits.hpp Executable file → Normal file
View File

View File

@ -54,7 +54,11 @@ extern "C" long __cdecl InterlockedExchangeAdd( long*, long );
#elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN )
#if defined( __CLRCALL_PURE_OR_CDECL )
#if defined( BOOST_MSVC ) && BOOST_MSVC >= 1600
#include <intrin.h>
#elif defined( __CLRCALL_PURE_OR_CDECL )
extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedIncrement( long volatile * );
extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedDecrement( long volatile * );
@ -119,15 +123,15 @@ namespace boost
namespace detail
{
extern "C"BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedIncrement( long volatile * );
extern "C"BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedDecrement( long volatile * );
extern "C"BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedCompareExchange( long volatile *, long, long );
extern "C"BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchange( long volatile *, long );
extern "C"BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchangeAdd( long volatile *, long );
extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedIncrement( long volatile * );
extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedDecrement( long volatile * );
extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedCompareExchange( long volatile *, long, long );
extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchange( long volatile *, long );
extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchangeAdd( long volatile *, long );
# if defined(_M_IA64) || defined(_M_AMD64)
extern "C"BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedCompareExchangePointer( void* volatile *, void*, void* );
extern "C"BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedExchangePointer( void* volatile *, void* );
extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedCompareExchangePointer( void* volatile *, void*, void* );
extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedExchangePointer( void* volatile *, void* );
# endif
} // namespace detail

0
include/boost/detail/is_function_ref_tester.hpp Executable file → Normal file
View File

0
include/boost/detail/is_xxx.hpp Executable file → Normal file
View File

0
include/boost/indirect_reference.hpp Executable file → Normal file
View File

View File

@ -11,6 +11,7 @@ project detail/test/container_fwd
<toolset>intel:<warnings>on
<toolset>gcc:<cxxflags>"-pedantic -Wstrict-aliasing -fstrict-aliasing -Wextra -Wsign-promo -Wunused-parameter -Wconversion"
<toolset>darwin:<cxxflags>"-pedantic -Wstrict-aliasing -fstrict-aliasing -Wextra -Wsign-promo -Wunused-parameter -Wconversion"
<toolset>clang:<cxxflags>"-pedantic -Wextra -Wmismatched-tags"
<warnings-as-errors>on
;