Ticket #3631 (closed Bugs: fixed)

Opened 7 years ago

Last modified 7 years ago

Regex ICU support doesn't compile with #define U_USING_ICU_NAMESPACE 0

Reported by: Matthias Schiffer <matthias@…> Owned by: johnmaddock
Milestone: Boost 1.41.0 Component: regex
Version: Boost 1.40.0 Severity: Problem
Keywords: Cc:


To prevent namespace pollution, I definde U_USING_ICU_NAMESPACE to 0 in my projects before including any ICU headers. This prevents the ICU headers from adding a "using namespace icu" to the root namespace, so classes like UnicodeString? are only available in the icu:: namespace.

While most uses of ICU classes in the Boost Regex ICU headers are prepended with U_NAMESPACE_QUALIFIER (e.g. Locale and Collator), this seems to have been forgotten for UnicodeString?, causing the compile to fail.

Minimal example to reproduce and patch attached.


icuregex.cpp (275 bytes) - added by Matthias Schiffer <matthias@…> 7 years ago.
Minimal example
boost_regex.patch (7.8 KB) - added by Matthias Schiffer <matthias@…> 7 years ago.

Change History

Changed 7 years ago by Matthias Schiffer <matthias@…>

Minimal example

Changed 7 years ago by Matthias Schiffer <matthias@…>


comment:1 Changed 7 years ago by johnmaddock

  • Status changed from new to closed
  • Resolution set to fixed

(In [57739]) Suppress external templates with Mingw32 - it seems to cause issues with dll's. Fix match_results.swap. Add missing namespace qualifiers to ICU code: fixes #3631.


Add a comment

Modify Ticket

Change Properties
<Author field>
as closed
The resolution will be deleted. Next status will be 'reopened'

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.