【发布时间】:2014-03-27 20:06:51
【问题描述】:
可能有人问过,但我对如何使这段代码与 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的一个错误,因为g++和clang++根本不调用
ns::swap。我会尝试发布另一个可能的解决方案。
标签: c++ visual-studio-2012 overloading ambiguous argument-dependent-lookup