PR c++/85765 - SFINAE and non-type default template arg.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / fntmpdefarg9.C
blob833049c6de3c00cb5ce9f3a8d6ff6f1db9180352
1 // PR c++/85866
2 // { dg-do compile { target c++11 } }
4 template<typename _Tp, typename _Up = _Tp&&>
5 _Up
6 __declval(int);
8 template<typename _Tp>
9 _Tp
10 __declval(long);
12 template<typename _Tp>
13 auto declval() noexcept -> decltype(__declval<_Tp>(0));
15 template<typename...>
16 using void_t = void;
18 template<typename U, typename V,
19          void_t<decltype ( (declval<U>().*declval<V>()) () )
20                 >* = nullptr>
21 void boom(){}
23 struct Foo {
24   void bar(){}
27 int main() {
28   boom<Foo, decltype(&Foo::bar)>();