| // PR c++/92193 | |
| // { dg-do compile { target c++11 } } | |
| template<typename T> | |
| struct has_foo | |
| { static constexpr bool value = false; }; | |
| template<typename T> | |
| #ifndef NO_CONSTEXPR | |
| constexpr | |
| #endif | |
| bool | |
| foo(T t) noexcept(noexcept(t.foo())) | |
| { return t.foo(); } | |
| template<typename T> | |
| void | |
| maybe_foo(T t) | |
| { | |
| static_assert( has_foo<T>::value, "has foo" ); // { dg-error "has foo" } | |
| foo(t); | |
| } | |
| struct X { }; | |
| int main() | |
| { | |
| X x; | |
| maybe_foo(x); | |
| } |