Schedules a task to be run inline on the calling context with the assistance of the structured_task_group object for full cancellation support. If a task_handle object is passed as a parameter to run_and_wait, the caller is responsible for managing the lifetime of the task_handle object. The function then waits until all work on the structured_task_group object has either completed or been canceled.
template< class _Function > task_group_status run_and_wait( task_handle<_Function>& _Task_handle ); template< class _Function > task_group_status run_and_wait( const _Function& _Func );
An indication of whether the wait was satisfied or the task group was canceled, due to either an explicit cancel operation or an exception being thrown from one of its tasks. For more information, see task_group_status
Note that one or more of the tasks scheduled to this structured_task_group object may execute inline on the calling context.
If one or more of the tasks scheduled to this structured_task_group object throws an exception, the runtime will select one such exception of its choosing and propagate it out of the call to the run_and_wait method.
Once this function returns, the structured_task_group object is considered in a final state and should not be used. Note that utilization after the run_and_wait method returns will result in undefined behavior.
In the non-exceptional path of execution, you have a mandate to call either this method or the wait method before the destructor of the structured_task_group executes.