在 MRE https://godbolt.org/z/jdjPzdGeo 中,有沒有辦法像您在 in和 中看到的那樣回傳c型別陣列的迭代器?IDK 回傳型別是什么。Funcstd::arrayFunc2Func3
另外,有沒有辦法讓Funcconstexpr 像 in 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();
}
uj5u.com熱心網友回復:
回傳 c 型別陣列的迭代器?
IDK 回傳型別是什么。
陣列的迭代器型別是指標。例如,如果您有一個 陣列int,則該陣列的迭代器型別為int*。
并且期望回傳型別是某種迭代器。
int* 是一個迭代器。
int* 適用于 std::begin 但是 std::cbegin 呢?
如果你想要一個常量迭代器,那就是const int*.
Func2據我所知,您的回報懸空迭代器。不要將迭代器、參考等回傳給具有自動存盤持續時間的物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329663.html
