gpt4 book ai didi

c++ - C++ 中的谓词

转载 作者:行者123 更新时间:2023-11-28 01:29:14 24 4
gpt4 key购买 nike

C++ STL 算法中的谓词参数被定义为模板中的类型参数。据我了解,谓词可以是以下两种情况之一-

1) 重载 operator() 返回 bool 的结构。这可以用作谓词的模板参数中的类型

2) 一个返回 bool 值的函数。这怎么是模板中谓词的类型参数?

最佳答案

让我们检查一个简单的定义:

template <typename T>
struct TD;

bool is_odd(const int x) {
return x % 2 != 0;
}

template<typename T>
void foo(T arg){
TD<T> type_displayer;
}

int main() {
foo(is_odd);
}

当您运行这段代码时,您会收到一个错误。一个错误说:

'TD<bool (*)(int)> type_displayer' has incomplete type

这是我最喜欢的检查推导类型的“hack”(T 来自 foo 的参数)。你可以清楚地看到我是如何将函数传递给 foo 的在main , 但推导的类型是 <bool (*)(int)> ,它是一个指向返回 bool 的函数的指针并取 int作为参数

这就是将函数作为参数传递给模板函数的全部内容。

有关函数指针的引用资料,请参阅this questionthis tutorial .

关于c++ - C++ 中的谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52349812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com