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等函数......).它们是众所周知的需要使用这种功能的问题吗?
原则上它是一个身份函数,但在实践中它会强制参数的副本.
所以,如果T有价值语义,它仍然是一个真实的身份.否则,它是一个克隆功能.
一个完美的身份将是
template<typename T>
const T& identity(const T& value)
{
return value;
}
Run Code Online (Sandbox Code Playgroud)