在MRE https://godbolt.org/z/jdjPzdGeo中,是否有一种方法可以返回Func
中c
类型数组的迭代器,就像您在Func2
和Func3
中看到的std::array
一样?IDK返回类型是什么
还有,有没有办法使Func
constexpr像Func2
一样?
编辑:在这里添加代码
#include <array>
std::pair<int*, std::size_t>
Func() noexcept
{
// why does constexpr instead of static not work?
static int arr[] = {1, 2};
return { arr, std::size(arr) };
}
constexpr std::pair<std::array<int,2>::const_iterator, std::array<int,2>::const_iterator>
Func2() noexcept
{
constexpr std::array<int, 2> arr {{1, 2}};
return { std::cbegin(arr), std::cend(arr) };
}
std::pair<std::array<int,2>::const_iterator, std::array<int,2>::const_iterator>
Func3() noexcept
{
static std::array<int, 2> arr {{1, 2}};
return { std::cbegin(arr), std::cend(arr) };
}
int main()
{
Func();
Func2();
Func3();
}
返回c类型数组的迭代器?
IDK返回类型是什么
数组的迭代器类型是指针。例如,如果数组为int
,则该数组的迭代器类型为int*
。
,我期望返回类型是某种类型的迭代器。
int*
是一个迭代器
int*适用于std::begin,但std::cbegin呢?
如果你想要一个常量迭代器,那就是const int*
。
据我所知,你的Func2
返回悬空迭代器。不要将迭代器、引用等返回给具有自动存储持续时间的对象。