// { dg-do compile { target c++11 } }
template< typename Fn > struct function;
template< typename Result, typename ... ArgTypes >
struct function< auto (ArgTypes...)->Result > {
};
int main()
{
   function< auto(double)->int > y;
   return 0;
}
// { dg-do compile { target c++11 } }
template< typename Fn > struct function;
template< typename Result, typename ... ArgTypes >
struct function< auto (ArgTypes...)->Result > {
};
int main()
{
   function< auto(double)->int > y;
   return 0;
}