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-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// UNSUPPORTED: no-threads
10
11// <future>
12
13// const error_category& future_category();
14
15#include <future>
16#include <cstring>
17#include <cassert>
18
19#include "test_macros.h"
20
21// See https://llvm.org/D65667
22struct StaticInit {
23 const std::error_category* ec;
24 ~StaticInit() {
25 assert(std::strcmp(ec->name(), "future") == 0);
26 }
27};
28static StaticInit foo;
29
30int main(int, char**)
31{
32 {
33 const std::error_category& ec = std::future_category();
34 assert(std::strcmp(ec.name(), "future") == 0);
35 }
36
37 {
38 foo.ec = &std::future_category();
39 assert(std::strcmp(foo.ec->name(), "future") == 0);
40 }
41
42 return 0;
43}
44

source code of libcxx/test/std/thread/futures/futures.errors/future_category.pass.cpp