基本上,我正在尝试了解 C++ 17,并且我发现了as_const.
我们使用时有什么区别:
MyType t;
auto& p = as_const(t);
Run Code Online (Sandbox Code Playgroud)
代替:
MyType t;
const auto& p = t;
Run Code Online (Sandbox Code Playgroud)
这里有一些优点吗?
就你而言,它们是相同的。
std::as_const通常用于从一组重载(成员)函数中选择 const 版本。以下是来自cppreference的示例。
struct cow_string { /* ... */ }; // a copy-on-write string
cow_string str = /* ... */;
// for(auto x : str) { /* ... */ } // may cause deep copy
for(auto x : std::as_const(str)) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
即使您使用for(const auto &x : str),仍然可能会发生深复制。
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |