【发布时间】:2017-05-25 19:52:21
【问题描述】:
我问这个的原因是,尽管Table 11 的标题是simple-type-specifiers 和它们指定的类型,但语法产生式simple-type-specifier 没有' t 提及这种类型的组合,作为 simple-type-specifier。那么unsigned int 是简单类型说明符吗?
编辑:我认为aforementioned question 的答案不正确。如果这是真的,那么就不能说声明。 void* operator new(std::size_t); 是[dcl.dcl]/1 中定义的声明,因为size_t 是typedef 定义(在我的系统中)为unsigned int。为了证明这个断言,即void* operator new(std::size_t); 是一个声明,我几乎可以肯定我们需要unsigned int 是一个简单类型的事实-说明符.我错了。如果我们使用[dcl.type.simple]/1 中给出的type-name 的定义,那么说void* operator new(std::size_t); 是一个声明 是没有问题的。我认为我第一次是对的,除了错误的例子。也就是说,我认为unsigned int 必须是 simple-type-specifier,否则不能说void f(unsigned int); 是declaration。
。
【问题讨论】:
-
typedef是一个不同的问题,因为it creates a new name for the type 并不是一个简单的文本替换。typedef unsigned int size_t;与#define size_t unsigned int完全不同。
标签: c++ types language-lawyer