//===----------------------------------------------------------------------===// // // 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 // SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. // //===----------------------------------------------------------------------===// // template // concept relation; #include using cuda::std::relation; static_assert(relation, ""); static_assert(relation, ""); static_assert(relation, ""); static_assert(!relation, ""); static_assert(!relation, ""); static_assert(!relation, ""); static_assert(!relation, ""); static_assert(!relation, ""); struct S1 {}; static_assert(relation, ""); static_assert(relation, ""); struct S2 {}; struct P1 { __host__ __device__ bool operator()(S1, S1) const; }; static_assert(relation, ""); struct P2 { __host__ __device__ bool operator()(S1, S1) const; __host__ __device__ bool operator()(S1, S2) const; }; static_assert(!relation, ""); struct P3 { __host__ __device__ bool operator()(S1, S1) const; __host__ __device__ bool operator()(S1, S2) const; __host__ __device__ bool operator()(S2, S1) const; }; static_assert(!relation, ""); struct P4 { __host__ __device__ bool operator()(S1, S1) const; __host__ __device__ bool operator()(S1, S2) const; __host__ __device__ bool operator()(S2, S1) const; __host__ __device__ bool operator()(S2, S2) const; }; static_assert(relation, ""); int main(int, char**) { return 0; }