1 // DR 657
2 // Test that a return or parameter type with abstract class type causes a
3 // deduction failure.
4 
5 struct A
6 {
7   A();
8   A(int);
9   virtual void f() = 0;
10 };
11 
12 template<class T> T declval();
13 template<class T> int declval(...);
14 
15 template<class T> void arg(T);
16 template<class T> int arg(...);
17 
main()18 int main()
19 {
20   int i = declval<A>();
21   i = arg<A>(1);
22 }
23