這個問題聽起來可能很愚蠢,但爲什麼我們不能這樣做呢?我的意思是,像下面這樣的聲明符:函數返回另一個函數
void (foo())();
我讀過當前的C++標準的第8.3.5節並沒有發現它有什麼說有多麼暗示。
這裏是什麼標準說有關:
在聲明TD,其中d的形式
D1 (parameter-declaration-clause) cv-qualifier-seqopt
ref-qualifieropt exception-specificationopt attribute-specifier-seqopt
和所包含的說明符的編號,在類型聲明T D1是 「derived-declarator-type-list T」,D 中的聲明符id的類型是「derived-declarator-type-list function of (參數聲明子句)cv-qualifierseqopt ref-qualifieropt 返回T「。
因此,從形式上來說,從這個定義中可以看出,我的declration是一個有效的函數declration。 T D1
,在我的情況下是void foo()
這是一個完全有效的declration。我錯過了什麼?
你實際上可以返回一個函數指針。這是函數標識符在從其他函數傳遞或返回時衰減的內容。 – StoryTeller
您可以返回'std :: function'對象,如下所示:http://ideone.com/Glc7xs – Chad