我想要下面的函数用于一些绑定目的。在C++中是否有一个标准函数,它接受一个参数并返回相同的结果?
template <class T>
T fun(T arg) { return arg; }
是否有一个标准的C++函数可以做到这一点。或者我必须写我自己的?
我想要下面的函数用于一些绑定目的。在C++中是否有一个标准函数,它接受一个参数并返回相同的结果?
template <class T>
T fun(T arg) { return arg; }
是否有一个标准的C++函数可以做到这一点。或者我必须写我自己的?
不,没有,但你完成了很多。
我叫它id
而非fun
,虽然,因为它是身份的功能。
当我看到一个名为'id(x)'的函数时,我期望它从x生成/提取ID号。也许叫它'do_nothing(x)'? – Philipp 2013-02-10 12:45:35
...这并不好玩! – 2013-02-10 12:48:04
我可能会写这样的:
template <typename T>
auto identity(T && x) -> decltype(std::forward<T>(x))
{
return std::forward<T>(x);
}
在你能-as说简单的方式上文使用的#define FN(X)(X)。但是当你将复杂的数据结构传递给你的'fn'的时候,事情会变得非常丑陋,让它很难用错误的编译器消息追踪错误。
但是,如果你的绑定问题是一些线程同步问题。那么答案就是如何使用线程API /库来完成这样的事情。对于Ocaml来说,例如它就像东西>> = res,我们绑定到我们找到用res表示的结果。让我知道如果这是你使用的图书馆的名字?
玩得开心。
您能否提供一些背景知道您想在哪里以及何时使用类似的东西?可能有其他解决方案? – 2013-02-10 12:36:02
什么样的“约束目的”?我不确定我是否错过了一些东西,但我看不出有什么理由为什么要这么做。 – LihO 2013-02-10 12:36:13
呵呵,'#define IDENTITY(x)(x)' - 只是在开玩笑。 – 2013-02-10 12:37:38