有人可能问,但我感兴趣的是如何使这个代码工作,2012 VC:VC++ 2012:“使用参数相关查找找到”解决方法?
#include <vector>
namespace ns {
struct Obj { };
template <class T> void swap(T& a, T& b) { }
}
int main(int argc, char* argv[])
{
std::vector<ns::Obj> v;
std::vector<ns::Obj>().swap(v); <-'std::swap' : ambiguous call to overloaded function
return 0;
}
我都用这个NS命名空间,并且不能更改它。它必须能够在没有STL的情况下工作,并拥有自己的swap()。如何正确使用它与STL一起呢?
实际上它看起来像MSVC的bug,因为g ++和clang ++根本不调用ns :: swap。我会尝试发布另一个可能的解决方案 –