//===----------------------------------------------------------------------===//
//
//                     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>
#include <type_traits>
#include <cassert>

#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 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
}
