Index: boost/regex/icu.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/regex/icu.hpp,v
retrieving revision 1.5
diff -r1.5 icu.hpp
43c43
<    typedef ::Locale                     locale_type;
---
>    typedef U_NAMESPACE_QUALIFIER Locale locale_type;
46c46
<    icu_regex_traits_implementation(const ::Locale& l)
---
>    icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& l)
50c50
<       m_collator.reset( ::Collator::createInstance(l, success));
---
>       m_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
53c53
<       m_collator->setStrength(::Collator::IDENTICAL);
---
>       m_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::IDENTICAL);
55c55
<       m_primary_collator.reset( ::Collator::createInstance(l, success));
---
>       m_primary_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
58c58
<       m_primary_collator->setStrength(::Collator::PRIMARY);
---
>       m_primary_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::PRIMARY);
60c60
<    ::Locale getloc()const
---
>    U_NAMESPACE_QUALIFIER Locale getloc()const
64c64
<    string_type do_transform(const char_type* p1, const char_type* p2, const ::Collator* pcoll) const;
---
>    string_type do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const;
79,81c79,81
<    ::Locale m_locale;                                  // The ICU locale that we're using
<    boost::scoped_ptr< ::Collator> m_collator;          // The full collation object
<    boost::scoped_ptr< ::Collator> m_primary_collator;  // The primary collation object
---
>    U_NAMESPACE_QUALIFIER Locale m_locale;                                  // The ICU locale that we're using
>    boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_collator;          // The full collation object
>    boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_primary_collator;  // The primary collation object
84c84
< inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_regex_traits_implementation(const ::Locale& loc)
---
> inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& loc)
97c97
<    typedef ::Locale                     locale_type;
---
>    typedef U_NAMESPACE_QUALIFIER Locale locale_type;
107c107
<       : m_pimpl(re_detail::get_icu_regex_traits_implementation(::Locale()))
---
>       : m_pimpl(re_detail::get_icu_regex_traits_implementation(U_NAMESPACE_QUALIFIER Locale()))
215a216
> #if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
243a245,262
> #else
> template <class InputIterator>
> inline u32regex do_make_u32regex(InputIterator i, 
>                               InputIterator j, 
>                               boost::regex_constants::syntax_option_type opt, 
>                               const boost::mpl::int_<1>*)
> {
>    typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
>    typedef std::vector<UChar32> vector_type;
>    vector_type v;
>    conv_type a(i), b(j);
>    while(a != b)
>    {
> 	   v.push_back(*a);
> 	   ++a;
>    }
>    return u32regex(&*v.begin(), v.size(), opt);
> }
244a264,297
> template <class InputIterator>
> inline u32regex do_make_u32regex(InputIterator i, 
>                               InputIterator j, 
>                               boost::regex_constants::syntax_option_type opt, 
>                               const boost::mpl::int_<2>*)
> {
>    typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
>    typedef std::vector<UChar32> vector_type;
>    vector_type v;
>    conv_type a(i), b(j);
>    while(a != b)
>    {
> 	   v.push_back(*a);
> 	   ++a;
>    }
>    return u32regex(&*v.begin(), v.size(), opt);
> }
> 
> template <class InputIterator>
> inline u32regex do_make_u32regex(InputIterator i, 
>                               InputIterator j, 
>                               boost::regex_constants::syntax_option_type opt, 
>                               const boost::mpl::int_<4>*)
> {
>    typedef std::vector<UCHAR32> vector_type;
>    vector_type v;
>    while(i != j)
>    {
> 	   v.push_back((UCHAR32)(*i));
> 	   ++a;
>    }
>    return u32regex(&*v.begin(), v.size(), opt);
> }
> #endif
723a777
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
724a779,784
> #else
>    f.clear();
>    I2 pos = fmt.first;
>    while(pos != fmt.second)
>       f.push_back(*pos++);
> #endif
776c836,840
<    return re_detail::extract_output_base(
---
>    return re_detail::extract_output_base
> #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
>    <OutputIterator>
> #endif
> 	 (
794c858,862
<    return re_detail::extract_output_base(
---
>    return re_detail::extract_output_base
> #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
>    <OutputIterator>
> #endif
> 	 (
812c880,884
<    return re_detail::extract_output_base(
---
>    return re_detail::extract_output_base
> #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
>    <OutputIterator>
> #endif
> 	(
Index: boost/regex/v4/iterator_traits.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/regex/v4/iterator_traits.hpp,v
retrieving revision 1.8
diff -r1.8 iterator_traits.hpp
73a74,84
> //
> // the follwoing are needed for ICU support:
> //
> template<>
> struct regex_iterator_traits<unsigned char*> : pointer_iterator_traits<char>{};
> template<>
> struct regex_iterator_traits<const unsigned char*> : const_pointer_iterator_traits<char>{};
> template<>
> struct regex_iterator_traits<int*> : pointer_iterator_traits<int>{};
> template<>
> struct regex_iterator_traits<const int*> : const_pointer_iterator_traits<int>{};
Index: boost/regex/v4/perl_matcher.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/regex/v4/perl_matcher.hpp,v
retrieving revision 1.19
diff -r1.19 perl_matcher.hpp
70a71
> #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
80a82
> #endif
81a84
> #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
91a95
> #endif
99d102
< #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
110d112
< #endif
Index: boost/regex/v4/u32regex_iterator.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/regex/v4/u32regex_iterator.hpp,v
retrieving revision 1.4
diff -r1.4 u32regex_iterator.hpp
178c178,179
<    return u32regex_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator>(p.begin(), p.end(), e, m);
---
>    typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
>    return u32regex_iterator<iter_type>(p.begin(), p.end(), e, m);
Index: boost/regex/v4/u32regex_token_iterator.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/regex/v4/u32regex_token_iterator.hpp,v
retrieving revision 1.4
diff -r1.4 u32regex_token_iterator.hpp
64c64,66
< #if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
---
> #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
>       // can't reliably get this to work....
> #elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
193c195,197
< #if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
---
> #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
>       // can't reliably get this to work....
> #elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
287c291,292
<    return u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator>(p.begin(), p.end(), e, m);
---
>    typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
>    return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
293a299
> #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
317c323,324
<    return u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator>(p.begin(), p.end(), e, m);
---
>    typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
>    return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
323a331
> #endif // BOOST_MSVC < 1300
345c353,354
<    return u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator>(p.begin(), p.end(), e, m);
---
>    typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
>    return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
Index: libs/regex/example/Jamfile
===================================================================
RCS file: /cvsroot/boost/boost/libs/regex/example/Jamfile,v
retrieving revision 1.29
diff -r1.29 Jamfile
52c52
<              <template>../build/regex-options
---
>              <template>../build/regex-test-options
Index: libs/regex/src/icu.cpp
===================================================================
RCS file: /cvsroot/boost/boost/libs/regex/src/icu.cpp,v
retrieving revision 1.4
diff -r1.4 icu.cpp
28c28
< icu_regex_traits_implementation::string_type icu_regex_traits_implementation::do_transform(const char_type* p1, const char_type* p2, const ::Collator* pcoll) const
---
> icu_regex_traits_implementation::string_type icu_regex_traits_implementation::do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const
32a33
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
33a35,39
> #else
>    std::vector< ::UChar> t;
>    while(i != j)
>       t.push_back(*i++);
> #endif
41a48
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
42a50,57
> #else
>       string_type sresult;
>       ::uint8_t const* ia = presult.get();
>       ::uint8_t const* ib = presult.get()+len;
>       while(ia != ib)
>          sresult.push_back(*ia++);
>       return sresult;
> #endif
45a61
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
46a63,70
> #else
>    string_type sresult;
>    ::uint8_t const* ia = result;
>    ::uint8_t const* ib = result+len;
>    while(ia != ib)
>       sresult.push_back(*ia++);
>    return sresult;
> #endif
392a417
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
393a419,424
> #else
>       std::string s;
>       const char_type* p3 = p1;
>       while(p3 != p2)
>          s.append(1, *p3++);
> #endif
411a443
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
412a445,452
> #else
>       result.clear();
>       std::string::const_iterator si, sj;
>       si = s.begin();
>       sj = s.end();
>       while(si != sj)
>          result.push_back(*si++);
> #endif
Index: libs/regex/test/regress/test_icu.cpp
===================================================================
RCS file: /cvsroot/boost/boost/libs/regex/test/regress/test_icu.cpp,v
retrieving revision 1.3
diff -r1.3 test_icu.cpp
27a28,65
> namespace unnecessary_fix{
> //
> // Some outrageously broken std lib's don't have a conforming
> // back_insert_iterator, which means we can't use the std version
> // as an argument to regex_replace, sigh... use our own:
> //
> template <class Seq>
> class back_insert_iterator 
> #ifndef BOOST_NO_STD_ITERATOR
>    : public std::iterator<std::output_iterator_tag,void,void,void,void>
> #endif
> {
> private:
>    Seq* container;
>    typedef const typename Seq::value_type value_type;
> public:
>    typedef Seq                  container_type;
>    typedef std::output_iterator_tag  iterator_category;
> 
>    explicit back_insert_iterator(Seq& x) : container(&x) {}
>    back_insert_iterator& operator=(const value_type& val) 
>    { 
>       container->push_back(val);
>       return *this;
>    }
>    back_insert_iterator& operator*() { return *this; }
>    back_insert_iterator& operator++() { return *this; }
>    back_insert_iterator  operator++(int) { return *this; }
> };
> 
> template <class Seq>
> inline back_insert_iterator<Seq> back_inserter(Seq& x) 
> {
>    return back_insert_iterator<Seq>(x);
> }
> 
> }
> 
35c73,75
<    typedef boost::u16_to_u32_iterator<typename MR2::value_type::const_iterator> iterator_type;
---
>    typedef typename MR2::value_type MR2_value_type;
>    typedef typename MR2_value_type::const_iterator MR2_iterator_type;
>    typedef boost::u16_to_u32_iterator<MR2_iterator_type> iterator_type;
63c103,105
<    typedef boost::u8_to_u32_iterator<typename MR2::value_type::const_iterator> iterator_type;
---
>    typedef typename MR2::value_type MR2_value_type;
>    typedef typename MR2_value_type::const_iterator MR2_iterator_type;
>    typedef boost::u8_to_u32_iterator<MR2_iterator_type> iterator_type;
153c195
<       ::Locale l(test_locale::c_str());
---
>       U_NAMESPACE_QUALIFIER Locale l(test_locale::c_str());
159a202
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
160a204,206
> #else
>    std::copy(test_info<wchar_t>::expression().begin(), test_info<wchar_t>::expression().end(), std::back_inserter(expression));
> #endif
162a209
> #if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
163a211,213
> #else
>       r.assign(&*expression.begin(), expression.size(), syntax_options);
> #endif
168a219
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
169a221,223
> #else
>       std::copy(test_info<wchar_t>::search_text().begin(), test_info<wchar_t>::search_text().end(), std::back_inserter(search_text));
> #endif
196a251
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
198a254,259
> #else
>          expression16.clear();
>          std::copy(u16_conv(expression.begin()), u16_conv(expression.end()), std::back_inserter(expression16));
>          text16.clear();
>          std::copy(u16_conv(search_text.begin()), u16_conv(search_text.end()), std::back_inserter(text16));
> #endif
233a295
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
235a298,303
> #else
>          expression8.clear();
>          std::copy(u8_conv(expression.begin()), u8_conv(expression.end()), std::back_inserter(expression8));
>          text8.clear();
>          std::copy(u8_conv(search_text.begin()), u8_conv(search_text.end()), std::back_inserter(text8));
> #endif
291a360
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
292a362,364
> #else
>    std::copy(test_info<wchar_t>::expression().begin(), test_info<wchar_t>::expression().end(), std::back_inserter(expression));
> #endif
297c369
<       ::Locale l(test_locale::c_str());
---
>       U_NAMESPACE_QUALIFIER Locale l(test_locale::c_str());
306a379
> #if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
307a381,383
> #else
>       if(0 == r.assign(&*expression.begin(), expression.size(), syntax_options | boost::regex_constants::no_except).status())
> #endif
320a397
> #if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
321a399,401
> #else
>       r.assign(&*expression.begin(), expression.size(), syntax_options);
> #endif
358a439
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
359a441,443
> #else
>       std::copy(u16_conv(expression.begin()), u16_conv(expression.end()), std::back_inserter(expression16));
> #endif
376a461
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
377a463,465
> #else
>       std::copy(u8_conv(expression.begin()), u8_conv(expression.end()), std::back_inserter(expression8));
> #endif
395a484
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
396a486,488
> #else
>    std::copy(test_info<wchar_t>::expression().begin(), test_info<wchar_t>::expression().end(), std::back_inserter(expression));
> #endif
399a492
> #if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
400a494,496
> #else
>       r.assign(&*expression.begin(), expression.size(), syntax_options);
> #endif
407d502
<       search_text.assign(test_info<UChar32>::search_text().begin(), test_info<UChar32>::search_text().end());
409a505,507
>       string_type result_string;
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
>       search_text.assign(test_info<UChar32>::search_text().begin(), test_info<UChar32>::search_text().end());
412d509
<       string_type result_string;
413a511,516
> #else
>       std::copy(test_info<UChar32>::search_text().begin(), test_info<UChar32>::search_text().end(), std::back_inserter(search_text));
>       std::copy(test_info<UChar32>::format_string().begin(), test_info<UChar32>::format_string().end(), std::back_inserter(format_string));
>       format_string.push_back(0);
>       std::copy(test_info<UChar32>::result_string().begin(), test_info<UChar32>::result_string().end(), std::back_inserter(result_string));
> #endif
416c519
<       boost::u32regex_replace(std::back_inserter(result), search_text.begin(), search_text.end(), r, &*format_string.begin(), opts);
---
>       boost::u32regex_replace(unnecessary_fix::back_inserter(result), search_text.begin(), search_text.end(), r, &*format_string.begin(), opts);
430a534
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
434a539,544
> #else
>          std::copy(u16_conv(expression.begin()), u16_conv(expression.end()), std::back_inserter(expression16));
>          std::copy(u16_conv(search_text.begin()), u16_conv(search_text.end()), std::back_inserter(text16));
>          std::copy(u16_conv(format_string.begin()), u16_conv(format_string.end()), std::back_inserter(format16));
>          std::copy(u16_conv(result_string.begin()), u16_conv(result_string.end()), std::back_inserter(result16));
> #endif
436c546
<          boost::u32regex_replace(std::back_inserter(found16), text16.begin(), text16.end(), r, &*format16.begin(), opts);
---
>          boost::u32regex_replace(unnecessary_fix::back_inserter(found16), text16.begin(), text16.end(), r, &*format16.begin(), opts);
460a571
> #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
464a576,581
> #else
>          std::copy(u8_conv(expression.begin()), u8_conv(expression.end()), std::back_inserter(expression8));
>          std::copy(u8_conv(search_text.begin()), u8_conv(search_text.end()), std::back_inserter(text8));
>          std::copy(u8_conv(format_string.begin()), u8_conv(format_string.end()), std::back_inserter(format8));
>          std::copy(u8_conv(result_string.begin()), u8_conv(result_string.end()), std::back_inserter(result8));
> #endif
466c583
<          boost::u32regex_replace(std::back_inserter(found8), text8.begin(), text8.end(), r, &*format8.begin(), opts);
---
>          boost::u32regex_replace(unnecessary_fix::back_inserter(found8), text8.begin(), text8.end(), r, &*format8.begin(), opts);
Index: libs/regex/test/regress/test_unicode.cpp
===================================================================
RCS file: /cvsroot/boost/boost/libs/regex/test/regress/test_unicode.cpp,v
retrieving revision 1.3
diff -r1.3 test_unicode.cpp
124a125,127
> #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
>    // Some tests have to be disabled for VC6 because the compiler
>    // mangles the string literals...
128a132
> #endif
150c154,156
<    
---
> #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
>    // Some tests have to be disabled for VC6 because the compiler
>    // mangles the string literals...
151a158
> 
157a165
> #endif

