当初、私はクラスの宣言は、先頭に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に書いてある。
> [] class C {} c ;
ReplyDeleteこんなの書けるわけないよ。[[ ]]の間違いでしょ?
規格の構文規則を見ていてこの種の間違いをするのは恥ずい…
> David Vandevoordeには、感謝している。
ダビードも所詮この程度なのか…
おっと、また間違えた。
ReplyDelete