我有一个方法接受sha1哈希的std :: vector作为字符串,其长度必须为20个字符.在单行中断言这个前提条件得到尊重将是很好的.
void MyClass::setSha1Sums(const std::vector<std::string>& sha1Sums)
{
assert(magic_oneliner_which_verifies_that_all_strings_are_20_chars_long);
sha1Sums_ = sha1Sums;
}
Run Code Online (Sandbox Code Playgroud)
C++ 03,带增强(> = 1.33):
std::find_if( sha1Sums.begin(), sha1Sums.end()
, boost::bind( &std::string::size, _1 ) != 20U
) == sha1Sums.end();
Run Code Online (Sandbox Code Playgroud)
请注意,这!=是一个重载运算符,它可以提升供应量,从而构建更复杂的绑定,使用基本的关系和逻辑运算符更简单.
http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html#operators
| 归档时间: |
|
| 查看次数: |
1266 次 |
| 最近记录: |