Opened 16 years ago
Closed 16 years ago
#828 closed Bugs (Accepted)
Problem compiling regex with icu support on solaris
| Reported by: | nobody | Owned by: | nobody |
|---|---|---|---|
| Milestone: | Component: | build | |
| Version: | None | Severity: | |
| Keywords: | Cc: |
Description
Hi, I'm trying to compile boost 1.33.1 with icu support on Solaris, with SUNpro compiler. The file ico.cpp doesn't compile. The compilation line is: I define ICU_PATH, and eventually the command line: % CC -c -O2 -mt -I../../../ -o sunpro/libboost_regex_mt/icu.o ../src/icu.cpp -DBOOST_HAS_ICU=1 -I$ICU_PATH/include "../../..//boost/iterator/iterator_facade.hpp", line 838: Error: Could not find a match for boost::iterator_core_access::equal<boost::iterator_core_access::Facade1, boost::iterator_core_access::Facade2>(const boost::u32_to_u16_iterator<const int*, unsigned short>, const boost::u32_to_u16_iterator<const int*, unsigned short>, boost::is_convertible<boost::u32_to_u16_iterator<const int*, unsigned short>, boost::u32_to_u16_iterator<const int*, unsigned short>>). It works with no problem with gcc (on Linux and on Solaris). Thanks, Moddy. ( moddyt@itemfield.com)
Change History (6)
comment:2 by , 16 years ago
Logged In: YES user_id=1312539 Originator: NO This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 14 days (the time period specified by the administrator of this Tracker).
comment:3 by , 16 years ago
Logged In: NO I was using 5.5, so I moved to 5.8. I get different errors now: % CC -V CC: Sun C++ 5.8 Patch 121018-05 2006/08/30 % CC -c -O2 -I../../../ -I$ICU_PATH/include -DBOOST_HAS_ICU -o sunpro/libboost_regex/icu.o ../src/icu.cpp "../../..//boost/regex/v4/iterator_traits.hpp", line 34: Error: boost::re_detail::T is not a namespace or class name. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 34: Error: No parameters provided for template. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 35: Error: boost::re_detail::T is not a namespace or class name. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 35: Error: value_type is not defined. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 37: Error: boost::re_detail::T is not a namespace or class name. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 37: Error: difference_type is not defined. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 38: Error: boost::re_detail::T is not a namespace or class name. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 38: Error: pointer is not defined. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 39: Error: boost::re_detail::T is not a namespace or class name. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 39: Error: reference is not defined. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. "../../..//boost/regex/v4/iterator_traits.hpp", line 34: Error: Redefining boost::iterator_category<boost::Iterator> after use in boost::re_detail::regex_iterator_traits<const unsigned short*>. "../../..//boost/regex/v4/match_results.hpp", line 52: Where: While specializing "boost::re_detail::regex_iterator_traits<const unsigned short*>". "../../..//boost/regex/v4/match_results.hpp", line 52: Where: Specialized in boost::match_results<const unsigned short*, std::allocator<boost::sub_match<const unsigned short*>>>. "../../..//boost/regex/icu.hpp", line 521: Where: Specialized in non-template code. 11 Error(s) detected. Thanks, Moddy.
comment:4 by , 16 years ago
Logged In: YES
user_id=14804
Originator: NO
OK, I think we're moving slowly forward :-)
Can you comment out the #if logic in:
#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
template<>
struct regex_iterator_traits<unsigned short*> : pointer_iterator_traits<unsigned short>{};
template<>
struct regex_iterator_traits<const unsigned short*> : const_pointer_iterator_traits<unsigned short>{};
#endif
So that those specializations are *always* defined and see what happens?
I'm a little confused why that preprocessor branch is taken in the first place though: you might try building with the -library=stlport4 option to see if that improves things. You may also find that you need to update Boost.Config to match the latest compiler: try following the configuration instructions here: http://www.boost.org/libs/config/config.htm#config_script and see if that improves things.
HTH, John.
comment:5 by , 16 years ago
Logged In: NO
I added these lines to icu.hpp, and it seems to solve the problem. I hope it was the right thing to do.
namespace boost{
namespace re_detail{
//added by Itemfield
template <>
struct regex_iterator_traits <UChar*> :
pointer_iterator_traits<UChar>
{};
template <>
struct regex_iterator_traits <const UChar* > :
const_pointer_iterator_traits<UChar>
{};
}
}
Thanks, Moddy.
comment:6 by , 16 years ago
| Status: | assigned → closed |
|---|
Logged In: YES user_id=14804 Originator: NO Yes, that'll do the trick fine. I look into fixing this in cvs. John.
Note:
See TracTickets
for help on using tickets.
