如何使用C ++ 11 using语法typedef函数指针?
我想写这个
typedef void (*FunctionPtr)();  使用using 。 我该怎么做? 
它有一个类似的语法,除了从指针中删除标识符:
 using FunctionPtr = void (*)(); 
这是一个例子
如果你想“拿走丑陋”,试试Xeobuild议的:
 #include <type_traits> using FunctionPtr = std::add_pointer<void()>::type; 
这是另一个演示 。
如果避免input指针,“丑”也可以被带走:
 void f() {} using Function_t = void(); Function_t* ptr = f; ptr(); 
 你需要一个type-id ,除了你删除了declarator-id之外,它基本上和声明一样。  declarator-id符declarator-id通常是一个标识符,以及您在平等声明中声明的名称。 
例如:
 int x 
  declarator-id是x所以只需将其删除: 
 int 
同样:
 int x[10] 
 删除x : 
 int[10] 
举个例子:
 void (*FunctionPtr)() 
 这里declarator-id是FunctionPtr 。 所以只要将其删除即可得到type-id : 
 void (*)() 
 这是有效的,因为给定一个type-id你总是可以唯一地确定标识符去创build一个声明的地方。 从8.1.1中的标准: 
如果构造是[声明],则可以唯一地标识[type-id]中标识符出现的位置。 指定的types与假设的标识符的types相同。
为了清晰起见,这个语法如何? (注意双括号)
 void func(); using FunctionPtr = decltype((func));