脚本宝典收集整理的这篇文章主要介绍了看起来有点像柯里化 (currying) 的 C++,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
起因是昨天小伙伴在群聊中提问
话说
C 语言有没有可能用可变参数做科里化
于是我用 C++ 实现了一个不是真 currying 但是看起来像的东西…
#include <stdio.h>
int f(int x, int y) {
return x + y;
}
class G {
int x;
int(*f)(int, int);
public:
G(int(*f)(int, int), int x) {
this->f = f;
this->x = x;
}
int operator ()(int y) {
return f(x, y);
}
};
template <class a, class b, class c>
class Thing
{
b x;
a(*f)(b, c);
public:
Thing();
Thing(a(*f)(b, c), b x);
~Thing();
a operator()(c);
};
template <class a, class b, class c>
Thing<a, b, c>::Thing()
{
f = NULL;
x = (b)0;
}
template <class a, class b, class c>
Thing<a, b, c>::Thing(a(*f)(b, c), b x)
{
this->f = f;
this->x = x;
}
template <class a, class b, class c>
Thing<a, b, c>::~Thing()
{
}
template <class a, class b, class c>
a Thing<a, b, c>::operator ()(c y) {
return f(x, y);
}
int main() {
printf("%d", G(f, 1)(2));
printf("%d", Thing<int, int, int>(f, 1)(2));
return 0;
}
以上是脚本宝典为你收集整理的看起来有点像柯里化 (currying) 的 C++全部内容,希望文章能够帮你解决看起来有点像柯里化 (currying) 的 C++所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。