如何解决您可以使用函数本地类作为find_if的谓词吗?
| 是否可以将本地类用作std :: find_if的谓词?#include <algorithm>
struct Cont
{
char* foo()
{
struct Query
{
Query(unsigned column)
: m_column(column) {}
bool operator()(char c)
{
return ...;
}
unsigned m_column;
};
char str[] = \"MY LONG LONG LONG LONG LONG SEARCH STRING\";
return std::find_if(str,str+45,Query(1));
}
};
int main()
{
Cont c;
c.foo();
return 0;
}
我在gcc上收到以下编译器错误:
error: no matching function for call to \'find_if(char [52],char*,Cont::foo()::Query)\'
解决方法
在C ++ 03中,这是不允许的。本地(非嵌套)类不能作为模板参数。在C ++ 11中是允许的。
一些术语提示:
嵌套类是在另一个类的范围内定义的类,例如
class A {class B{};};
本地类是在函数范围内定义的类(如您的示例)
, Query
是本地类,而不是嵌套类。这个问题已经讨论过了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。