ANSI C 規格のセクション 6.3.2.2 の制約部分には、次のフレーズが含まれています。
各引数は、その値が対応するパラメータの型の修飾されていないバージョンを持つオブジェクトに割り当てられるような型を持つものとします。
では、「型の修飾されていないバージョン」という用語は何を意味するのでしょうか?
ANSI C 規格のセクション 6.3.2.2 の制約部分には、次のフレーズが含まれています。
各引数は、その値が対応するパラメータの型の修飾されていないバージョンを持つオブジェクトに割り当てられるような型を持つものとします。
では、「型の修飾されていないバージョン」という用語は何を意味するのでしょうか?
C99 ドラフトには、「修飾された」という言葉の使用について、次の文言が含まれています。
これまでに述べた型はすべて非修飾型です。
const
修飾されていない各型には、修飾子、修飾子、volatile
および修飾子の 1 つ、2 つ、または 3 つすべての組み合わせに対応する、その型の修飾されたバージョンがいくつかありrestrict
ます。型の修飾バージョンまたは非修飾バージョンは、同じ型カテゴリに属し、同じ表現およびアラインメント要件を持つ個別の型です。
したがって、あなたの引用は、 を持つ引数const int
は type の値と一致しなければならない、などと言っていますint
。
わざわざ仕様を確認せずに、egconst
やvolatile
キーワードに関係していると思い込んでしまいます。
たとえば、 type の引数がある場合、const int
それを type の変数に割り当てることができるはずですint
(const
修飾子なし)。