如何解决C ++ 17中std :: unary_function的等效替代品是什么?
这是引起我一些问题的代码,试图建立并得到错误:
'unary_function基类未定义','unary_function'不是std的成员'
std::unary_function
已在C ++ 17中删除,那么什么是等效版本?
#include <functional>
struct path_sep_comp: public std::unary_function<tchar,bool>
{
path_sep_comp () {}
bool
operator () (tchar ch) const
{
#if defined (_WIN32)
return ch == LOG4CPLUS_TEXT ('\\') || ch == LOG4CPLUS_TEXT ('/');
#else
return ch == LOG4CPLUS_TEXT ('/');
#endif
}
};
解决方法
p
和许多其他基类,例如std::unary_function
或std::not1
或std::binary_function
已逐渐被弃用并从标准库中删除,因为不需要它们
在现代C ++中,正在使用概念。一个类是否专门从std::iterator
继承并不重要,重要的是它有一个带一个参数的调用运算符。这就是使其成为一元函数的原因。您可以在C ++ 20中结合使用std::is_invocable
和SFINAE或requires
这样的特征来检测到这一点。
在您的示例中,您可以简单地从std::unary_function
中删除继承:
std::unary_function
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。