私はC++でマルチスレッドプログラミングについてもっと試してみましたが、理解するのに苦労しstd::promise
ていたので、このWebサイトで答えを探し始めました。しかし、答えを読んでさらに混乱しました。これは、おそらく同様の実装である答えのコードですstd::packaged_task
template <typename> class my_task;
template <typename R, typename ...Args>
class my_task<R(Args...)>
{
std::function<R(Args...)> fn;
std::promise<R> pr; // the promise of the result
public:
template <typename ...Ts>
explicit my_task(Ts &&... ts) : fn(std::forward<Ts>(ts)...) { }
template <typename ...Ts>
void operator()(Ts &&... ts)
{
pr.set_value(fn(std::forward<Ts>(ts)...)); // fulfill the promise
}
std::future<R> get_future() { return pr.get_future(); }
// disable copy, default move
};
このコードでは、
1- この構文の意味template <typename R, typename ...Args> class my_task<R(Args...)>
、より具体的には、 の目的は<R(Args...)>
何ですか?
2-クラスの前方宣言があるのはなぜですか?
ありがとう