C++ 相談室 part5
■ このスレッドは過去ログ倉庫に格納されています
0669デフォルトの名無しさん
NGNGvc6,g++(cygwin)でコンパイルも実行も出来たのですが。
namespace n {
struct s;
}
struct ::n::s {int x;};
int main() {
::n::s v;
v.x = 1;
return 0;
}
The C++ Programming Language(3rd)の巻末のgrammarのクラスの定義の部分は、
>class-head:
> class-key identifier(opt base-clause(opt
> class-key nested-name-specifier identifier base-clause(opt
> class-key nested-name-specifier(opt "template" template-id base-clause(opt
>
>class-key:
> "class"
> "struct"
> "union"
また、
>nested-name-specifier:
> class-or-namespace-name "::" nested-name-specifier(opt
> class-or-namespace-name "::" "template" nested-name-specifier
となっており、クラス名またはクラス名の前のネームスペース名には "::" を
付けられないというように読めるんです。
正誤表には載ってないので、コンパイラ独自拡張ですか?
http://www.research.att.com/~bs/3rd_errata.html
■ このスレッドは過去ログ倉庫に格納されています