1

ずっと前から気になっていたことがあります。この関数を考えてみてください:

template<typename T>
T foo(const T& value)
{
    return value;
}

これは、任意の値に対する最も単純な関数ラッパーです。ただし、「標準名」(map、filter、sqrt などの関数のように、多くの人が認識できる名前) があるかどうか疑問に思っていました。また、そのような機能を使用するために必要な既知の問題はありますか?

4

4 に答える 4

7

原則としてこれは恒等関数ですが、実際には引数のコピーを強制します。

したがって、T値のセマンティクスがある場合でも、それは実際の ID です。それ以外の場合は、クローン機能です。

完全なアイデンティティは

template<typename T>
const T& identity(const T& value)
{
    return value;
}
于 2012-07-18T08:57:51.443 に答える
2

関数内のパラメーターを変更しないと、プログラミングの命名法があるかどうかわかりません。

また、値で返すため、返されるオブジェクトは同じオブジェクトではないため、完全なIDであるとは言えません。

クローン機能だと思います。

于 2012-07-18T08:55:05.440 に答える
2

これは恒等関数です。たとえば、プロジェクションを他の関数に渡す必要があり、プロジェクションが不要な場合に便利です。いいえ、それほど便利ではありませんが、基本的に何もしない関数から得られる最高のものです。

于 2012-07-18T08:53:24.117 に答える
0

恒等関数説明は次のとおりです

于 2012-07-18T08:53:15.393 に答える