c++ - 以带有重载()的函数/lambda/类作为参数的函数
问题描述
我需要编写一个函数,该函数可以将另一个函数/lambda/类与 () 运算符重载为参数并正确使用它们(如 std::sort 的第 3 个参数。它在 C++ 语法方面是什么样的?
解决方案
您可以将其设置为std::sort
带有模板参数的函数模板(如 ),您认为该模板参数是可调用的:
template<typename Func>
void myFunction(Func f)
{
f();
}
现在让我们测试一下:
void normalFunction()
{
std::cout << "Normal function.\n";
}
struct Functor {
void operator()()
{
std::cout << "Functor object.\n";
}
};
int main()
{
Functor functor;
myFunction(normalFunction);
myFunction(functor);
myFunction([]{ std::cout << "Lambda.\n"; });
}
这将打印:
正常功能。 函子对象。 拉姆达。
推荐阅读
- java - 带有 java.lang.IllegalStateException 的 Servlet:在导出到 Excel 时提交响应后无法转发 [Apache POI]
- xslt - 在根元素上声明所有命名空间
- linux - 有没有办法在不输入整个命令的情况下打印 CMake 的一个命令的帮助?
- javascript - 为什么此 javascript 一直未选中该复选框?
- flutter - 如何在 Flutter 中为下拉标签和下拉列表文本设置不同的颜色?
- c++ - 我可以同时绘制所有相同类型的对象吗?
- redis - Redis 集群的 RedisSearch 模块
- c++ - 除了 FD=0,1,2 之外,还有什么方法可以安全成功地写入手动选择的文件描述符编号?
- html - 为什么我的烧瓶应用程序顶部有空间
- blazor - 在 MainLayout.razor 或 App.razor 中添加 MatBlazor MatThemeProvider