196dbdd75SChristopher Di Bella //===----------------------------------------------------------------------===//
296dbdd75SChristopher Di Bella //
396dbdd75SChristopher Di Bella // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
496dbdd75SChristopher Di Bella // See https://llvm.org/LICENSE.txt for license information.
596dbdd75SChristopher Di Bella // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
696dbdd75SChristopher Di Bella //
796dbdd75SChristopher Di Bella //===----------------------------------------------------------------------===//
896dbdd75SChristopher Di Bella 
996dbdd75SChristopher Di Bella // UNSUPPORTED: c++03, c++11, c++14, c++17
1096dbdd75SChristopher Di Bella 
1196dbdd75SChristopher Di Bella // template<class F, class... Args>
1296dbdd75SChristopher Di Bella // concept predicate;
1396dbdd75SChristopher Di Bella 
1496dbdd75SChristopher Di Bella #include <concepts>
1596dbdd75SChristopher Di Bella 
check_subsumption(std::regular_invocable auto)16*88b73a98SLouis Dionne constexpr bool check_subsumption(std::regular_invocable auto) {
1796dbdd75SChristopher Di Bella   return false;
1896dbdd75SChristopher Di Bella }
1996dbdd75SChristopher Di Bella 
2096dbdd75SChristopher Di Bella // clang-format off
2196dbdd75SChristopher Di Bella template<class F>
2296dbdd75SChristopher Di Bella requires std::predicate<F> && true
check_subsumption(F)23*88b73a98SLouis Dionne constexpr bool check_subsumption(F)
2496dbdd75SChristopher Di Bella {
2596dbdd75SChristopher Di Bella   return true;
2696dbdd75SChristopher Di Bella }
2796dbdd75SChristopher Di Bella // clang-format on
2896dbdd75SChristopher Di Bella 
__anon1663e0ad0102null2996dbdd75SChristopher Di Bella static_assert(!check_subsumption([] {}));
__anon1663e0ad0202null3096dbdd75SChristopher Di Bella static_assert(check_subsumption([] { return true; }));
31