title: locale-specific to_lower problems with boost locale
body: <p>I'm experimenting with boost::locale::to_upper to do locale-specific upper-casing as per the boost-locale page <a href="http://www.boost.org/doc/libs/1_50_0/libs/locale/doc/html/conversions.html" rel="nofollow">http://www.boost.org/doc/libs/1_50_0/libs/locale/doc/html/conversions.html</a></p>
  
  <p>The text indicates that I should be able to use boost::locale::to_upper on 'grüßEN' and get the result 'GRÜSSEN' - which is the correct locale-specific uppercase version (So I believe).</p>
  
  <p>In my test version, I'm getting 'GRÜßEN' and not 'GRÜSSEN'.</p>
  
  <p>My test code looks like this (i'm using utf8cpp to check my string is actually utf8):</p>
  
  <pre><code>                boost::locale::generator gen;                                    
                  std::locale loc= gen("de_DE.UTF-8");  
  
                  std::locale::global(loc); 
                  cout.imbue(loc);
  
                  string s = "grüßEN"; 
                  if (utf8::is_valid(s.begin(), s.end())){
                      std::cout &lt;&lt; s &lt;&lt; " U= "&lt;&lt; boost::locale::to_upper(s) &lt;&lt; std::endl;
                  }
  </code></pre>
  
  <p>This is on OSX (10.7.4) using Xcode (4.1). I have installed ICU (49_1_2) with the suggested options of -DU_USING_ICU_NAMESPACE=0 -DU_CHARSET_IS_UTF8=1. ICU is in /usr/local/include/unicode and the libraries in /usr/local/lib/libicu*.*</p>
  
  <p>I built boost::locale from the 1_48 kit like this:</p>
  
  <pre><code>./bjam boost.locale.iconv=off -sICU_PATH=/usr/local --with-locale stage
  </code></pre>
  
  <p>and when building it reports:</p>
  
  <pre><code>Performing configuration checks
  
  - icu                      : yes
  
  Component configuration:
  
   - chrono                   : not building
  - date_time                : not building
  - exception                : not building
  - filesystem               : not building
  - graph                    : not building
  - graph_parallel           : not building
  - iostreams                : not building
  - locale                   : building
  - math                     : not building
  - mpi                      : not building
  - program_options          : not building
  - python                   : not building
  - random                   : not building
  - regex                    : not building
  - serialization            : not building
  - signals                  : not building
  - system                   : not building
  - test                     : not building
  - thread                   : not building
  - timer                    : not building
  - wave                     : not building
  
  ...patience...
  ...patience...
  ...found 1850 targets...
  ...updating 25 targets...
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-    off/threading-multi/encoding/codepage.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/boundary.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/codecvt.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/collator.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/conversion.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/date_time.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/formatter.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/icu_backend.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/numeric.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/icu/time_zone.o
  darwin.link.dll bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/threading-multi/libboost_locale.dylib
  common.copy stage/lib/libboost_locale.dylib    
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv- off/link-static/threading-multi/encoding/codepage.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/boundary.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/codecvt.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/collator.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/conversion.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/date_time.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/formatter.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/icu_backend.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/numeric.o
  darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/time_zone.o
  darwin.archive bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/libboost_locale.a
  /usr/bin/libtool: warning same member name (codecvt.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-  static/threading-multi/std/codecvt.o and: bin.v2/libs/locale/build/darwin- 4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/codecvt.o (due to use  of basename, truncation, blank padding or duplicate input files)
  /usr/bin/libtool: warning same member name (codecvt.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/codecvt.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/codecvt.o (due to use of basename, truncation, blank padding or duplicate input files)
  /usr/bin/libtool: warning same member name (collate.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/std/collate.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/collate.o (due to use of basename, truncation, blank padding or duplicate input files)
  /usr/bin/libtool: warning same member name (converter.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/std/converter.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/converter.o (due to use of basename, truncation, blank padding or duplicate input files)
  /usr/bin/libtool: warning same member name (date_time.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/date_time.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/shared/date_time.o (due to use of basename, truncation, blank padding or duplicate input files)
  /usr/bin/libtool: warning same member name (numeric.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/icu/numeric.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/numeric.o (due to use of basename, truncation, blank padding or duplicate input files)
  /usr/bin/libtool: warning same member name (numeric.o) in output file used for input files: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/posix/numeric.o and: bin.v2/libs/locale/build/darwin-4.2.1/release/boost.locale.iconv-off/link-static/threading-multi/std/numeric.o (due to use of  basename, truncation, blank padding or duplicate input files)
  common.copy stage/lib/libboost_locale.a
  ...updated 25 targets...
  </code></pre>
  
  <p>According to <a href="https://svn.boost.org/trac/boost/ticket/6424" rel="nofollow">https://svn.boost.org/trac/boost/ticket/6424</a>, the warnings can be ignored (or does anyone know better?)
  I copy the built libs from stage/libs to /usr/local/libs. </p>
  
  <p>So as far as I can tell it is correctly built against ICU. My test code does require me to link against libiconv - I would have thought that wouldn't be necessary as I turned off icon in the build?</p>
  
  <p>Can anyone provide me some insight into what is going on/what I have done wrong and why I don't get the expected behaviour as documented - or at least some things to try?</p>
  
  <p>cheers</p>
  
  <p>Chris</p>