1 //===----------------------------------------------------------------------===//
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
7 //===----------------------------------------------------------------------===//
9 // UNSUPPORTED: c++03, c++11, c++14
12 // template <class T> constexpr bool operator<(const optional<T>& x, nullopt_t) noexcept;
13 // template <class T> constexpr bool operator<(nullopt_t, const optional<T>& x) noexcept;
17 #include "test_macros.h"
27 typedef optional
<T
> O
;
29 constexpr O o1
; // disengaged
30 constexpr O o2
{1}; // engaged
32 static_assert ( !(nullopt
< o1
), "" );
33 static_assert ( (nullopt
< o2
), "" );
34 static_assert ( !(o1
< nullopt
), "" );
35 static_assert ( !(o2
< nullopt
), "" );
37 static_assert (noexcept(nullopt
< o1
), "");
38 static_assert (noexcept(o1
< nullopt
), "");