3}
должно вывести:
(типа std::tuple) foo, 2
есть идеи?
P.S. тюплы не лупятся....😢
P.S. 2. Использовать сет не выйдет
ну это разные типы. У тебя есть структура1, структура2, структура3. Как ты найдёшь в них дублирующиеся поля
Типы в туплах известны? Почему использовать сет не выйдет?
А питон тут справляется одним простым циклом)
да, потом у получается число "hello world"
нет, я параметр паком задаю
отдельный параметр пак для каждого тапла?
один тюпл. Допустим я перегружаю оператор плюсика template <typename... U> TEST<T..., U...> operator+(const TEST<U...>& other) const { std::tuple<T..., U...> combined_data = std::tuple_cat(data, other.tuple()); return TEST<T..., U...>(combined_data); }
через два std::apply
А что-то такое: https://stackoverflow.com/questions/55941964/how-to-filter-duplicate-types-from-tuple-c ?
всмысле? можешь привести пример?
там по типу, тоесть <int,int,double> => <int,double>
std::apply([&](auto&&... x_elems){ return (std::apply([&](auto&&... y_elems){ return ([&]{ if constexpr(requires{x_elems == y_elems;}) if(x_elems == y_elems) std::cout << x_elems; }, ...); }, y), ...); }, x);
намудрил хорошо, да вот ты по запаковал параметры и их всех сравниваешь, а не каждый по отдельности, тоесть (1,2) = (1,2,3) false может я ошибся, не люблю std::apply, хотя без него запринтить тот же тюпл никак
апплай как раз распаковывает параметры, там по факту обходятся все пары элементов, и выводятся только равные
Обсуждают сегодня