Modify

Ticket #3631 (closed Bugs: fixed)

Opened 4 years ago

Last modified 4 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:

Description

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.

Attachments

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

Change History

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

Minimal example

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

Patch

comment:1 Changed 4 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.

View

Add a comment

Modify Ticket

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


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

 
Note: See TracTickets for help on using tickets.