Fix transform narrowing warnings

Catch passes ::tolower into std::transform with string iterators.
::tolower has the signature int(int), which triggers a stealth narrowing
warning inside std::transform, because transform calls
*_Dest = _Fn(*_First), which implicitly narrows an int to a char.

For this particular application the narrowing is fine, so explicitly
narrow in a lambda.
This commit is contained in:
Billy Robert O'Neal III 2016-10-14 14:08:57 -07:00
parent ccf7f2842a
commit 79f01100e3

View File

@ -22,7 +22,8 @@ namespace Catch {
return s.find( infix ) != std::string::npos; return s.find( infix ) != std::string::npos;
} }
void toLowerInPlace( std::string& s ) { void toLowerInPlace( std::string& s ) {
std::transform( s.begin(), s.end(), s.begin(), ::tolower ); std::transform( s.begin(), s.end(), s.begin(),
[](char c) { return static_cast<char>(::tolower(c)); } );
} }
std::string toLower( std::string const& s ) { std::string toLower( std::string const& s ) {
std::string lc = s; std::string lc = s;