如何使用C++實現一個and函數?
就是函數編程裡面常見的and,大概是這麼一件事:
auto and(Fn1 fn1, Fn2 fn2){return [fn1, fn2](...)
{ return fn1(...) fn2(...); };}
參數部分實在不知道怎麼搞。
輪子叔的寫法已經過時了(逃
C++17都來了,我們應該積極跟進標準(逃
constexpr auto And = [](auto l, auto r) {
return [l = std::forward&
r = std::forward&
return l(args...) r(args...);
};
};
隨手一寫,如果錯了歡迎打臉
(想了一下,這麼寫的確有點問題,看看誰能發現(已經改對了,現在的寫法是完美的
template&
auto And(function&
{
return [=](TArgs ...args)
{
return a(args...) b(args...);
};
}
bool Fuck(int a, int b, string c)
{
return a &<= b;
}
bool Shit(int a, int b, string c)
{
return a &>= b;
}
int main(void)
{
auto x = And&
cout &<&< x(1, 1, "fuck") &<&< "," &<&< x(1, 2, "shit") &<&< "," &<&< x(2, 1, "bitch") &<&< endl;
return 0;
}
auto and(Fn1 fn1, Fn2 fn2)
{
return [fn1, fn2](auto... args)
{
return fn1(args...) fn2(args...);
};
}
雖然必須換個函數名,and 是不能作為函數名的
雖然我學過erlang,但是並沒有看懂這個and函數···我好羞愧
推薦閱讀:
※如何在 C++ 代碼中提示編譯器某個分支的執行概率高?
※C++ 函數如何返回多值?
※程序員有哪些借口可以讓自己寫的代碼里到處都是Bug並且代碼可讀性很低?
※如何在 Visual Studio 上用 C/C++ 寫 Linux 程序?