|
发表于 2023-6-1 11:01:46
|
显示全部楼层
- error: call to 'swap' is ambiguous
- swap<int>(x, y);
- ^~~~~~~~~
- /usr/bin/../include/c++/v1/__utility/swap.h:33:85: note: candidate function [with _Tp = int]
- inline _LIBCPP_INLINE_VISIBILITY __swap_result_t<_Tp> _LIBCPP_CONSTEXPR_AFTER_CXX17 swap(_Tp& __x, _Tp& __y)
- ^
- note: candidate function [with T = int]
- template <typename T> void swap(T &a, T &b) {
- ^
- 1 error generated.
复制代码
4楼的回答终于基本算是答到真正的问题上了,可见就算有工具辅助自己没有基本的判断能力还是白费,只能闹出各种笑话。
补充一点,如果不想改名也可以显式指定命名空间,比如调用标准库的就是 std::swap,这个代码里自己定义的就是 ::swap,引入命名空间一定程度上就是用来解决这种问题的,这也是不建议 using namespace std; 的原因之一。 |
|