Fix numerous VC-10 compiler warnings.

Rewrite ICU configuration to use the new Boost.Build configuration logic.

[SVN r61893]
This commit is contained in:
John Maddock
2010-05-10 12:13:49 +00:00
parent fa96f4edf1
commit 05636b5c89
24 changed files with 147 additions and 313 deletions

View File

@ -3,10 +3,6 @@
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt.
project boost/regex
: source-location ../src
;
#
# ICU configuration:
#
@ -14,240 +10,35 @@ if [ modules.peek : ICU_PATH ]
{
ICU_PATH = [ modules.peek : ICU_PATH ] ;
}
rule check-icu-config ( )
if [ modules.peek : ICU_LINK ]
{
local HAVE_ICU = [ modules.peek : HAVE_ICU ] ;
local ICU_LINK = [ modules.peek : ICU_LINK ] ;
if ! $(gICU_CONFIG_CHECKED)
{
if $(HAVE_ICU) && ! $(ICU_PATH)
{
gHAS_ICU = true ;
gICU_CORE_LIB = icuuc ;
gICU_IN_LIB = icui18n ;
gICU_DATA_LIB = icudata ;
gICU_CONFIG_CHECKED = true ;
}
else if $(ICU_PATH)
{
dir = $(ICU_PATH) ;
if [ GLOB $(dir)/include/unicode : utypes.h ]
{
gHAS_ICU = true ;
# try and find ICU libraries, look for NT versions first:
if $(ICU_LINK)
{
gICU_LIBS += <linkflags>$(ICU_LINK) ;
}
else if [ GLOB $(dir)/lib64 : icuuc.* ]
{
gICU_CORE_LIB = icuuc ;
}
else if [ GLOB $(dir)/lib : icuuc.* ]
{
gICU_CORE_LIB = icuuc ;
}
else if [ GLOB $(dir)/lib : libicuuc.* ]
{
gICU_CORE_LIB = icuuc ;
}
else if [ GLOB $(ICU_PATH)/lib : cygicuuc*.dll ]
{
gICU_CORE_LIB = cygicuuc.dll ;
gICU_CYGWIN = true ;
}
else
{
ECHO warning: ICU shared common library not found in path. ;
ECHO hint: If the regex library fails to link then try again ;
ECHO with the environment variable ICU_LINK set to contain ;
ECHO the linker options required to link to ICU. ;
ECHO Defaulting to look for libicuuc ... ;
gICU_CORE_LIB = icuuc ;
}
if $(ICU_LINK)
{
# nothing to do, it's already been done!
# gICU_LIBS += <linkflags>$(ICU_LINK) ;
}
else if [ GLOB $(dir)/lib : icuin.* ]
{
gICU_IN_LIB = icuin ;
}
else if [ GLOB $(dir)/lib : icui18n.* ]
{
gICU_IN_LIB = icui18n ;
}
else if [ GLOB $(dir)/lib64 : libicui18n.* ]
{
gICU_IN_LIB = icui18n ;
}
else if [ GLOB $(dir)/lib : libicui18n.* ]
{
gICU_IN_LIB = icui18n ;
}
else if [ GLOB $(ICU_PATH)/lib : cygicuin*.dll ]
{
gICU_IN_LIB = cygicuin.dll ;
gICU_CYGWIN = true ;
}
else
{
ECHO warning: ICU shared i18n library not found in path. ;
ECHO hint: If the regex library fails to link then try again ;
ECHO with the environment variable ICU_LINK set to contain ;
ECHO the linker options required to link to ICU. ;
ECHO Defaulting to look for libicui18n ... ;
gICU_IN_LIB = icui18n ;
}
#Added by Tommy Nordgren - libicudata muct be linked against on Mac OS X
if $(ICU_LINK)
{
# nothing to do, it's already been done!
# gICU_LIBS += <linkflags>$(ICU_LINK) ;
}
else if [ GLOB $(dir)/lib64 : icudt.* ]
{
gICU_DATA_LIB = icudt ;
}
else if [ GLOB $(dir)/lib : icudt.* ]
{
gICU_DATA_LIB = icudt ;
}
else if [ GLOB $(dir)/lib : libicudata.* ]
{
gICU_DATA_LIB = icudata ;
}
else if [ GLOB $(ICU_PATH)/lib : cygicudt*.dll ]
{
gICU_DATA_LIB = cygicudt.dll ;
gICU_CYGWIN = true ;
}
else
{
local os = [ modules.peek : OS ] ;
echo $(os) ;
if $(os) != "DARWIN"
{
ECHO warning: ICU shared data library not found in path. ;
ECHO hint: If the regex library fails to link then try again ;
ECHO with the environment variable ICU_LINK set to contain ;
ECHO the linker options required to link to ICU. ;
}
else
{
ECHO warning: ICU shared data library not found in path. ;
ECHO hint: If the regex library fails to link then try again ;
ECHO with the environment variable ICU_LINK set to contain ;
ECHO the linker options required to link to ICU. ;
ECHO Defaulting to look for libicudata ... ;
gICU_DATA_LIB = icudata ;
}
}
#End of addition by Tommy Nordgren
}
}
gICU_CONFIG_CHECKED = true ;
}
if $(gHAS_ICU)
{
message icu_config ;
message icu_config2
: Note: Building Boost.Regex with Unicode/ICU support enabled
: " Using ICU in " $(ICU_PATH:J=" ")/include ;
return true ;
}
else
{
message icu_config
: "warning: Building Boost.Regex with the optional Unicode/ICU support disabled."
: "note: Please refer to the Boost.Regex documentation for more information"
: "note: this is a strictly optional feature." ;
if $(ICU_PATH)
{
message icu_config2
: warning! ICU configuration failed
: " Couldn't find utypes.h in " $(ICU_PATH:J=" ")/include/unicode ;
}
else
{
message icu_config2 ;
}
}
ICU_LINK = [ modules.peek : ICU_LINK ] ;
}
explicit icu_config ;
explicit icu_config2 ;
if [ check-icu-config ]
if $(ICU_LINK)
{
if $(gHAS_ICU)
{
BOOST_REGEX_ICU_OPTS = "<target-os>freebsd:<include>/usr/local/include" ;
ICU_SEARCH_OPTS = "<target-os>freebsd:<search>$(ICU_PATH)/lib" ;
BOOST_REGEX_ICU_OPTS += "<define>BOOST_HAS_ICU=1" ;
BOOST_REGEX_ICU_OPTS += "$(gICU_LIBS)" ;
if $(ICU_PATH)
{
# If ICU_PATH is specified on the command line, then it's
# relative to the current directory, while paths specified
# in a Jamfile are relative to that Jamfile. So, to
# avoid confusing the user if he's not running from
# libs/regex/build, explicitly root this.
ICU_PATH = [ path.native
[ path.root [ path.make $(ICU_PATH) ] [ path.pwd ] ] ] ;
if $(ICU_PATH) != "/usr" && $(ICU_PATH) != "/usr/local"
{
BOOST_REGEX_ICU_OPTS += "<include>$(ICU_PATH)/include" ;
ICU_SEARCH_OPTS = <search>$(ICU_PATH)/lib ;
}
}
if $(gICU_CYGWIN)
{
if $(gICU_CORE_LIB)
{
BOOST_REGEX_ICU_OPTS += "<linkflags>$(gICU_CORE_LIB) ;
}
if $(gICU_IN_LIB)
{
BOOST_REGEX_ICU_OPTS += "<linkflags>$(gICU_IN_LIB) ;
}
}
else
{
if $(gICU_CORE_LIB)
{
lib icucore : : <name>$(gICU_CORE_LIB) $(ICU_SEARCH_OPTS) <link>shared ;
ICU_EXTRA_SOURCE = icucore ;
explicit icucore ;
}
if $(gICU_IN_LIB)
{
lib icuin : : <name>$(gICU_IN_LIB) $(ICU_SEARCH_OPTS) <link>shared ;
ICU_EXTRA_SOURCE += icuin ;
explicit icuin ;
}
#Added by Tommy Nordgren libicudata must be linked against on Mac OS X
if $(gICU_DATA_LIB)
{
lib icudata : : <name>$(gICU_DATA_LIB) $(ICU_SEARCH_OPTS) <link>shared ;
ICU_EXTRA_SOURCE += icudata ;
explicit icudata ;
}
#End of addition by Tommy Nordgren
}
}
ICU_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 <runtime-link>shared ;
}
else
{
lib icuuc : : <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
lib icuuc : : <toolset>msvc <variant>debug <name>icuucd <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
lib icuuc : : <name>this_is_an_invalid_library_name ;
lib icudt : : <search>$(ICU_PATH)/lib <name>icudata <link>shared <runtime-link>shared ;
lib icudt : : <search>$(ICU_PATH)/lib <name>icudt <toolset>msvc <link>shared <runtime-link>shared ;
lib icudt : : <name>this_is_an_invalid_library_name ;
lib icuin : : <search>$(ICU_PATH)/lib <name>icui18n <link>shared <runtime-link>shared ;
lib icuin : : <toolset>msvc <variant>debug <name>icuind <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
lib icuin : : <toolset>msvc <variant>release <name>icuin <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
lib icuin : : <name>this_is_an_invalid_library_name ;
ICU_OPTS = <include>$(ICU_PATH)/include <library>icuuc/<link>shared/<runtime-link>shared <library>icudt/<link>shared/<runtime-link>shared <library>icuin/<link>shared/<runtime-link>shared <dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 <runtime-link>shared ;
}
exe has_icu : ./has_icu_test.cpp : $(ICU_OPTS) ;
explicit has_icu ;
alias icu_options : : : : [ check-target-builds has_icu : $(ICU_OPTS) : ] ;
SOURCES =
c_regex_traits.cpp
@ -269,59 +60,13 @@ SOURCES =
usinstances.cpp ;
lib boost_regex : ../src/$(SOURCES) $(ICU_EXTRA_SOURCE) icu_config2 icu_config
lib boost_regex : ../src/$(SOURCES) icu_options
:
#<link>static:<define>BOOST_REGEX_NO_LIB=1
#<link>static:<define>BOOST_REGEX_STATIC_LINK=1
<link>shared:<define>BOOST_REGEX_DYN_LINK=1
<toolset>gcc-mw:<link>static
<toolset>gcc-mingw:<link>static
<toolset>gcc-cygwin:<link>static
$(BOOST_REGEX_ICU_OPTS)
<conditional>@force-shared-linking
;
shared-linking-warning-emitted = ;
# The ICU is shipped as shared libraries with dynamic runtime.
# If Boost.Regex is built against static runtime, the combination
# will not work. The below rule forces shared runtime, and
# prints an explanation.
rule force-shared-linking ( properties * )
{
if $(gHAS_ICU)
{
if <runtime-link>static in $(properties)
{
if ! $(shared-linking-warning-emitted)
{
shared-linking-warning-emitted = 1 ;
ECHO "warning: forcing runtime-link=shared for Boost.Regex" ;
ECHO "warning: this is required when using the ICU library" ;
}
}
return <runtime-link>shared ;
}
}
alias icu_options : $(ICU_EXTRA_SOURCE) : : : $(BOOST_REGEX_ICU_OPTS) ;
explicit icu_options ;
boost-install boost_regex ;

