Код: Выделить всё
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;
}
Моя проблема до сих пор заключается в том, что мои попытки создания ветки if constexpr приводят к неудаче в других комбинациях типов. Итак, выкладываю всю функцию (с небольшими изменениями). Вы можете реализовать sysarg как ничего не делающую функцию.
В идеале подтип span должен быть тривиальным и стандартным_макетом, но я могу разобраться с деталями. Мне просто нужно понять, как действовать дальше!
Подробнее здесь: https://stackoverflow.com/questions/785 ... a-stdspanu
Мобильная версия