mirror of
https://github.com/boostorg/detail.git
synced 2025-12-19 21:42:35 +01:00
Compare commits
6 Commits
boost-1.90
...
svn-branch
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1aea15fa6c | ||
|
|
3b3c2792ff | ||
|
|
d570643a41 | ||
|
|
7a75882c6b | ||
|
|
8495397d50 | ||
|
|
7b825bf034 |
@@ -21,10 +21,17 @@
|
|||||||
// Define BOOST_DETAIL_NO_CONTAINER_FWD if you don't want this header to //
|
// Define BOOST_DETAIL_NO_CONTAINER_FWD if you don't want this header to //
|
||||||
// forward declare standard containers. //
|
// 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(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
|
// STLport
|
||||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||||
# elif defined(__LIBCOMO__)
|
# elif defined(__LIBCOMO__)
|
||||||
@@ -38,10 +45,18 @@
|
|||||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||||
# elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
|
# elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
|
||||||
// GNU libstdc++ 3
|
// GNU libstdc++ 3
|
||||||
# if defined(_GLIBCXX_DEBUG) \
|
//
|
||||||
|
// 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_PARALLEL) \
|
||||||
|| defined(_GLIBCXX_PROFILE)
|
|| defined(_GLIBCXX_PROFILE)
|
||||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||||
|
# else
|
||||||
|
# if defined(__GLIBCXX__) && __GLIBCXX__ >= 20040530
|
||||||
|
# define BOOST_CONTAINER_FWD_COMPLEX_STRUCT
|
||||||
|
# endif
|
||||||
# endif
|
# endif
|
||||||
# elif defined(__STL_CONFIG_H)
|
# elif defined(__STL_CONFIG_H)
|
||||||
// generic SGI STL
|
// generic SGI STL
|
||||||
@@ -63,18 +78,11 @@
|
|||||||
# elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
|
# elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
|
||||||
// Dinkumware Library (this has to appear after any possible replacement
|
// Dinkumware Library (this has to appear after any possible replacement
|
||||||
// libraries)
|
// libraries)
|
||||||
//
|
|
||||||
// Works fine.
|
|
||||||
# else
|
# else
|
||||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||||
# endif
|
# endif
|
||||||
#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_TEST_CONFIG_ONLY)
|
||||||
|
|
||||||
#if defined(BOOST_DETAIL_NO_CONTAINER_FWD) && \
|
#if defined(BOOST_DETAIL_NO_CONTAINER_FWD) && \
|
||||||
@@ -112,12 +120,13 @@ namespace std
|
|||||||
template <class charT, class traits, class Allocator> class basic_string;
|
template <class charT, class traits, class Allocator> class basic_string;
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
||||||
|
|
||||||
template <class charT> struct string_char_traits;
|
template <class charT> struct string_char_traits;
|
||||||
#else
|
#else
|
||||||
template <class charT> struct char_traits;
|
template <class charT> struct char_traits;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BOOST_CLANG
|
#if defined(BOOST_CONTAINER_FWD_COMPLEX_STRUCT)
|
||||||
template <class T> struct complex;
|
template <class T> struct complex;
|
||||||
#else
|
#else
|
||||||
template <class T> class complex;
|
template <class T> class complex;
|
||||||
|
|||||||
@@ -16,9 +16,10 @@
|
|||||||
|
|
||||||
/* If we're using clang + glibc, we have to get hacky.
|
/* If we're using clang + glibc, we have to get hacky.
|
||||||
* See http://llvm.org/bugs/show_bug.cgi?id=6907 */
|
* 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(__GNU_LIBRARY__) && /* up to version 5 */ \
|
||||||
defined(__GLIBC__) /* version 6 + */
|
defined(__GLIBC__) && /* version 6 + */ \
|
||||||
|
!defined(_FENV_H)
|
||||||
#define _FENV_H
|
#define _FENV_H
|
||||||
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
|
|||||||
0
include/boost/detail/indirect_traits.hpp
Executable file → Normal file
0
include/boost/detail/indirect_traits.hpp
Executable file → Normal file
@@ -54,7 +54,11 @@ extern "C" long __cdecl InterlockedExchangeAdd( long*, long );
|
|||||||
|
|
||||||
#elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN )
|
#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 _InterlockedIncrement( long volatile * );
|
||||||
extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedDecrement( long volatile * );
|
extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedDecrement( long volatile * );
|
||||||
|
|||||||
0
include/boost/detail/is_function_ref_tester.hpp
Executable file → Normal file
0
include/boost/detail/is_function_ref_tester.hpp
Executable file → Normal file
0
include/boost/detail/is_xxx.hpp
Executable file → Normal file
0
include/boost/detail/is_xxx.hpp
Executable file → Normal file
0
include/boost/indirect_reference.hpp
Executable file → Normal file
0
include/boost/indirect_reference.hpp
Executable file → Normal file
@@ -11,6 +11,7 @@ project detail/test/container_fwd
|
|||||||
<toolset>intel:<warnings>on
|
<toolset>intel:<warnings>on
|
||||||
<toolset>gcc:<cxxflags>"-pedantic -Wstrict-aliasing -fstrict-aliasing -Wextra -Wsign-promo -Wunused-parameter -Wconversion"
|
<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>darwin:<cxxflags>"-pedantic -Wstrict-aliasing -fstrict-aliasing -Wextra -Wsign-promo -Wunused-parameter -Wconversion"
|
||||||
|
<toolset>clang:<cxxflags>"-pedantic -Wextra -Wmismatched-tags"
|
||||||
<warnings-as-errors>on
|
<warnings-as-errors>on
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
112
test/container_fwd_test.cpp
Normal file
112
test/container_fwd_test.cpp
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
|
||||||
|
// Copyright 2005-2009 Daniel James.
|
||||||
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
#include <boost/functional/detail/container_fwd.hpp>
|
||||||
|
|
||||||
|
#if BOOST_WORKAROUND(__GNUC__, < 3) && \
|
||||||
|
!defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
||||||
|
template <class charT, class Allocator>
|
||||||
|
static void test(
|
||||||
|
std::basic_string<charT, std::string_char_traits<charT>, Allocator> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
template <class charT, class Allocator>
|
||||||
|
static void test(
|
||||||
|
std::basic_string<charT, std::char_traits<charT>, Allocator> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template <class T, class Allocator>
|
||||||
|
static void test(std::deque<T, Allocator> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T, class Allocator>
|
||||||
|
static void test(std::list<T, Allocator> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T, class Allocator>
|
||||||
|
static void test(std::vector<T, Allocator> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Key, class T, class Compare, class Allocator>
|
||||||
|
static void test(std::map<Key, T, Compare, Allocator> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Key, class T, class Compare, class Allocator>
|
||||||
|
static void test(std::multimap<Key, T, Compare, Allocator> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Key, class Compare, class Allocator>
|
||||||
|
static void test(std::set<Key, Compare, Allocator> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Key, class Compare, class Allocator>
|
||||||
|
static void test(std::multiset<Key, Compare, Allocator> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <std::size_t N>
|
||||||
|
static void test(std::bitset<N> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
static void test(std::complex<T> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class X, class Y>
|
||||||
|
static void test(std::pair<X, Y> const&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <deque>
|
||||||
|
#include <list>
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <set>
|
||||||
|
#include <bitset>
|
||||||
|
#include <string>
|
||||||
|
#include <complex>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
std::deque<int> x1;
|
||||||
|
std::list<std::string> x2;
|
||||||
|
std::vector<float> x3;
|
||||||
|
std::vector<bool> x4;
|
||||||
|
std::map<int, int> x5;
|
||||||
|
std::multimap<float, int*> x6;
|
||||||
|
std::set<std::string> x7;
|
||||||
|
std::multiset<std::vector<int> > x8;
|
||||||
|
std::bitset<10> x9;
|
||||||
|
std::string x10;
|
||||||
|
std::complex<double> x11;
|
||||||
|
std::pair<std::list<int>, char***> x12;
|
||||||
|
|
||||||
|
test(x1);
|
||||||
|
test(x2);
|
||||||
|
test(x3);
|
||||||
|
test(x4);
|
||||||
|
test(x5);
|
||||||
|
test(x6);
|
||||||
|
test(x7);
|
||||||
|
test(x8);
|
||||||
|
test(x9);
|
||||||
|
test(x10);
|
||||||
|
test(x11);
|
||||||
|
test(x12);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
14
test/container_no_fwd_test.cpp
Normal file
14
test/container_no_fwd_test.cpp
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
// Copyright 2010 Daniel James.
|
||||||
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
#define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||||
|
|
||||||
|
#include <boost/detail/container_fwd.hpp>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
std::set<int> x;
|
||||||
|
std::vector<std::string> y;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user