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 次 |
| 最近记录: |