2013-02-10 71 views
0

我想要下面的函数用于一些绑定目的。在C++中是否有一个标准函数,它接受一个参数并返回相同的结果?

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

是否有一个标准的C++函数可以做到这一点。或者我必须写我自己的?

+4

您能否提供一些背景知道您想在哪里以及何时使用类似的东西?可能有其他解决方案? – 2013-02-10 12:36:02

+0

什么样的“约束目的”?我不确定我是否错过了一些东西,但我看不出有什么理由为什么要这么做。 – LihO 2013-02-10 12:36:13

+0

呵呵,'#define IDENTITY(x)(x)' - 只是在开玩笑。 – 2013-02-10 12:37:38

回答

0

不,没有,但你完成了很多。

我叫它id而非fun,虽然,因为它是身份的功能。

+2

当我看到一个名为'id(x)'的函数时,我期望它从x生成/提取ID号。也许叫它'do_nothing(x)'? – Philipp 2013-02-10 12:45:35

+1

...这并不好玩! – 2013-02-10 12:48:04

3

我可能会写这样的:

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

在你能-as说简单的方式上文使用的#define FN(X)(X)。但是当你将复杂的数据结构传递给你的'fn'的时候,事情会变得非常丑陋,让它很难用错误的编译器消息追踪错误。

但是,如果你的绑定问题是一些线程同步问题。那么答案就是如何使用线程API /库来完成这样的事情。对于Ocaml来说,例如它就像东西>> = res,我们绑定到我们找到用res表示的结果。让我知道如果这是你使用的图书馆的名字?

玩得开心。

相关问题