mirror of
https://github.com/boostorg/regex.git
synced 2025-07-17 14:22:08 +02:00
Fix for VC8 without the service pack.
[SVN r48220]
This commit is contained in:
@ -18,46 +18,59 @@
|
|||||||
|
|
||||||
#define BOOST_REGEX_SOURCE
|
#define BOOST_REGEX_SOURCE
|
||||||
|
|
||||||
|
#include <boost/detail/workaround.hpp>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) \
|
||||||
|
&& !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))
|
||||||
|
//
|
||||||
|
// This is a horrible workaround, but without declaring these symbols extern we get
|
||||||
|
// duplicate symbol errors when linking if the application is built without
|
||||||
|
// /Zc:wchar_t
|
||||||
|
//
|
||||||
|
#ifdef _CRTIMP2_PURE
|
||||||
|
# define BOOST_REGEX_STDLIB_DECL _CRTIMP2_PURE
|
||||||
|
#else
|
||||||
|
# define BOOST_REGEX_STDLIB_DECL _CRTIMP2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace std{
|
||||||
|
|
||||||
|
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
|
||||||
|
template class BOOST_REGEX_STDLIB_DECL allocator<unsigned short>;
|
||||||
|
template class BOOST_REGEX_STDLIB_DECL _String_val<unsigned short, allocator<unsigned short> >;
|
||||||
|
template class BOOST_REGEX_STDLIB_DECL basic_string<unsigned short, char_traits<unsigned short>,
|
||||||
|
allocator<unsigned short> >;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
|
||||||
|
template<> BOOST_REGEX_STDLIB_DECL std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
|
||||||
|
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
|
||||||
|
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
|
||||||
|
template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
|
||||||
|
const unsigned short *,
|
||||||
|
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
|
||||||
|
template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
|
||||||
|
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
|
||||||
|
const unsigned short *);
|
||||||
|
template BOOST_REGEX_STDLIB_DECL bool __cdecl operator<(
|
||||||
|
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
|
||||||
|
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
|
||||||
|
template BOOST_REGEX_STDLIB_DECL bool __cdecl operator>(
|
||||||
|
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
|
||||||
|
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <boost/regex/config.hpp>
|
#include <boost/regex/config.hpp>
|
||||||
|
|
||||||
#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
|
#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
|
||||||
#define BOOST_REGEX_US_INSTANTIATE
|
#define BOOST_REGEX_US_INSTANTIATE
|
||||||
|
|
||||||
#ifdef _DLL_CPPLIB
|
|
||||||
#include <boost/detail/workaround.hpp>
|
|
||||||
#include <memory>
|
|
||||||
#include <string>
|
|
||||||
//
|
|
||||||
// This is a horrible workaround, without declaring these symbols extern we get
|
|
||||||
// duplicate symbol errors when linking if the application is built without
|
|
||||||
// /Zc:wchar_t
|
|
||||||
//
|
|
||||||
namespace std{
|
|
||||||
template _CRTIMP2 bool __cdecl operator==(
|
|
||||||
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
|
|
||||||
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
|
|
||||||
template _CRTIMP2 bool __cdecl operator==(
|
|
||||||
const unsigned short *,
|
|
||||||
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
|
|
||||||
template _CRTIMP2 bool __cdecl operator==(
|
|
||||||
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
|
|
||||||
const unsigned short *);
|
|
||||||
template _CRTIMP2 bool __cdecl operator<(
|
|
||||||
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
|
|
||||||
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
|
|
||||||
template _CRTIMP2 bool __cdecl operator>(
|
|
||||||
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
|
|
||||||
const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
|
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
|
|
||||||
template<> _CRTIMP2 std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
|
|
||||||
#endif
|
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
|
|
||||||
template _CRTIMP2 allocator<unsigned short>::allocator();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include <boost/regex.hpp>
|
#include <boost/regex.hpp>
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user