blob: 8dcd0eaca5177a25e811b7bb29bee5e100208fba (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// PR c++/100557
// { dg-do compile { target c++20 } }
template <typename _Tp> _Tp declval();
struct print_tag_;
bool tag_invoke(print_tag_, auto);
bool tag_invoke(print_tag_, auto obj) requires requires { *obj; };
template <typename CPO, typename... Args>
auto try_tag_invoke() noexcept(tag_invoke(declval<CPO>, declval<Args>()...)) // { dg-error "no matching function for call" }
-> decltype(tag_invoke(CPO(), declval<Args>()...));
struct print_tag_ {
void operator()(auto... args) noexcept(noexcept( try_tag_invoke<print_tag_, decltype(args)...>()));
} print;
void foo() {
print(0);
}
|