brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 37ad2ff Raw
49 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 11// <future>12 13// enum class launch14// {15//     async = 1,16//     deferred = 2,17//     any = async | deferred /* EXTENSION */18// };19 20#include <future>21#include <cassert>22 23#include "test_macros.h"24 25int main(int, char**)26{27#if TEST_STD_VER < 1128   LIBCPP_STATIC_ASSERT(static_cast<int>(std::launch::any) ==29                 (static_cast<int>(std::launch::async) | static_cast<int>(std::launch::deferred)), "");30#else31    LIBCPP_STATIC_ASSERT(std::launch::any == (std::launch::async | std::launch::deferred), "");32    static_assert(std::launch(0) == (std::launch::async & std::launch::deferred), "");33    LIBCPP_STATIC_ASSERT(std::launch::any == (std::launch::async ^ std::launch::deferred), "");34    LIBCPP_STATIC_ASSERT(std::launch::deferred == ~std::launch::async, "");35    std::launch x = std::launch::async;36    x &= std::launch::deferred;37    assert(x == std::launch(0));38    x = std::launch::async;39    x |= std::launch::deferred;40    LIBCPP_ASSERT(x == std::launch::any);41    x ^= std::launch::deferred;42    assert(x == std::launch::async);43#endif44    static_assert(static_cast<int>(std::launch::async) == 1, "");45    static_assert(static_cast<int>(std::launch::deferred) == 2, "");46 47  return 0;48}49