//===----------------------------------------------------------------------===//
//
//                     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 optional<T>& y);

#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 optional<X> O;
    
    constexpr O o1;     // disengaged
    constexpr O o2;     // disengaged
    constexpr O o3{1};  // engaged
    constexpr O o4{2};  // engaged
    constexpr O o5{1};  // engaged
    
    static_assert ( !(o1 > o1), "" );
    static_assert ( !(o1 > o2), "" );
    static_assert ( !(o1 > o3), "" );
    static_assert ( !(o1 > o4), "" );
    static_assert ( !(o1 > o5), "" );

    static_assert ( !(o2 > o1), "" );
    static_assert ( !(o2 > o2), "" );
    static_assert ( !(o2 > o3), "" );
    static_assert ( !(o2 > o4), "" );
    static_assert ( !(o2 > o5), "" );

    static_assert (  (o3 > o1), "" );
    static_assert (  (o3 > o2), "" );
    static_assert ( !(o3 > o3), "" );
    static_assert ( !(o3 > o4), "" );
    static_assert ( !(o3 > o5), "" );

    static_assert (  (o4 > o1), "" );
    static_assert (  (o4 > o2), "" );
    static_assert (  (o4 > o3), "" );
    static_assert ( !(o4 > o4), "" );
    static_assert (  (o4 > o5), "" );

    static_assert (  (o5 > o1), "" );
    static_assert (  (o5 > o2), "" );
    static_assert ( !(o5 > o3), "" );
    static_assert ( !(o5 > o4), "" );
    static_assert ( !(o5 > o5), "" );
    }
#endif
}
