為什么lambda不能自動推到成function
uj5u.com熱心網友回復:
可以使用模板或function作為引數using func = std::function<void(void)>;
using functptr = void(*) (void);
template<typename t>
void f1(t&& func) {
func();
}
template<typename t, typename... u>
void f1(t&& first, u&&... another) {
f1(first);
f1(another...);
}
void f2(func f) {
f();
}
int main() {
auto test1 = []() { std::cout << "lambda "; };
func test2 = []() { std::cout << "function "; };
functptr test3 = []() { std::cout << "function pointer "; };
/*
std::cout << typeid(test1).name() << typeid(test2).name() << typeid(test3).name();
*/
f1(test1, test2, test3);
//print lambda function fuction pointer
f2(test1);f2(test2);f2(test3);
//print lambda function fuction pointer
}
uj5u.com熱心網友回復:
void*是萬能指標uj5u.com熱心網友回復:
直接用指標就可以接收了。uj5u.com熱心網友回復:
template <class T>
void foreach(const std::vector<std::string>& strVec, T callable)
{
for (size_t i = 0; i < strVec.size(); ++i) {
if (callable(strVec[i])) {// .....} else { // .....}
}
}
uj5u.com熱心網友回復:
可以吧?誰說不行的轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/22520.html
標籤:C++ 語言
上一篇:c++編程 新手求幫助 要求用類
下一篇:VS2017靜態庫移植Mac系統
