0

次の関数を何らかのバインディングの目的で使用したいと考えています。

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

これを行うために使用できる標準の C++ 関数はありますか。それとも自分で書く必要がありますか?

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 に答える