blob: 833049c6de3c00cb5ce9f3a8d6ff6f1db9180352 [file] [log] [blame]
// PR c++/85866
// { dg-do compile { target c++11 } }
template<typename _Tp, typename _Up = _Tp&&>
_Up
__declval(int);
template<typename _Tp>
_Tp
__declval(long);
template<typename _Tp>
auto declval() noexcept -> decltype(__declval<_Tp>(0));
template<typename...>
using void_t = void;
template<typename U, typename V,
void_t<decltype ( (declval<U>().*declval<V>()) () )
>* = nullptr>
void boom(){}
struct Foo {
void bar(){}
};
int main() {
boom<Foo, decltype(&Foo::bar)>();
}