C ++中是否有标准函数,它接受一个参数并返回相同的函数?

时间:2013-02-10 12:33:09

标签: c++ function

我希望以下函数用于某些绑定目的。

template <class T>
T fun(T arg) { return arg; }

是否有可用于执行此操作的标准C ++函数。或者我必须自己写吗?

3 个答案:

答案 0 :(得分:3)

我可能这样写:

template <typename T>
auto identity(T && x) -> decltype(std::forward<T>(x))
{
    return std::forward<T>(x);
}

答案 1 :(得分:0)

不,没有,但你已经完成了。

我称之为id而不是fun,因为它是身份功能。

答案 2 :(得分:0)

以简单的方式,你可以 - 如上所述 - 使用#define fn(x)(x)。但是当你将复杂的数据结构传递给你的'fn'时,事情会变得非常丑陋,让人很难用错误的编译器消息追溯错误。

但是如果您的绑定问题是某些线程同步问题。那么答案将是如何使用线程API /库来实现这一点。例如,对于Ocaml来说,它就像我们绑定的&gt;&gt; = res,直到我们找到res表示的结果。如果您正在使用的图书馆的名称是这样的话,请告诉我?

玩得开心。