2010-07-27

やはりクラスのattribute-specifierは最初の理解で正しかった

当初、私はクラスの宣言は、先頭にattribute-specifierを書けないものと考えていた。しかし、その後思い直して、以下のふたつのattribute-specifierは、クラスに属する(appertain)と考えていた。

class [[]] C {} ; // #1
[[]] class C {} ; // #2

しかし、これは違うのだ。#1はCに属するが、#2は違う。では何に属するか。

[[]] class C {} c ;

このattribute-specifierは、Cではなく、cに属する。クラスの定義というのは、結局、specifierに過ぎぬのだということを、すっかり忘れていた。危ないところだった。危うく参考書に嘘を書くところだった。ともかく、これでattribute-specifierは、ほぼ理解したはずだ。parametorへも指定できるか、これは普通のはずだ。

David Vandevoordeには、感謝している。

ちなみに、この変更についての理由は、Core issue 962に書いてある。

2 comments:

Anonymous said...

> [] class C {} c ;
こんなの書けるわけないよ。[[ ]]の間違いでしょ?
規格の構文規則を見ていてこの種の間違いをするのは恥ずい…

> David Vandevoordeには、感謝している。
ダビードも所詮この程度なのか…

江添亮 said...

おっと、また間違えた。