在§7/ 9,你会发现一个函数声明的定义:“函数声明”一词在§7/ 9(N4140)中定义,但没有定义为语法生成。为什么?
如果DECL说明符-SEQ不包含的typedef说明符,这个 声明被称为函数声明如果与名称关联的类型 是功能类型(8.3.5)和对象声明 否则。
在§7/ 1,你可以找到语法生产的定义声明,但没有在那里提名函数声明,因为这样定义的一部分。换句话说,如何在C++语法中对function declaration
进行分类?
在§7/ 9,你会发现一个函数声明的定义:“函数声明”一词在§7/ 9(N4140)中定义,但没有定义为语法生成。为什么?
如果DECL说明符-SEQ不包含的typedef说明符,这个 声明被称为函数声明如果与名称关联的类型 是功能类型(8.3.5)和对象声明 否则。
在§7/ 1,你可以找到语法生产的定义声明,但没有在那里提名函数声明,因为这样定义的一部分。换句话说,如何在C++语法中对function declaration
进行分类?
距今约初始化声明符这一段谈话,我把它应用到简单声明其中有一个初始化声明符列表。你可以看到这不完全正确
// clearly, this is not the declaration of an object, so it should
// not be called an "object declaration", but 7p9 does say so
int &a = x;
struct A {
// AFAICS 7p9 should also apply here, but there is no init-declarator
// here, but a member-declarator. 9.2 also doesn't delegate to 7p9.
typedef int a;
};
结果是,下面还包含一个函数声明,但该声明不声明函数。
template<typename T> void f();
总之,我认为在规范中对此文本有一些解释。
现在我可以清楚地知道'函数声明'是一个'简单声明'。谢谢。 – Leon 2016-05-02 20:26:02
我想说这是'声明'的子分类。它不是一个句法类别,因为短语“功能声明”一般不使用斜体字,与1.6p1相反,这表明定义需要用于说明目的,以便表达不能或不能方便表达的约束作为CFG的一部分。 – rici 2015-04-05 19:22:08
(大多数?)?编程语言的一个重要组成部分是语法不定义语言。与语法不匹配的东西不在语言中(通常可能有例外),但该标准对有效程序的限制超过了语法的限制,甚至可以定义没有显示为条款的术语语法。 – Yakk 2015-04-06 18:29:14