gcc 3.2 compilation problem]

Gabriel Dos Reis gdr@integrable-solutions.net
Mon Nov 18 15:11:00 GMT 2002


Jonathan Wakely <cow@compsoc.man.ac.uk> writes:

| On Mon, Nov 18, 2002 at 02:28:33PM -0600, Benjamin Kosnik wrote:
| > >This ought to be a FAQ.
| > 
| > Yep. Two related bug reports:
| 
| We probably shouldn't recommend it in the libstdc++ docs:
| 
| http://gcc.gnu.org/onlinedocs/libstdc++/21_strings/howto.html#4
| 
| Selected highlights:
| 
|    // Change everything into upper case
|    std::transform (s.begin(), s.end(), s.begin(), toupper);
|    ...
|    NOTE ... This is absolutely guaranteed to work ...
| 
| :-)

Indeed -- by now it appears clear that I don't even read our own docs :-(


| I can change it to use a function object such as:
| 
| template <typename C>
|    struct ToLower
|    {
|       C operator()(C c) { return tolower(c); }
|    };

I would prefer

   struct ToLower
   {
     template<typename CharT>
       Char operator()(CharT c) const
       {
          using std::tolower;
          return tolower(c);
       }
   };


| std::transform( p_str.begin(), p_str.end(), p_str.begin(), ToLower<char>() );

 std::transform( p_str.begin(), p_str.end(), p_str.begin(), ToLower() );

-- Gaby



More information about the Libstdc++ mailing list