int add(int a, int b)
{
	std::cout << "add" << std::endl;
	return a + b;
}

int main()
{
	std::packaged_task<int(int, int)> task(add);
	
	std::future<int> ft = task.get_future();

	// Non threading.
	task(10, 20); // add(10, 20) (리턴값을 받으려면 future를 이용해야 한다.)

	// to other thread.
	std::thread t(std::move(task), 10, 20);
	std::cout << "continue main" << std::endl;

	int ret = ft.get();
	std::cout << ret << std::endl;
	t.join();
}