1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // UNSUPPORTED: c++98, c++03, c++11, c++14
13 // XFAIL: availability=macosx10.13
14 // XFAIL: availability=macosx10.12
15 // XFAIL: availability=macosx10.11
16 // XFAIL: availability=macosx10.10
17 // XFAIL: availability=macosx10.9
18 // XFAIL: availability=macosx10.8
19 // XFAIL: availability=macosx10.7
22 // constexpr optional<decay_t<T>> make_optional(T&& v);
29 #include "test_macros.h"
34 using std::make_optional;
36 int arr[10]; ((void)arr);
37 ASSERT_SAME_TYPE(decltype(make_optional(arr)), optional<int*>);
40 constexpr auto opt = make_optional(2);
41 ASSERT_SAME_TYPE(decltype(opt), const optional<int>);
42 static_assert(opt.value() == 2);
45 optional<int> opt = make_optional(2);
50 optional<std::string> opt = make_optional(s);
54 std::unique_ptr<int> s(new int(3));
55 optional<std::unique_ptr<int>> opt = make_optional(std::move(s));