【发布时间】:2020-12-14 01:00:33
【问题描述】:
这是导致我出现一些问题的代码,尝试构建并得到错误:
'unary_function base class undefined'和'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
}
};
【问题讨论】:
-
std::unary_function已在 C++17 中删除。您可以删除它 - 不再需要了。 -
标准库为所有以可调用对象作为参数的函数使用模板。你可以做同样的事情,而不是为
path_sep_comp做任何继承。 -
IIRC,unary_function 在 C++17 之前的标准库中也不是严格需要的。您可以在仿函数中手动定义它为您提供的两个别名。现在不需要这些别名,因此,unary_function 也不需要。