26
build/has_icu_test.cpp Normal file
View File

@ -0,0 +1,26 @@
/*
*
* Copyright (c) 2010
* John Maddock
*
* Use, modification and distribution are subject to the
* Boost Software License, Version 1.0. (See accompanying file
* LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*
*/
#include <unicode/uversion.h>
#include <unicode/utypes.h>
#include <unicode/uchar.h>
#include <unicode/coll.h>
#if defined(_MSC_VER) && !defined(_DLL)
#error "Mixing ICU with a static runtime doesn't work"
#endif
int main()
{
UErrorCode err = U_ZERO_ERROR;
UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, "GREEK SMALL LETTER ALPHA", &err);
return err;
}

View File

@ -10,9 +10,12 @@ project
# There are unidentified linker problems on these platforms:
<toolset>mipspro-7.4:<link>static
<toolset>sun-5.9:<link>static
<toolset>msvc:<warnings>all
<toolset>gcc:<warnings>all
<toolset>gcc:<cxxflags>-Wextra
<define>U_USING_ICU_NAMESPACE=0
;
rule regex-test-run ( sources + : input * : name * )
{
return [

View File

@ -13,9 +13,14 @@
#include <fstream>
#include <string>
#include <vector>
#include <boost/program_options.hpp>
#include <boost/regex.hpp>
#ifdef BOOST_MSVC
#pragma warning(disable:4512 4244)
#endif
#include <boost/program_options.hpp>
namespace po = boost::program_options;
int after_context;

View File

@ -152,9 +152,15 @@ int main()
assert(file == "d.h");
// Greek text extraction with u32regex_search:
U_NAMESPACE_QUALIFIER UnicodeString text = L"Some where in \x0391\x039D\x0395\x0398\x0391 2004";
const UChar t[] = {
'S', 'o', 'm', 'e', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 'n', 0x0391, 0x039D, 0x0395, 0x0398, 0x0391, 0
};
const UChar g[] = {
0x0391, 0x039D, 0x0395, 0x0398, 0x0391, 0
};
U_NAMESPACE_QUALIFIER UnicodeString text = t;
U_NAMESPACE_QUALIFIER UnicodeString greek = extract_greek(text);
assert(greek == L"\x0391\x039D\x0395\x0398\x0391 2004");
assert(greek == g);
// extract currency symbols with associated value, use iterator interface:
std::string text2 = " $100.23 or \xC2\xA3""198.12 "; // \xC2\xA3 is the pound sign encoded in UTF-8

View File

@ -61,7 +61,7 @@ void search(std::istream& is)
std::memmove(buf, next_pos, leftover);
// fill the rest from the stream:
is.read(buf + leftover, size);
unsigned read = is.gcount();
std::streamsize read = is.gcount();
// check to see if we've run out of text:
have_more = read == size;
// reset next_pos:

View File

@ -51,7 +51,7 @@ void search(std::istream& is)
std::memmove(buf, next_pos, leftover);
// fill the rest from the stream:
is.read(buf + leftover, size);
unsigned read = is.gcount();
std::streamsize read = is.gcount();
// check to see if we've run out of text:
have_more = read == size;
// reset next_pos:

View File

@ -89,7 +89,7 @@ void load_file(std::string& s, std::istream& is)
{
s.erase();
if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail());
s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c;
while(is.get(c))
{

View File

@ -84,7 +84,7 @@ void load_file(std::string& s, std::istream& is)
{
s.erase();
if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail());
s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c;
while(is.get(c))
{

View File

@ -107,7 +107,7 @@ void load_file(std::string& s, std::istream& is)
{
s.erase();
if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail());
s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c;
while(is.get(c))
{

View File

@ -72,7 +72,7 @@ void load_file(std::string& s, std::istream& is)
{
s.erase();
if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail());
s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c;
while(is.get(c))
{

View File

@ -42,7 +42,7 @@ void load_file(std::string& s, std::istream& is)
{
s.erase();
if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail());
s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c;
while(is.get(c))
{

View File

@ -42,7 +42,7 @@ void load_file(std::string& s, std::istream& is)
{
s.erase();
if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail());
s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c;
while(is.get(c))
{

View File

@ -85,7 +85,7 @@ void load_file(std::string& s, std::istream& is)
{
s.erase();
if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail());
s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c;
while(is.get(c))
{

View File

@ -33,7 +33,7 @@ void load_file(std::string& s, std::istream& is)
//
// attempt to grow string buffer to match file size,
// this doesn't always work...
s.reserve(is.rdbuf()->in_avail());
s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c;
while(is.get(c))
{

View File

@ -32,7 +32,7 @@ void load_file(std::string& s, std::istream& is)
//
// attempt to grow string buffer to match file size,
// this doesn't always work...
s.reserve(is.rdbuf()->in_avail());
s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c;
while(is.get(c))
{

View File

@ -27,6 +27,10 @@
#include <boost/mpl/int_fwd.hpp>
#include <bitset>
#ifdef BOOST_MSVC
#pragma warning (push)
#pragma warning (disable: 4251)
#endif
namespace boost{
@ -1015,6 +1019,10 @@ inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QU
} // namespace boost.
#ifdef BOOST_MSVC
#pragma warning (pop)
#endif
#include <boost/regex/v4/u32regex_iterator.hpp>
#include <boost/regex/v4/u32regex_token_iterator.hpp>

View File

@ -149,7 +149,37 @@ namespace boost{ namespace re_detail{
{
return stdext::unchecked_equal(first, last, with);
}
#elif BOOST_WORKAROUND(BOOST_MSVC, > 1500)
//
// MSVC 10 will either emit warnings or else refuse to compile
// code that makes perfectly legitimate use of std::copy, when
// the OutputIterator type is a user-defined class (apparently all user
// defined iterators are "unsafe"). What's more Microsoft have removed their
// non-standard "unchecked" versions, even though their still in the MS
// documentation!! Work around this as best we can:
//
template<class InputIterator, class OutputIterator>
inline OutputIterator copy(
InputIterator first,
InputIterator last,
OutputIterator dest
)
{
while(first != last)
*dest++ = *first++;
return dest;
}
template<class InputIterator1, class InputIterator2>
inline bool equal(
InputIterator1 first,
InputIterator1 last,
InputIterator2 with
)
{
while(first != last)
if(*first++ != *with++) return false;
return true;
}
#else
using std::copy;
using std::equal;

View File

@ -292,7 +292,7 @@ template <class charT, class Traits, class Alloc>
inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
{
typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, submatch, m);
}
inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
{

View File

@ -9,9 +9,15 @@ project
<link>shared:<define>BOOST_REGEX_DYN_LINK=1
<toolset>msvc-7.1:<define>TEST_MFC=1
<toolset>msvc-7.0:<define>TEST_MFC=1
<toolset>msvc:<asynch-exceptions>on
# There are unidentified linker problems on these platforms:
<toolset>mipspro-7.4:<link>static
<toolset>sun-5.9:<link>static
<toolset>msvc:<warnings>all
<toolset>gcc:<warnings>all
<toolset>gcc:<cxxflags>-Wextra
<toolset>gcc:<cxxflags>-Wshadow
<define>U_USING_ICU_NAMESPACE=0
;
#
@ -135,4 +141,4 @@ test-suite regex
]
;
build-project ../example ;

View File

@ -35,7 +35,7 @@ int main()
regex_tA re;
int result;
result = regcompA(&re, expression, REG_AWK);
if(result > REG_NOERROR)
if(result > (int)REG_NOERROR)
{
char buf[256];
regerrorA(result, &re, buf, sizeof(buf));
@ -46,7 +46,7 @@ int main()
matches[0].rm_so = 0;
matches[0].rm_eo = strlen(text);
result = regexecA(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
if(result > REG_NOERROR)
if(result > (int)REG_NOERROR)
{
char buf[256];
regerrorA(result, &re, buf, sizeof(buf));

View File

@ -45,11 +45,11 @@ int main()
char nbuf[256];
int i;
result = regcomp(&re, expression, REG_AWK);
if(result > REG_NOERROR)
if(result > (int)REG_NOERROR)
{
regerror(result, &re, buf, sizeof(buf));
for(i = 0; i < 256; ++i)
nbuf[i] = buf[i];
nbuf[i] = (char)(buf[i]);
printf(nbuf);
return result;
}
@ -61,11 +61,11 @@ int main()
matches[0].rm_so = 0;
matches[0].rm_eo = wcslen(text);
result = regexec(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
if(result > REG_NOERROR)
if(result > (int)REG_NOERROR)
{
regerror(result, &re, buf, sizeof(buf));
for(i = 0; i < 256; ++i)
nbuf[i] = buf[i];
nbuf[i] = (char)(buf[i]);
printf(nbuf);
regfree(&re);
return result;

View File

@ -33,9 +33,14 @@ int* get_array_data();
int error_count = 0;
#ifndef TEST_THREADS
#define RUN_TESTS(name) \
std::cout << "Running test case \"" #name "\".\n";\
name();
#else
#define RUN_TESTS(name) \
name();
#endif
void run_tests()

View File

@ -94,7 +94,7 @@ void test(const std::vector< ::boost::uint32_t>& v)
std::copy(u32to16type(v.begin()), u32to16type(v.end()), std::back_inserter(v16));
#endif
#ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(u32to16type(v.begin()), u32to16type(v.end())), v16.size());
BOOST_CHECK_EQUAL((std::size_t)std::distance(u32to16type(v.begin()), u32to16type(v.end())), v16.size());
#endif
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
v32.assign(u16to32type(v16.begin()), u16to32type(v16.end()));
@ -103,7 +103,7 @@ void test(const std::vector< ::boost::uint32_t>& v)
std::copy(u16to32type(v16.begin()), u16to32type(v16.end()), std::back_inserter(v32));
#endif
#ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(u16to32type(v16.begin()), u16to32type(v16.end())), v32.size());
BOOST_CHECK_EQUAL((std::size_t)std::distance(u16to32type(v16.begin()), u16to32type(v16.end())), v32.size());
#endif
BOOST_CHECK_EQUAL(v.size(), v32.size());
i = v.begin();
@ -117,12 +117,12 @@ void test(const std::vector< ::boost::uint32_t>& v)
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
v16.assign(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin())));
#ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin()))), v16.size());
BOOST_CHECK_EQUAL((std::size_t)std::distance(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin()))), v16.size());
#endif
std::reverse(v16.begin(), v16.end());
v32.assign(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin())));
#ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin()))), v32.size());
BOOST_CHECK_EQUAL((std::size_t)std::distance(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin()))), v32.size());
#endif
BOOST_CHECK_EQUAL(v.size(), v32.size());
std::reverse(v32.begin(), v32.end());
@ -142,7 +142,7 @@ void test(const std::vector< ::boost::uint32_t>& v)
std::copy(u32to8type(v.begin()), u32to8type(v.end()), std::back_inserter(v8));
#endif
#ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(u32to8type(v.begin()), u32to8type(v.end())), v8.size());
BOOST_CHECK_EQUAL((std::size_t)std::distance(u32to8type(v.begin()), u32to8type(v.end())), v8.size());
#endif
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
v32.assign(u8to32type(v8.begin()), u8to32type(v8.end()));
@ -151,7 +151,7 @@ void test(const std::vector< ::boost::uint32_t>& v)
std::copy(u8to32type(v8.begin()), u8to32type(v8.end()), std::back_inserter(v32));
#endif
#ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(u8to32type(v8.begin()), u8to32type(v8.end())), v32.size());
BOOST_CHECK_EQUAL((std::size_t)std::distance(u8to32type(v8.begin()), u8to32type(v8.end())), v32.size());
#endif
BOOST_CHECK_EQUAL(v.size(), v32.size());
i = v.begin();
@ -165,12 +165,12 @@ void test(const std::vector< ::boost::uint32_t>& v)
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
v8.assign(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin())));
#ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin()))), v8.size());
BOOST_CHECK_EQUAL((std::size_t)std::distance(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin()))), v8.size());
#endif
std::reverse(v8.begin(), v8.end());
v32.assign(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin())));
#ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin()))), v32.size());
BOOST_CHECK_EQUAL((std::size_t)std::distance(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin()))), v32.size());
#endif
BOOST_CHECK_EQUAL(v.size(), v32.size());
std::reverse(v32.begin(), v32.end());