Почему я не могу сгладить диапазон std :: meta :: info с помощью std :: views :: join?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему я не могу сгладить диапазон std :: meta :: info с помощью std :: views :: join?

Сообщение Anonymous »

У меня есть следующий код, и я не могу сгладить вложенный диапазон, используя std :: views :: join < /p>
template
consteval auto get_names() {
using get_fn = decltype(
[] {
auto result_view = std::meta::bases_of(^^T, std::meta::access_context::unchecked())
| std::views::transform([](std::meta::info r) {
return std::meta::members_of(r, std::meta::access_context::unchecked());
})
// JOIN does not work
// | std::views::join
;
// show range can be flattened
static_assert(std::is_same_v);
assert(1 == std::ranges::distance(result_view.begin(), result_view.end()));
// return placeholder
return std::vector {1,2,3,4};
});
return get_fn{}().size();
}
< /code>
Когда я не понаблюдаюсь (и static_assert), я получаю длинную ошибку (ссылка Godbolt).
Я делаю что -то не так или должно работать?/opt/compiler-explorer/clang-bb-p2996-trunk-20250623/bin/../include/c++/v1/meta:663:12: note: subexpression not valid in a constant expression
663 | return __metafunction(detail::__metafn_get_begin_member_decl_of,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
664 | reflectedEntity, ^^sentinel);


Подробнее здесь: https://stackoverflow.com/questions/796 ... dviewsjoin
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»