【发布时间】:2017-01-12 13:59:43
【问题描述】:
我在源文件中包含了<utility>。然后我用了std::exchange,但是编译器说在命名空间std中没有找到exchange。我查看了usr/include/utility,并通过搜索exchange 找到了实现,它位于namespace std 块内。我必须从 std::exchange 中删除 std:: 才能编译代码。
我可以解决这个问题吗?
否则我怎样才能使我的代码可移植?
注意:我在 Android 上使用 Termux linux 模拟器中的 clang。我通过使用apt 安装它得到了clang。
【问题讨论】:
-
您是否启用了
c++14?clang -std=c++14? -
@Holt 我正在使用 c++11... 我会尝试改变它。正如我所说,没有
std::它仍然有效。 -
根据
cppreference,std::exchange是一个C++14函数。在此之前clang定义它可能只是纯粹的巧合。 -
@Holt 好的,c++14 解决了这个问题。谢谢你。
标签: c++ c++11 namespaces std