読者です 読者をやめる 読者になる 読者になる

とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

配列型とcv修飾

配列型をcv修飾した場合、その要素型がcv修飾される。

また、要素がcv修飾されている配列型はcv修飾型になる。

この挙動は他の複合型(ポインタ型や参照型など)とは異なるので注意。

コード例

typedef int A[1];
const A a;

要素がcv修飾され、aはconst int [1]型になる。

const int b[1];

b自体は直接cv修飾されていないが、cv修飾型である。(もちろん要素の型もcv修飾型const intである。)

規格

N3337(PDF) 3.9.3/2に配列型をcv修飾した場合、その要素型がcv修飾されることが書かれている。

Any cv-qualifiers applied to an array type affect the array element type, not the array type (8.3.4).

8.3.4/1のノートに要素がcv修飾されている配列型はcv修飾型になることが書かれている。

[ Note: An “array of N cv-qualifier-seq T” has cv-qualified type; see 3.9.3. —end note ]