Александр
Типа bar(foo(get<2*I>(argstuple), get<2*I+1>(argstuple))...)
Evgenii
Короче, есть библиотека, которая принимает вариадик пак своего класса, который по факту пара чисел либо одно из двух специальных значений. Нужно написать адаптер в который передается какой-то стандартный тип, желательно лаконично
Evgenii
initializer list нельзя форвардить как я понял, хотя это было бы удобнее всего
Александр
А почему просто не передавать много аргументов?
Александр
Вариадик паки подразумевают количество, известное при компиляции, поэтому из стандартных типов можно только array поюзать
Александр
Заполняемый в рантайм
Evgenii
А почему просто не передавать много аргументов?
в смысле много аргументов? просто числа?
Evgenii
о том и был вопрос, как их попарно преобразовать в нужные структуры
Александр
в смысле много аргументов? просто числа?
Я так понял тз: есть функция, принимающая Args... - определенного типа. И этот тип создаётся из пар. Тогда можно создать два массива, а затем из них сделать вариадик пар
Александр
А если писать явно тип?
Александр
T(1,2), T(3,4)...
Evgenii
T(1,2), T(3,4)...
в том то и дело, что чужой тип наружу не хочется вытаскивать
Evgenii
думаю адаптер написать
Александр
Ага, понял.
Александр
У того типа какие конструкторы есть?
Александр
template <class... Args> void adapter(Args... args) { realfunc(Type(args[0], args[1])...); }
Александр
И передаешь пак листов
Александр
Да пак вообще любых контейнеров с []
Александр
И двумя элементами минимум
Evgenii
И двумя элементами минимум
но init list не покатит, правильно?
Evgenii
или покатит? 🤔
Александр
Покатит, у него вроде есть []
Александр
Если нет, замени [i] на *(a.begin()+i)
Evgenii
Если нет, замени [i] на *(a.begin()+i)
note: candidate expects 0 arguments, 2 provided
Evgenii
candidate: subView(Ranges ...) [with Ranges = {}; U = float; ...]
Александр
Покажи, как функцию можно вызывать
Александр
Вызов с вариадик паком внутренних типов
Evgenii
Покажи, как функцию можно вызывать
template <class E, class... S> inline auto view(E&& e, S&&... slices)
Evgenii
лол
Александр
Не, конкретно рабочую строку кода
Александр
Которая сейчас некрасивая
Evgenii
Не, конкретно рабочую строку кода
xt::view(a, xt::range(1, 3), xt::all(), xt::range(1, 3));
Evgenii
return xt::view(storage_, from_data(ranges[0], ranges[1])...);
Evgenii
Я пытаюсь сделать так, from_data перегоняет в xt::view
Александр
template <class A, class... Args> auto adapter(A a, Args... args) { return xt::view(a, xt::range(*(args.begin()), *(args.begin()+1))...); }
Александр
adapter(a, {1,2},{3,4});
Александр
Я тут задумался, что хз, как себя ведёт {} при передаче в шаблон - какой тип выводится
Evgenii
<brace-enclosed initializer list>
Александр
Интересно
Evgenii
Интересно
ну такое
Александр
А xt::view(a, xt::range(1,2)) - валидный код?
Burado
Это вы что сейчас обсуждаете?
Evgenii
А xt::view(a, xt::range(1,2)) - валидный код?
ну он там проверяет внутри количество измерений, вестимо
Burado
Понятно)
Evgenii
хотя не должно быть
Evgenii
как это вообще дебажить, блеать
MrSmith
Гайз а кто юзает вообще noreturn?
absolute magic
Рррееебят, кто какие маршрутизаторы дома юзает?
absolute magic
Оп, не в тот чат
Sergey️
D-LINK DIR-300
MrSmith
Рррееебят, кто какие маршрутизаторы дома юзает?
tp-link (китаец, на пару через UART atmega32), еще d-link 620, и малина 2
MrSmith
ну я
Собственно если в краце зачем если есть void
Berkus
так это разные вещи
Berkus
noreturn говорит что функция никогда не вернется
Berkus
а void - что она вернет ничего
Berkus
функция которая никогда не возвращается туда откуда ее вызвали
Berkus
например exit()
Berkus
или abort()
Fo
Или system("reboot")
Bohdan
или system("rm -rf /")
MrSmith
При фразе функция никогда не вернется я представляю сцену в фильме, где девушка с надписью функция над головой уходит а мужик в ногах такой нет, вернись!
RattenKong 🦧🐀🦍️
или system("rm -rf /")
разве можно передавать такие вещи?
Bohdan
а почему нет?
Bohdan
можно)
Bohdan
но нужно ли)
MrSmith
А если я просто не напишу return то что тогда возвращает функция
Bohdan
0
Fo
И как плюсы понимают noreturn? Закрывают область видимости в точке вызова? { а(); // noreturn // здесь уже код писать нельзя }
RattenKong 🦧🐀🦍️
даже войд?