Implement LWG2556: Wide contract for future::share()

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@292992 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Marshall Clow
2017-01-24 23:28:25 +00:00
parent 4e42dc97f3
commit 9bb0cca646
3 changed files with 16 additions and 10 deletions

View File

@@ -25,6 +25,7 @@ int main()
typedef int T;
std::promise<T> p;
std::future<T> f0 = p.get_future();
static_assert( noexcept(f0.share()), "");
std::shared_future<T> f = std::move(f0.share());
assert(!f0.valid());
assert(f.valid());
@@ -32,6 +33,7 @@ int main()
{
typedef int T;
std::future<T> f0;
static_assert( noexcept(f0.share()), "");
std::shared_future<T> f = std::move(f0.share());
assert(!f0.valid());
assert(!f.valid());
@@ -40,6 +42,7 @@ int main()
typedef int& T;
std::promise<T> p;
std::future<T> f0 = p.get_future();
static_assert( noexcept(f0.share()), "");
std::shared_future<T> f = std::move(f0.share());
assert(!f0.valid());
assert(f.valid());
@@ -47,6 +50,7 @@ int main()
{
typedef int& T;
std::future<T> f0;
static_assert( noexcept(f0.share()), "");
std::shared_future<T> f = std::move(f0.share());
assert(!f0.valid());
assert(!f.valid());
@@ -55,6 +59,7 @@ int main()
typedef void T;
std::promise<T> p;
std::future<T> f0 = p.get_future();
static_assert( noexcept(f0.share()), "");
std::shared_future<T> f = std::move(f0.share());
assert(!f0.valid());
assert(f.valid());
@@ -62,6 +67,7 @@ int main()
{
typedef void T;
std::future<T> f0;
static_assert( noexcept(f0.share()), "");
std::shared_future<T> f = std::move(f0.share());
assert(!f0.valid());
assert(!f.valid());