函数取一个参数并返回它

Mor*_*enn 1 c++ functional-programming

很长一段时间以来,我都会想到一些事情.只需考虑这个功能:

template<typename T>
T foo(const T& value)
{
    return value;
}
Run Code Online (Sandbox Code Playgroud)

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

Use*_*ess 7

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

所以,如果T有价值语义,它仍然是一个真实的身份.否则,它是一个克隆功能.

一个完美的身份将是

template<typename T>
const T& identity(const T& value)
{
    return value;
}
Run Code Online (Sandbox Code Playgroud)