我的問題很簡單。執行以下操作是否安全?是否在名稱空間foo中聲明swap(),然後在同一名稱空間下使用swap()而不是foo :: swap()意味着foo :: swap()?
不需要任何倫理建議,如「不要對你的功能互換()!」或別的,請!
file1.hpp
//header guards here
#include <utility> //includes std::swap and std::move
namespace foo
{
template<typename T>
inline void swap(T& lhs, T& rhs)
{
T temp = std::move(lhs);
lhs = std::move(rhs);
rhs = std::move(temp);
}
}
file2.cpp
#include "file1.hpp"
namespace foo
{
template<typename T>
void myfun(T a, T b)
{
a += b;
swap(a, b); //does it imply foo::swap, because the function
//is declared in the foo namespace??
}
}
參數依賴查找不會有任何效果,你的模板是太貪婪。 –
@DieterLucking你說我應該說使用foo :: swap;在功能上讓它更慈善? – DeiDei
你爲什麼不簡單地用'std :: cout <<「Hello world」'語句來測試它? –