//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
// UNSUPPORTED: libcpp-no-concepts

// template<class T>
// concept move_constructible;

#include <concepts>
#include <type_traits>

#include "moveconstructible.h"

static_assert(std::move_constructible<int>);
static_assert(std::move_constructible<int*>);
static_assert(std::move_constructible<int&>);
static_assert(std::move_constructible<int&&>);
static_assert(std::move_constructible<const int>);
static_assert(std::move_constructible<const int&>);
static_assert(std::move_constructible<const int&&>);
static_assert(std::move_constructible<volatile int>);
static_assert(std::move_constructible<volatile int&>);
static_assert(std::move_constructible<volatile int&&>);
static_assert(std::move_constructible<int (*)()>);
static_assert(std::move_constructible<int (&)()>);
static_assert(std::move_constructible<HasDefaultOps>);
static_assert(std::move_constructible<CustomMoveCtor>);
static_assert(std::move_constructible<MoveOnly>);
static_assert(std::move_constructible<const CustomMoveCtor&>);
static_assert(std::move_constructible<volatile CustomMoveCtor&>);
static_assert(std::move_constructible<const CustomMoveCtor&&>);
static_assert(std::move_constructible<volatile CustomMoveCtor&&>);
static_assert(std::move_constructible<CustomMoveAssign>);
static_assert(std::move_constructible<const CustomMoveAssign&>);
static_assert(std::move_constructible<volatile CustomMoveAssign&>);
static_assert(std::move_constructible<const CustomMoveAssign&&>);
static_assert(std::move_constructible<volatile CustomMoveAssign&&>);
static_assert(std::move_constructible<int HasDefaultOps::*>);
static_assert(std::move_constructible<void (HasDefaultOps::*)(int)>);
static_assert(std::move_constructible<MemberLvalueReference>);
static_assert(std::move_constructible<MemberRvalueReference>);

static_assert(!std::move_constructible<void>);
static_assert(!std::move_constructible<const CustomMoveCtor>);
static_assert(!std::move_constructible<volatile CustomMoveCtor>);
static_assert(!std::move_constructible<const CustomMoveAssign>);
static_assert(!std::move_constructible<volatile CustomMoveAssign>);
static_assert(!std::move_constructible<int[10]>);
static_assert(!std::move_constructible<DeletedMoveCtor>);
static_assert(!std::move_constructible<ImplicitlyDeletedMoveCtor>);
static_assert(!std::move_constructible<DeletedMoveAssign>);
static_assert(!std::move_constructible<ImplicitlyDeletedMoveAssign>);

static_assert(std::move_constructible<DeletedMoveCtor&>);
static_assert(std::move_constructible<DeletedMoveCtor&&>);
static_assert(std::move_constructible<const DeletedMoveCtor&>);
static_assert(std::move_constructible<const DeletedMoveCtor&&>);
static_assert(std::move_constructible<ImplicitlyDeletedMoveCtor&>);
static_assert(std::move_constructible<ImplicitlyDeletedMoveCtor&&>);
static_assert(std::move_constructible<const ImplicitlyDeletedMoveCtor&>);
static_assert(std::move_constructible<const ImplicitlyDeletedMoveCtor&&>);
static_assert(std::move_constructible<DeletedMoveAssign&>);
static_assert(std::move_constructible<DeletedMoveAssign&&>);
static_assert(std::move_constructible<const DeletedMoveAssign&>);
static_assert(std::move_constructible<const DeletedMoveAssign&&>);
static_assert(std::move_constructible<ImplicitlyDeletedMoveAssign&>);
static_assert(std::move_constructible<ImplicitlyDeletedMoveAssign&&>);
static_assert(std::move_constructible<const ImplicitlyDeletedMoveAssign&>);
static_assert(std::move_constructible<const ImplicitlyDeletedMoveAssign&&>);

int main(int, char**) { return 0; }
