Let me summarize the takeaway points:
- The concurrency support library offers high-level components that enable the execution of several tasks concurrently
- Future objects let the caller thread retrieve the output of the asynchronous function
- The promise object is used by the asynchronous function to set the output or exception
- The type of FUTURE and PROMISE object must be the same as the type of the value set by the asynchronous function
- Concurrent components can be used in combination with the C++ thread support library seamlessly
- The lambda function and expression can be used with the concurrency support library