ずっと前から気になっていたことがあります。この関数を考えてみてください:
template<typename T>
T foo(const T& value)
{
return value;
}
これは、任意の値に対する最も単純な関数ラッパーです。ただし、「標準名」(map、filter、sqrt などの関数のように、多くの人が認識できる名前) があるかどうか疑問に思っていました。また、そのような機能を使用するために必要な既知の問題はありますか?
ずっと前から気になっていたことがあります。この関数を考えてみてください:
template<typename T>
T foo(const T& value)
{
return value;
}
これは、任意の値に対する最も単純な関数ラッパーです。ただし、「標準名」(map、filter、sqrt などの関数のように、多くの人が認識できる名前) があるかどうか疑問に思っていました。また、そのような機能を使用するために必要な既知の問題はありますか?
原則としてこれは恒等関数ですが、実際には引数のコピーを強制します。
したがって、T
値のセマンティクスがある場合でも、それは実際の ID です。それ以外の場合は、クローン機能です。
完全なアイデンティティは
template<typename T>
const T& identity(const T& value)
{
return value;
}
関数内のパラメーターを変更しないと、プログラミングの命名法があるかどうかわかりません。
また、値で返すため、返されるオブジェクトは同じオブジェクトではないため、完全なIDであるとは言えません。
クローン機能だと思います。
これは恒等関数です。たとえば、プロジェクションを他の関数に渡す必要があり、プロジェクションが不要な場合に便利です。いいえ、それほど便利ではありませんが、基本的に何もしない関数から得られる最高のものです。
恒等関数の説明は次のとおりです