传递引用函数如何区分传递值函数?例如:区分传递引用和传递值
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.
这两个函数是不明确的;其中一个必须重新命名或完全删除。
如何避免这种情况?一种形式是否应该优先于其他形式?或者是否有任何通用的命名指南来区分它们?
为什么这是一个需要解决的问题?由于它们不明确,编译器不会允许它们共存,因此只要运行编译器,问题就会持续下去,之后程序员将撤销先前的更改。 – 2011-05-18 17:07:44
这是一个关于函数签名的问题。如果第二个声明通过'const'引用传递,则编译器可以区分签名。 – 2011-05-18 17:11:55
是否真的不可能在调用时区分OP问题中的两个函数?如果是的话,如果没有,如果C++编译器提供了一个错误,即使函数没有被调用,它也不会是稍微好一点的行为吗?我可以在没有调用的情况下使用gcc 4.6.3进行编译。 – 2013-01-08 17:34:46