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修飾子なし)。