【发布时间】:2015-03-25 02:16:16
【问题描述】:
目前,如果您想否定谓词,则必须使用 std::<algorithm>_if_not 变体或 lambda。但为了学术界,我想知道这是否可能:
std::string s("hello");
std::find_if(s.begin(), s.end(), std::not1(::ispunct));
不写自己的函数对象,如何让这段代码工作?
【问题讨论】:
-
使用 Library Fundamentals v2 TS,
std::not_fn(::ispunct)。但是请注意,为了使此调用对任何字符串都是安全的,字符应先转换为unsigned char,然后再传递到ispunct。