私はこのようなキューにそれらを結合することにより、スケジュール機能クラスに取り組んでいる:あなたは、私はそれが関数オブジェクトの任意の型を保持するためにqueue
void()
タイプを作ったが、今見たよう標準ライブラリでstd :: bindを使用して戻り値の型を保存する方法
std::queue <void()> q;
template<typename R,typename... ArgsT>
void
schedule(R& fn, ArgsT&... args)
{
q.push(std::bind(fn, std::forward<ArgsT>(args)...));
};
template<typename R,typename... ArgsT>
void
schedule(R&& fn, ArgsT&&... args)
{
q.push(std::bind(fn, std::forward<ArgsT>(args)...));
};
私はそれを実行するときに私はリターンを得ることができません。これを解決するにはどうすればよいですか?
注:私はboostのような外部ライブラリを使いたくないので、ユーザーがどのような機能を渡すか分かりません。
タイプがわからない場合は、何を返すかと思いますか? – Kevin
C++ 17や 'boost :: any'に' std :: any'があります。しかし、あなたはどちらかを使いたくないようです。 – Rakete1111
@Kevinこれはクラスのクラスの一部であり、キューの中の関数をスケジュールし、それらを同時に実行すると、ユーザーは関数の実行後に戻り値を得ることができるので、std :: futureで取得するためにいくつかの方法を保存したいユーザーに –