函数取一个参数并返回它

时间:2012-07-18 08:51:24

标签: c++ functional-programming

现在很长一段时间以来我都会想到一些东西。只需考虑这个功能:

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

对于任何给定值,这是最简单的函数包装器。但是,我一直在想它是否有一个“标准名称”(许多人会认识到,比如map,filter,sqrt等函数......)。它们是众所周知的需要使用这种功能的问题吗?

4 个答案:

答案 0 :(得分:7)

原则上它是一个身份功能,但在实践中它会强制参数的副本。

因此,如果T具有值语义,那么它仍然是一个真实的身份。 否则,它是一个克隆功能。

完美的身份将是

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

答案 1 :(得分:2)

这是一个身份功能。例如,当你必须将投影传递给其他函数并且不需要任何投影时,这很有用。不,不是非常有用,但这是你从一个基本上什么都不做的功能中获得的最好的。

答案 2 :(得分:2)

对函数内部的参数没有任何更改,我不确定它是否有任何编程命名。

你也不能说它是一个完整的标识,因为返回的对象不是同一个对象,因为你按值返回。

我说这是克隆功能

答案 3 :(得分:0)

以下是身份功能的explanation