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 Dionneconstexpr 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 Dionneconstexpr 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 Bellastatic_assert(!check_subsumption([] {})); __anon1663e0ad0202null3096dbdd75SChristopher Di Bellastatic_assert(check_subsumption([] { return true; })); 31