Car*_*son 5 c++ std c++20 std-span
标题。
我正在实现这个类:
#include <span>
#include <vector>
class MyClass {
public:
std::span<int *> numbers(void) {
return m_numbers;
}
std::span<const int *> cnumbers(void) const {
// What to do here?
}
private:
std::vector<int *> m_numbers;
};
Run Code Online (Sandbox Code Playgroud)
我的第一次尝试是使用非常量函数中展示的自动转换(我相信这与 相关std:decay?我不太明白)。
return m_numbers
Run Code Online (Sandbox Code Playgroud)
这无法编译,没有已知的转换。
我发现的一种实现是这样的:
return std::span(m_numbers.begin(), m_numbers.end());
Run Code Online (Sandbox Code Playgroud)
这会返回一个std::span<int * const>,但这并不完全是我想要的。这种使用的变体cbegin似乎没有帮助。
我的目标是 c++20
你试图打破常量正确性。返回std::span<const int *>将允许修改这些元素(指针本身,这不会const)。
正确的返回类型应该是,注意右侧的std::span<const int * const>附加内容。const
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |