Описание тега stdapply
Функция std::apply() C++ 17 принимает функцию и кортеж и вызывает функцию с содержимым кортежа в качестве аргументов.
2
ответа
Как std:: применять параметры forward без явного std::forward?
Рассмотреть возможность реализации std::apply: namespace detail { template <class F, class Tuple, std::size_t... I> constexpr decltype(auto) apply_impl(F &&f, Tuple &&t, std::index_sequence<I...>) { return std::invoke(std…
21 дек '16 в 10:34
3
ответа
std::apply и константное выражение?
Я попробовал код ниже в Wandbox: #include <array> #include <iostream> #include <tuple> #include <typeinfo> #include <functional> #include <utility> int main() { constexpr std::array<const char, 10> str{"1234…
12 ноя '16 в 04:55
1
ответ
Перенаправить скопированный std::tuple
Мне нужна помощь. Мне нужно совершенным образом переслать кортеж определенным образом. Представь себе это template <typename F, typename... Args> auto package_task(F&& func, Args&&... args) -> std::function<void()> { /…
25 сен '18 в 18:53
2
ответа
Использование std::apply с различными пакетами
Я пытаюсь создать универсальный класс, который принимает пакет типов, сохраняет их в кортеже и может применять к ним функцию. То, что я пробовал до сих пор, это следующее: #include <tuple> struct Base{ virtual void base_function() = 0; }; temp…
11 фев '19 в 13:21
1
ответ
Применение переменной функции с помощью std::apply
Можно ли применить переменную функцию к кортежу с помощью std::apply? Например, следующий код прекрасно работает с GCC 6.2.1: void print_t(std::string i, std::string j) { std::cout << i << " " << j << std::endl; } int main() …
10 ноя '16 в 08:48
1
ответ
std::get не пересылает ссылку на rvalue для std::apply
Мне интересно почему std::apply не пересылает rvalue-referenceпри работе со ссылочными типами в кортежах (см. Live): #include <type_traits> #include <tuple> template<typename T> void assertRvalueReference(T&& t) { static_as…
03 янв '20 в 16:04
0
ответов
Использование std::apply для кортежа в шаблонной функции
Я пытаюсь запрограммировать класс контейнера данных, который содержит данные в нескольких векторах. По задумке, у него есть только один вектор каждого типа, один для целых чисел, один для чисел типа double и так далее. Я хотел бы "загрузить" данные …
03 сен '20 в 20:01
2
ответа
std::visit std::variant с перегруженной свободной функцией вместо объекта-функции
В C++17 есть простой способ std::visit варианта с перегруженной бесплатной функцией или я должен использовать объект с перегруженным оператором вызова? Другими словами, можно ли добавить что-нибудь простое, чтобы сделать следующее //ERROR! line, что…
10 мар '20 в 20:13
1
ответ
Как у вас может быть несколько строк или операторов внутри расширения пакета C++?
Предположим, у меня есть простой код, подобный приведенному ниже, который просто печатает все значения в кортеже и отслеживает текущую итерацию. #include <iostream> #include <tuple> #include <utility> using std::cout; int main() { …
02 окт '20 в 00:44
1
ответ
C++: использование std::apply для перебора кортежа в двух частях: до индекса, применяющего лямбда, и затем после индекса, применяющего другую лямбда
Если я хочу перебрать кортеж, используя std::apply но не применять одну функцию ко всему, как я могу разделить кортеж, т.е. применить одну функцию к первой n значения и другой для всех значений после него? some_values будет кортеж, который может име…
25 сен '20 в 01:25
0
ответов
Как реализовать что-то вроде std :: apply в C ++ 11?
Есть ли способ реализовать std::apply в c ++11? у меня есть std::tuple<Args...> myTuple и std::function<void(const Args&...)> myFunction Как я могу вызвать myFunction и передать ему содержимое myTuple в качестве аргументов в C++11?
19 май '21 в 23:52
1
ответ
Должен ли std:: apply применяться только к std:: tuple?
Сигнатура функции не ограничивает параметр шаблона Tupleбыть специализацией, поэтому он все еще может принимать объекты , подобные кортежу, которые определяют std::tuple_size_v(Godbolt ): #include <tuple> #include <utility> #include <…
11 сен '21 в 13:36
2
ответа
Невозможно использовать std::apply для пользовательских типов
При реализации compressed_tupleclass для какого-то проекта, над которым я работаю, я столкнулся со следующей проблемой: я не могу передать экземпляры этого типа в std ::apply, хотя это должно быть возможно в соответствии с: https://en.cppreference.c…
17 сен '21 в 04:56
3
ответа
Использование std::apply в методе класса
Я пытаюсь скомпилировать следующее (g++-11.2, C++20), но получаю: error: no matching function for call to '__invoke(std::_Mem_fn<void (Foo::*)(int, double)>, std::__tuple_element_t<0, std::tuple<int, double> >, std::__tuple_element…
24 окт '21 в 07:29
3
ответа
Инициализация интеллектуальных указателей в кортеже без знания типа
У меня есть кортеж интеллектуальных указателей (как член шаблона класса), который мне нужно инициализировать. Я использую std::apply для перебора кортежей в другом месте, но как мне инициализировать их новыми объектами, не зная их типа? Выполнение п…
15 сен '21 в 17:06
1
ответ
std::function vs вызываемый как параметр шаблона
Почему в приведенном ниже примере строка 20 вызывает ошибку, описанную в строках с 27 по 30? Вызов exec1в строке 33 работает нормально. #include <cstdint> #include <functional> #include <iostream> #include <tuple> #include &l…
30 май '22 в 18:49
2
ответа
Как я могу поэлементно назначить кортеж, используя выражения сгиба?
У меня есть тип, эффективно обертывающий вариативныйstd::tupleтак: #include <iostream> #include <tuple> template <typename ...Args> struct Foo { std::tuple<Args...> t; Foo(Args&&... a) : t{ std::forward<Args>(a)…
08 июн '22 в 15:54
0
ответов
std::apply-ing sscanf в кортеж, кортеж не обновляется полностью
У меня есть структурированная строка данных, и я хочу разобрать ее в кортеж. Для каждого типа входной строки типы и расположение данных могут быть разными, поэтому я хочу использовать шаблоны и форматы scanf, чтобы избежать необходимости управлять в…
23 фев '23 в 19:24
1
ответ
необъяснимое предупреждение при использовании std::apply для пустого кортежа с msvc
У меня есть предупреждение о переменной, на которую нет ссылки, при использовании std::apply для пустого кортежа. Этот фрагмент, вдохновленный std::apply cppreference, показывает проблему: #include <iostream> #include <tuple> #include &l…
19 июн '23 в 12:33
1
ответ
установите значение в std::tuple, используя функцию, которая принимает индекс std::get
Если вы хотите прочитать данные из вектора std::tuple, вы можете использовать: #include <algorithm> #include <iostream> #include <sstream> #include <tuple> #include <variant> #include <vector> using example = std:…
22 авг '23 в 20:53