use*_*072 3 c++ namespaces std c++11
我包含<utility>
在我的源文件中。然后我使用了,但是编译器说它在命名空间 std 中std::exchange
没有找到。exchange
我查看了usr/include/utility
,通过搜索exchange
我找到了实现,它位于namespace std
块内。我必须删除std::
fromstd::exchange
才能使代码编译。
我可以解决这个问题吗?
否则我怎样才能使我的代码可移植?
注意:我在 Android 上使用 Termux Linux 模拟器中的 clang。我通过安装它得到了铿锵声apt
。
std::exchange
在 C++14 中引入。如果您使用C++11,则标准不提供它。
解决方案:使用符合 C++14 的实现(可能需要显式启用支持,具体取决于它是否是默认的)。
否则我怎样才能使我的代码可移植?
您可以自己实施。这是cppreference的可能实现。
Run Code Online (Sandbox Code Playgroud)template<class T, class U = T> T exchange(T& obj, U&& new_value) { T old_value = std::move(obj); obj = std::forward<U>(new_value); return old_value; }
归档时间: |
|
查看次数: |
4232 次 |
最近记录: |