回答
你想要一個type-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
你總是可以唯一地確定該標識會去創建一個聲明。從8.1.1標準:
,能夠在[式-ID]唯一地識別該位置其中標識符似乎 如果施工是一個[宣言]。指定的類型與 假設標識符的類型相同。
爲了清楚起見,該語法如何?(注雙括號)
void func();
using FunctionPtr = decltype((func));
這個雙括號在這個意義上是什麼意思背景? *參考*到函數指針? – 0x499602D2 2013-05-16 20:07:45
你的'FunctionPtr'不是函數指針,但'decltype(&f)'是,請參見[這裏](http://coliru.stacked-crooked.com/view?id=77def487d5ed99885c0523d48c2ae7a1-50d9cfc8a1d350e7409e81e87c2653ba)。 – rubenvb 2013-05-17 07:08:12
@ 1234597890 FunctionPtr是類型'void()'的非常量左值引用 – 2013-06-13 18:04:52
的 「醜」,如果你避開的typedef-ING的指針也可以帶走:
void f() {}
using Function_t = void();
Function_t* ptr = f;
ptr();
- 1. 如何用C++ 11使用語法typedef方法指針?
- 2. C函數指針和typedef
- 3. typedef如何適用於函數指針
- 4. typedef函數指針
- 5. C++函數指針語法
- 6. C函數指針語法
- 7. C++函數指針語法
- 8. 從C++中的函數typedef中製作函數指針typedef?
- 9. C++ 11/lambda函數和函數指針
- 10. 如何爲函數指針創建typedef
- 11. 在C中使用函數指針的Typedef?
- 12. C函數指針與C++ 11 lambdas
- 13. 如何使用typedef函數指針來註冊回調
- 14. 如何用參數包參數typedef函數指針類型
- 15. typedef指針在C
- 16. 如何使用C++中的typedef函數指針必須返回類模板?
- 17. C++構造函數指針的語法
- 18. C++中的函數指針語法
- 19. C++ 11 - 使用decltype函數指針有什麼問題?
- 20. 如何在C#中創建「typedef到函數指針」?
- 21. 函數指針語法
- 22. 使用它的函數指針調用成員函數的C++語法
- 23. 調用函數指針(語法)
- 24. 函數指針的typedef的循環引用C
- 25. C函數參數中的數組語法與指針語法
- 26. C++ 11:智能指針使用
- 27. C - 如何操作typedef結構指針?
- 28. C++ 11委託構造函數和typedef
- 29. 函數指針的前向聲明typedef
- 30. 如何使用dlsym獲取Objective-C方法的函數指針
非常conf'using'的確,特別是因爲函數指針標識符通常駐留在'typedef'語句的中間,並使用'using'移動到前端。至少這是我迷失的地方。 – starturtle 2016-06-16 21:01:57