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