Проверьте, содержит ли пакет параметров std::span [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Проверьте, содержит ли пакет параметров std::span [дубликат]

Сообщение Anonymous »

Я перебираю последовательность аргументов во время компиляции и хочу проверить, может ли один из аргументов быть диапазоном. Если да, то я буду делать промежуточные вещи.

Код: Выделить всё

    template
inline auto SomeClass::resolve_args(std::index_sequence) const
{
std::tuple retval;
size_t i = 0;
size_t f = 0;
([&] {
if constexpr (std::is_integral_v) {
std::get(retval) = sysarg(i++);
}
else if constexpr (std::is_floating_point_v)
std::get(retval) = sysarg(f++);
else if constexpr (std::is_same_v) {
std::get(retval) = sysarg(i); i+= 2;
}
else if constexpr (is_stdstring::value)
std::get(retval) = sysarg(i++);
else if constexpr (std::is_standard_layout_v && std::is_trivial_v)
std::get(retval) = sysarg(i++);
else
static_assert(always_false, "Unknown type");
}(), ...);
return retval;
}
Где-то мне нужно проверить, является ли Args диапазоном. Возможно ли это?
Моя проблема до сих пор заключается в том, что мои попытки создания ветки if constexpr приводят к неудаче в других комбинациях типов. Итак, выкладываю всю функцию (с небольшими изменениями). Вы можете реализовать sysarg как ничего не делающую функцию.
В идеале подтип span должен быть тривиальным и стандартным_макетом, но я могу разобраться с деталями. Мне просто нужно понять, как действовать дальше!

Подробнее здесь: https://stackoverflow.com/questions/785 ... a-stdspanu
Ответить

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

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

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

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

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