2013-02-10 70 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表示的結果。讓我知道如果這是你使用的圖書館的名字?

玩得開心。

相關問題