//===----------------------------------------------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

// <optional>

// template <class T> constexpr bool operator>(const optional<T>& x, const T& v);
// template <class T> constexpr bool operator>(const T& v, const optional<T>& x);

#include <experimental/optional>

#if _LIBCPP_STD_VER > 11

using std::experimental::optional;

struct X
{
    int i_;

    constexpr X(int i) : i_(i) {}
};

constexpr bool operator < ( const X &lhs, const X &rhs )
    { return lhs.i_ < rhs.i_ ; }
    
#endif

int main()
{
#if _LIBCPP_STD_VER > 11

    {
    typedef X T;
    typedef optional<T> O;

    constexpr T val(2);
    constexpr O o1;       // disengaged
    constexpr O o2{1};    // engaged
    constexpr O o3{val};  // engaged

    static_assert ( !(o1 > T(1)), "" );
    static_assert ( !(o2 > T(1)), "" );  // equal
    static_assert (  (o3 > T(1)), "" );
    static_assert ( !(o2 >  val), "" );
    static_assert ( !(o3 >  val), "" );  // equal
    static_assert ( !(o3 > T(3)), "" );

    static_assert (   (T(1) > o1), "" );
    static_assert (  !(T(1) > o2), "" ); // equal
    static_assert (  !(T(1) > o3), "" );
    static_assert (   (val  > o2), "" );
    static_assert (  !(val  > o3), "" ); // equal
    static_assert (   (T(3) > o3), "" );
    }
#endif
}
