brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · f120fa0 Raw
73 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// UNSUPPORTED: no-threads10// UNSUPPORTED: c++0311 12// <future>13 14// class shared_future<R>15 16// shared_future(future<R>&& rhs);17 18#include <future>19#include <cassert>20 21#include "test_macros.h"22 23int main(int, char**)24{25    {26        typedef int T;27        std::promise<T> p;28        std::future<T> f0 = p.get_future();29        std::shared_future<T> f = std::move(f0);30        assert(!f0.valid());31        assert(f.valid());32    }33    {34        typedef int T;35        std::future<T> f0;36        std::shared_future<T> f = std::move(f0);37        assert(!f0.valid());38        assert(!f.valid());39    }40    {41        typedef int& T;42        std::promise<T> p;43        std::future<T> f0 = p.get_future();44        std::shared_future<T> f = std::move(f0);45        assert(!f0.valid());46        assert(f.valid());47    }48    {49        typedef int& T;50        std::future<T> f0;51        std::shared_future<T> f = std::move(f0);52        assert(!f0.valid());53        assert(!f.valid());54    }55    {56        typedef void T;57        std::promise<T> p;58        std::future<T> f0 = p.get_future();59        std::shared_future<T> f = std::move(f0);60        assert(!f0.valid());61        assert(f.valid());62    }63    {64        typedef void T;65        std::future<T> f0;66        std::shared_future<T> f = std::move(f0);67        assert(!f0.valid());68        assert(!f.valid());69    }70 71  return 0;72}73