Run Code Online (Sandbox Code Playgroud)constexpr reference operator[](index_type idx) const; constexpr reference operator()(index_type idx) const;返回
idx对序列的-th元素的引用.如果idx超出范围(即,如果它小于零或大于或等于size()),则行为是未定义的.
是有意义的超载operator[]进行索引,作为量程表示的对象可以是指对象的连续序列,但为什么是operator(),该函数调用操作符,也重载用于相同目的?我不相信标准库中有类似的东西.
Nic*_*las 22
那是因为mdspan,一个还未接受多维跨越式,使用operator()索引.毕竟,operator[]只需要一个索引,同时mdspan需要多个索引.
因此,为了允许这两种类型具有尽可能相似的接口,span也允许operator().
请注意,使用operator()是C++中用于多维索引的常见约定.与许多其他人一样,Eigen和Boost都使用它.