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()18int main() 19 { 20 int i = declval<A>(); 21 i = arg<A>(1); 22 } 23