Max*_*xpm 2 c++ reference return-value ambiguity
pass-by-reference函数通常如何区分pass-by-value函数?例如:
template <typename T>
void sort(std::vector<T>& source); // Sorts source.
// Versus...
template <typename T>
std::vector<T> sort(std::vector<T> source); // Returns a sorted copy of source.
Run Code Online (Sandbox Code Playgroud)
这两个功能含糊不清; 其中一个必须重命名或完全删除.
如何避免这种情况?一种形式应该优先于另一种吗?或者是否有任何共同的命名准则来区分它们?
你不能给他们不同的名字吗?sorted例如,我会命名功能版本.
仅仅因为你可以重载函数(或者在这种情况下是函数模板)并不意味着你必须这样做.
顺便说一句,您可以根据"命令式版本"实现"功能版本":
template <typename T>
void sort(std::vector<T>& source)
{
// sort in place
}
template <typename T>
std::vector<T> sorted(std::vector<T> copy)
{
sort(copy);
return copy;
}
Run Code Online (Sandbox Code Playgroud)