我希望能够将我的自定义容器传递给这个std::span
构造函数:
template< class R >
explicit(extent != std::dynamic_extent)
constexpr span( R&& range );
我需要向我的自定义类添加什么以使其满足能够将其传递给std::span
接收范围的构造函数的要求?
例如,std::vector
我们能够做到这一点:
std::vector<int> v = {1, 2, 3};
auto span = std::span{v};
我已经将这些添加到我的自定义类中:
Type* begin()
{
return m_Data;
}
Type* end()
{
return m_Data + m_Length;
}
const Type* data() const
{
return m_Data;
}
size_t size() const
{
return m_Length;
}
...这反过来又允许我使用基于范围的循环,std::data(my_container)
以及std::size(my_container)
. 我错过了什么,以便我也可以将我的容器传递给std::span
构造函数?是否需要实现更复杂的迭代器?