Код: Выделить всё
namespace sr = std::ranges;
namespace sv = std::views;
template
consteval auto get_vec5() {
return std::views::iota(0,n) | sv::filter([](const int i){return i%5 == 0;}) | sr::to();
}
consteval auto get_arr5() {
constexpr int n = 42;
auto v = get_vec5();
std::array arr;
sr::copy(v, arr.begin());
return arr;
}
int main()
{
constexpr auto val = get_arr5();
fmt::println("{}", val);
}
Код: Выделить всё
constexpr auto v = get_vec5();
Это задуманное поведение по стандарту C++ или особенность компилятора?
Меня немного смущает то, что я не могу получить v.size() без вызова get_vec5 2 раза. Я бы подумал, что если это незаконно, то это незаконно, а если нет, то у меня должен быть способ получить его, не вызывая get_vec5 два раза.
Подробнее здесь: https://stackoverflow.com/questions/792 ... r-consteva