Метод перегрузки для приема кортежей и переменных значений, как const ref, так и moveC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Метод перегрузки для приема кортежей и переменных значений, как const ref, так и move

Сообщение Anonymous »

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

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

#include 
using std::cout;
using std::endl;

#include 
#include 
#include   // pair
#include 
#include 

template
class Executor
{
public:
using ArgTpl = std::tuple;

using Function = std::function;
typedef Ret(*FunctionPtr)(Args...);

private:
using Future = std::future;
using Promise = std::promise;

using Task = std::pair;

const Function callback;
std::queue task_queue;

public:
Executor(Function f) : callback(f) {}
Executor(FunctionPtr fp) : Executor(static_cast(fp)) {}

~Executor() {}

//

Future push(const Args&... args)// requires (sizeof...(args) != 0)
{
cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78312567/overloading-method-for-accepting-tuple-and-variadic-both-const-ref-and-move[/url]
Ответить

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

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

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

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

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