【发布时间】:2012-06-22 23:34:03
【问题描述】:
第 7.3.3 段。的 C++2003 标准声明
使用类成员的声明应该是成员声明。
这意味着以下给出了语法错误:
struct S1
{
static int var1;
};
using S1::var1;
虽然以下编译正常:
namespace N2
{
int var2;
}
using N2::var2;
有人知道这背后的理由(如果有的话)吗?
更重要的是,该标准给出了结构的静态数据成员的明确示例,并告诉它应该导致语法错误。 MS C++ 给出了这个错误:
cpptest1.cxx(9) : error C2885: 'S1::var1': not a valid using-declaration at non-class scope
目前还不清楚为什么要禁止。
【问题讨论】:
-
除了结构没有命名空间?
-
语法错误的信息是什么?
-
然后呢?这与问题有什么关系?
-
@K-ballo 无论如何,结构是一个类(嗯,有点),一个类是类固醇上的命名空间(参见 Stroustrup 书中的逻辑)。
标签: c++