1a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant//===----------------------------------------------------------------------===// 2a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant// 3a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant// The LLVM Compiler Infrastructure 4a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant// 8a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant//===----------------------------------------------------------------------===// 9a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant 10a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant// <future> 11a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant 12a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant// class future_error 13a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant 14bfd5530c064923efa0d345dfce3548b873565dafHoward Hinnant// const char* what() const throw(); 15a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant 16a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant#include <future> 17a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant#include <cstring> 18a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant#include <cassert> 19a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant 20a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnantint main() 21a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant{ 22a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant { 23a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant std::future_error f(std::make_error_code(std::future_errc::broken_promise)); 24a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant assert(std::strcmp(f.what(), "The associated promise has been destructed prior " 25a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant "to the associated state becoming ready.") == 0); 26a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant } 27a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant { 28a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant std::future_error f(std::make_error_code(std::future_errc::future_already_retrieved)); 29a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant assert(std::strcmp(f.what(), "The future has already been retrieved from " 30a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant "the promise or packaged_task.") == 0); 31a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant } 32a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant { 33a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant std::future_error f(std::make_error_code(std::future_errc::promise_already_satisfied)); 34a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant assert(std::strcmp(f.what(), "The state of the promise has already been set.") == 0); 35a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant } 36a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant { 37a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant std::future_error f(std::make_error_code(std::future_errc::no_state)); 38a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant assert(std::strcmp(f.what(), "Operation not permitted on an object without " 39a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant "an associated state.") == 0); 40a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant } 41a652172d86b1063983c20bfc1c3f9d44d0e7c5bcHoward Hinnant} 42