1f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant//===----------------------------------------------------------------------===// 2f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant// 3f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant// The LLVM Compiler Infrastructure 4f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward 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. 7f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant// 8f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant//===----------------------------------------------------------------------===// 97112dae6acac544a0271a85d95342c583441e2d1Dan Albert// 107112dae6acac544a0271a85d95342c583441e2d1Dan Albert// UNSUPPORTED: libcpp-has-no-threads 11f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant 12f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant// <future> 13f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant 14f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant// class promise<R> 15f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant 16f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant// promise(); 17f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant 18f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant#include <future> 19f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant#include <cassert> 20f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant 21f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnantint main() 22f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant{ 23f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant { 24f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant std::promise<int> p; 25f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant std::future<int> f = p.get_future(); 26f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant assert(f.valid()); 27f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant } 28f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant { 29f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant std::promise<int&> p; 30f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant std::future<int&> f = p.get_future(); 31f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant assert(f.valid()); 32f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant } 33f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant { 34f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant std::promise<void> p; 35f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant std::future<void> f = p.get_future(); 36f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant assert(f.valid()); 37f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant } 38f39daa8e5a5f7d7eb19f391497a29b4fa0eec28dHoward Hinnant} 39