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:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user