Regex: Remove obsolete MSVC version checks.

[SVN r85921]
This commit is contained in:
Stephen Kelly
2013-09-25 21:16:24 +00:00
parent 7158ab5734
commit 70cd773533
10 changed files with 8 additions and 50 deletions

View File

@ -887,9 +887,6 @@ inline OutputIterator u32regex_replace(OutputIterator out,
match_flag_type flags = match_default) match_flag_type flags = match_default)
{ {
return re_detail::extract_output_base return re_detail::extract_output_base
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
<OutputIterator>
#endif
( (
re_detail::do_regex_replace( re_detail::do_regex_replace(
re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)), re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
@ -909,9 +906,6 @@ inline OutputIterator u32regex_replace(OutputIterator out,
match_flag_type flags = match_default) match_flag_type flags = match_default)
{ {
return re_detail::extract_output_base return re_detail::extract_output_base
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
<OutputIterator>
#endif
( (
re_detail::do_regex_replace( re_detail::do_regex_replace(
re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)), re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
@ -931,9 +925,6 @@ inline OutputIterator u32regex_replace(OutputIterator out,
match_flag_type flags = match_default) match_flag_type flags = match_default)
{ {
return re_detail::extract_output_base return re_detail::extract_output_base
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
<OutputIterator>
#endif
( (
re_detail::do_regex_replace( re_detail::do_regex_replace(
re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)), re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),

View File

@ -47,9 +47,7 @@ struct digraph : public std::pair<charT, charT>
digraph(charT c1) : std::pair<charT, charT>(c1, 0){} digraph(charT c1) : std::pair<charT, charT>(c1, 0){}
digraph(charT c1, charT c2) : std::pair<charT, charT>(c1, c2) digraph(charT c1, charT c2) : std::pair<charT, charT>(c1, c2)
{} {}
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
digraph(const digraph<charT>& d) : std::pair<charT, charT>(d.first, d.second){} digraph(const digraph<charT>& d) : std::pair<charT, charT>(d.first, d.second){}
#endif
template <class Seq> template <class Seq>
digraph(const Seq& s) : std::pair<charT, charT>() digraph(const Seq& s) : std::pair<charT, charT>()
{ {

View File

@ -624,7 +624,6 @@ typename cpp_regex_traits_implementation<charT>::string_type
return pos->second; return pos->second;
} }
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ #if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
&& !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
&& !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
std::string name(p1, p2); std::string name(p1, p2);
#else #else
@ -635,7 +634,6 @@ typename cpp_regex_traits_implementation<charT>::string_type
#endif #endif
name = lookup_default_collate_name(name); name = lookup_default_collate_name(name);
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ #if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
&& !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
&& !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
if(name.size()) if(name.size())
return string_type(name.begin(), name.end()); return string_type(name.begin(), name.end());

View File

@ -92,9 +92,7 @@ template class BOOST_REGEX_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHA
template class BOOST_REGEX_TEMPLATE_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >; template class BOOST_REGEX_TEMPLATE_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >;
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
template class BOOST_REGEX_TEMPLATE_DECL match_results< const BOOST_REGEX_CHAR_T* >; template class BOOST_REGEX_TEMPLATE_DECL match_results< const BOOST_REGEX_CHAR_T* >;
#endif
#ifndef BOOST_NO_STD_ALLOCATOR #ifndef BOOST_NO_STD_ALLOCATOR
template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >; template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >;
#endif #endif
@ -102,9 +100,7 @@ template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher<BOOST_
&& !(defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 800))\ && !(defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 800))\
&& !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))\ && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))\
&& !defined(BOOST_REGEX_ICU_INSTANCES) && !defined(BOOST_REGEX_ICU_INSTANCES)
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
template class BOOST_REGEX_TEMPLATE_DECL match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >; template class BOOST_REGEX_TEMPLATE_DECL match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >;
#endif
#ifndef BOOST_NO_STD_ALLOCATOR #ifndef BOOST_NO_STD_ALLOCATOR
template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >; template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >;
#endif #endif

View File

@ -71,7 +71,7 @@ typedef enum _match_flags
} match_flags; } match_flags;
#if (defined(_MSC_VER) && (_MSC_VER < 1300)) || defined(__BORLANDC__) #if defined(__BORLANDC__)
typedef unsigned long match_flag_type; typedef unsigned long match_flag_type;
#else #else
typedef match_flags match_flag_type; typedef match_flags match_flag_type;

View File

@ -86,7 +86,6 @@ inline bool can_start(unsigned int c, const unsigned char* map, unsigned char ma
// which succeeds when it should not. // which succeeds when it should not.
// //
#ifndef _RWSTD_VER #ifndef _RWSTD_VER
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
template <class C, class T, class A> template <class C, class T, class A>
inline int string_compare(const std::basic_string<C,T,A>& s, const C* p) inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
{ {
@ -97,9 +96,7 @@ inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
} }
return s.compare(p); return s.compare(p);
} }
#endif
#else #else
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
template <class C, class T, class A> template <class C, class T, class A>
inline int string_compare(const std::basic_string<C,T,A>& s, const C* p) inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
{ {
@ -110,7 +107,6 @@ inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
} }
return s.compare(p); return s.compare(p);
} }
#endif
inline int string_compare(const std::string& s, const char* p) inline int string_compare(const std::string& s, const char* p)
{ return std::strcmp(s.c_str(), p); } { return std::strcmp(s.c_str(), p); }
# ifndef BOOST_NO_WREGEX # ifndef BOOST_NO_WREGEX

View File

