提问者:小点点

在C++中,我如何唯一地标识包含在std::函数中lambda(可能正在捕获)


我计划使用类似于集合的容器(例如qt中的qsetstd::set)来保存包装lambda(捕获或非捕获)的std::function对象,以避免多次添加相同的lambda。这些类都需要用户提供键类型的比较或哈希计算功能。

但是,据我所知,如果底层lambda正在捕获,target()方法将返回nullptr,因此无法根据其返回值比较两个std::function

那么,如何比较两个任意的std::function,或者至少从一个std::function中计算一个唯一的值呢?


共1个答案

匿名用户

每个lambda都有自己唯一的类型,因此可以使用target_type。只有非捕获lambda可转换为函数PTR。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|中|唯一|标识|包|含在|std|函数|中|lambda|捕获)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?