你能用一个函数局部类作为谓词来查找if吗
Can you use a function local class as predicate to 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中,这是不允许的Local(非嵌套)类不能是模板参数在C++11中,这是允许的
一些术语提示:
嵌套类是在另一个类的范围内定义的类,例如
class A {class B{};};
本地类是在函数范围中定义的类(如您的示例)
Query
是一个局部类,而不是嵌套类。这个问题已经讨论过了。
相关文章:
- std::condition_variable::wait()如何评估给定的谓词
- 我的简单if-else语句是如何无法访问的代码
- 如何将enable-if与模板参数和参数包一起使用
- 无论条件是否为true,if总是在c++中执行
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何删除peer if else分支中的冗长句子
- 我似乎对if/else的基本语句有问题:/
- if数组上的随机数
- 将按位if条件转换为普通if条件
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 自定义C++谓词并查找if
- 你能用一个函数局部类作为谓词来查找if吗