0

I want the following function to be used for some binding purpose.

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

Is there a standard C++ function available to do this. Or do I have to write my own?

4

3 回答 3

3

我可能会这样写:

template <typename T>
auto identity(T && x) -> decltype(std::forward<T>(x))
{
    return std::forward<T>(x);
}
于 2013-02-10T13:12:02.127 回答
0

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

不过,我会调用它id而不是fun,因为它是身份函数。

于 2013-02-10T12:39:58.523 回答
0

如上所述,您可以简单地使用#define fn(x) (x)。但是当你将复杂的数据结构传递给你的“fn”时,事情会变得非常丑陋,让我们很难用误导性的编译器消息来追溯错误。

但是,如果您的绑定问题是一些线程同步问题。那么答案将是如何将线程 API/库用于此类事情。例如,对于 Ocaml,它类似于 >>= res 我们绑定的地方,直到我们找到用 res 表示的东西的结果。让我知道您正在使用的库的名称是否如此?

玩得开心。

于 2013-02-10T13:15:47.850 回答