我想要下面的函數用於一些綁定目的。在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