@ -22,7 +22,6 @@
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#include <boost/detail/workaround.hpp> #include <boost/detail/workaround.hpp>
#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ #if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
|| BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
|| BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
// //
// Borland C++ Builder 6, and Visual C++ 6, // Borland C++ Builder 6, and Visual C++ 6,
@ -45,8 +44,6 @@ namespace boost{
#endif #endif
#ifdef BOOST_MSVC #ifdef BOOST_MSVC
#pragma warning(pop) #pragma warning(pop)
#endif
#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4700) #pragma warning(disable:4700)
#endif #endif
@ -75,7 +72,6 @@ public:
: end(last), re(*p), flags(f), subs(v){} : end(last), re(*p), flags(f), subs(v){}
#if !BOOST_WORKAROUND(__HP_aCC, < 60700) #if !BOOST_WORKAROUND(__HP_aCC, < 60700)
#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ #if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
|| BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
|| BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
|| BOOST_WORKAROUND(__HP_aCC, < 60700) || BOOST_WORKAROUND(__HP_aCC, < 60700)
template <class T> template <class T>
@ -209,7 +205,6 @@ public:
} }
#if !BOOST_WORKAROUND(__HP_aCC, < 60700) #if !BOOST_WORKAROUND(__HP_aCC, < 60700)
#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ #if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
|| BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
|| BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
|| BOOST_WORKAROUND(__HP_aCC, < 60700) || BOOST_WORKAROUND(__HP_aCC, < 60700)
template <class T> template <class T>
@ -296,7 +291,6 @@ inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_ite
{ {
return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m); return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
} }
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
template <class charT, class traits, std::size_t N> template <class charT, class traits, std::size_t N>
inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
{ {
@ -307,7 +301,6 @@ inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_ite
{ {
return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m); return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
} }
#endif
template <class charT, class traits> template <class charT, class traits>
inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default) inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
{ {
@ -319,10 +312,8 @@ inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_ite
return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m); return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
} }
#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
# pragma warning(pop)
#endif
#ifdef BOOST_MSVC #ifdef BOOST_MSVC
#pragma warning(pop)
#pragma warning(push) #pragma warning(push)
#pragma warning(disable: 4103) #pragma warning(disable: 4103)
#endif #endif

View File

@ -50,7 +50,6 @@ struct sub_match : public std::pair<BidiIterator, BidiIterator>
sub_match() : std::pair<BidiIterator, BidiIterator>(), matched(false) {} sub_match() : std::pair<BidiIterator, BidiIterator>(), matched(false) {}
sub_match(BidiIterator i) : std::pair<BidiIterator, BidiIterator>(i, i), matched(false) {} sub_match(BidiIterator i) : std::pair<BidiIterator, BidiIterator>(i, i), matched(false) {}
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ #if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
&& !BOOST_WORKAROUND(BOOST_MSVC, < 1310)\
&& !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)\ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)\
&& !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) && !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042))
template <class T, class A> template <class T, class A>

View File

@ -20,7 +20,6 @@
#define BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP #define BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP
#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ #if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
|| BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
|| BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
// //
// Borland C++ Builder 6, and Visual C++ 6, // Borland C++ Builder 6, and Visual C++ 6,
@ -37,7 +36,7 @@ namespace boost{
#ifdef BOOST_HAS_ABI_HEADERS #ifdef BOOST_HAS_ABI_HEADERS
# include BOOST_ABI_PREFIX # include BOOST_ABI_PREFIX
#endif #endif
#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) #ifdef BOOST_MSVC
# pragma warning(push) # pragma warning(push)
# pragma warning(disable:4700) # pragma warning(disable:4700)
#endif #endif
@ -62,10 +61,7 @@ public:
: end(last), re(*p), flags(f){ subs.push_back(sub); } : end(last), re(*p), flags(f){ subs.push_back(sub); }
u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f) u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f)
: end(last), re(*p), flags(f), subs(v){} : end(last), re(*p), flags(f), subs(v){}
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) #if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
// can't reliably get this to work....
#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
|| BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
|| BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
|| BOOST_WORKAROUND(__HP_aCC, < 60700) || BOOST_WORKAROUND(__HP_aCC, < 60700)
template <class T> template <class T>
@ -195,10 +191,7 @@ public:
if(!pdata->init(a)) if(!pdata->init(a))
pdata.reset(); pdata.reset();
} }
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) #if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
// can't reliably get this to work....
#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
|| BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
|| BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
|| BOOST_WORKAROUND(__HP_aCC, < 60700) || BOOST_WORKAROUND(__HP_aCC, < 60700)
template <class T> template <class T>
@ -299,7 +292,6 @@ inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const
return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m); return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
} }
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
// construction from a reference to an array: // construction from a reference to an array:
template <std::size_t N> template <std::size_t N>
inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
@ -331,7 +323,6 @@ inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const
{ {
return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m); return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
} }
#endif // BOOST_MSVC < 1300
// construction from a vector of sub_match state_id's: // construction from a vector of sub_match state_id's:
inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default) inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
@ -361,7 +352,7 @@ inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const
return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m); return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
} }
#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) #ifdef BOOST_MSVC
# pragma warning(pop) # pragma warning(pop)
#endif #endif
#ifdef BOOST_HAS_ABI_HEADERS #ifdef BOOST_HAS_ABI_HEADERS

View File

@ -399,7 +399,6 @@ typename w32_regex_traits_implementation<charT>::string_type
return pos->second; return pos->second;
} }
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ #if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
&& !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
&& !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
std::string name(p1, p2); std::string name(p1, p2);
#else #else
@ -410,7 +409,6 @@ typename w32_regex_traits_implementation<charT>::string_type
#endif #endif
name = lookup_default_collate_name(name); name = lookup_default_collate_name(name);
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ #if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
&& !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
&& !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
if(name.size()) if(name.size())
return string_type(name.begin(), name.end()); return string_type(name.begin(), name.end());