JIS X 3014:2003 プログラム言語C++

JIS X 3014:2003 規格概要

この規格 X3014は、プログラム言語C++の処理系に対する要件を規定。処理系は,その第1要件として,C++を実装しなければならない。

JISX3014 規格全文情報

規格番号
JIS X3014 
規格名称
プログラム言語C++
規格名称英語訳
Information Technology -- Programming languages -- C++
制定年月日
2003年12月20日
最新改正日
2018年10月22日
JIS 閲覧
‐ 
対応国際規格

ISO

ISO/IEC 14882:2003(IDT)
国際規格分類

ICS

35.060
主務大臣
経済産業
JISハンドブック
‐ 
改訂:履歴
2003-12-20 制定日, 2008-10-01 確認日, 2013-10-21 確認日, 2018-10-22 確認
ページ
JIS X 3014:2003 PDF [286]
                                                                X 3014:2003 (ISO/IEC 14882:2003)

まえがき

  この規格は,工業標準化法第 12 条第 1 項の規定に基づき,社団法人情報処理学会(IPSJ)/財団法人日本
規格協会(JSA)から,工業標準原案を具して日本工業規格(日本産業規格)を制定すべきとの申出があり,日本工業標準調査
会の審議を経て,経済産業大臣が制定した日本工業規格(日本産業規格)である。
制定に当たっては,日本工業規格(日本産業規格)と国際規格との対比,国際規格に一致した日本工業規格(日本産業規格)の作成及び日
本工業規格を基礎にした国際規格原案の提案を容易にするために,ISO/IEC 14882:2003,Information
Technology―Programming languages―C++を基礎として用いた。

(pdf 一覧ページ番号 1)

――――― [JIS X 3014 pdf 1] ―――――

                                         日  本  工  業 規  格                           
プ ロ グ ラ ム 言 語
序文 この規格は, 年 月に発行された !
"## の第 版を翻訳し,技術的内容及び規格票の様式を変更することなく作成した日本工業規格(日本産業規格)である。
なお,下線を施してある箇所は,この規格で定義する用語である。側線を施してある参考は,原国際規格にはない
事項である。
総則
適用範囲 この規格は,プログラム言語"## の処理系に対する要件を規定する。処理系は,その第 要件と
して,"## を実装しなければならない。このため,この規格は,プログラム言語
"## の定義もあわせて規定する。
その他の要件 及び 第 要件に対する緩和条項は,この規格の中で順次規定する。
プログラム言語"## は,6 によるプログラム言語" に基づく。"## は," が提供する機能に
加えて,幾つかのデータ型,クラス,テンプレート,例外,名前空間,インライン関数,演算子の多重定義,関数名
の多重定義,参照,空き領域管理用の演算子,及び 幾つかのライブラリを提供する。
引用規格 この規格の規定の一部となる規定をもった規格の一覧を,次に示す。
― ( 規格群全体) $%
備考 情報処理用語の規格6 が,この引用規格群と一致している。
― 6 プログラム言語 "
備考 * ** ! " が,この引用規格と一致している。
― 6 &'()*'()+ プログラム言語 "( 追補 )
備考 * ** 3 ! ", &'()*'()+ " -
が,この引用規格と一致している。
― 6 ! 国際符号化文字集合( ."/ ) 第1部 体系及び基本多言語面
備考 ((! .0! ' 1-2 "33 "-
/ ."/ & 3 4! ' が,この引用規格と
一致している。
参考 関連規格を,次に示す。
― (##* 4 5-1 1!! !!!
備考 この規格の旧番号は, ##* であった。この規格は,30 )#-
((( !33 % 5 1 と一致している。
― 6 移植可能なオペレーティングシステムのインタフェース( 2/6 ) 第
1部 応用プログラム向けのインタフェース( & )
[プログラム言語C]
備考 **#! % 21 /! -
2/6 /! &11 & 7" 8 9
が,この引用規格と一致している。
― 6 移植可能なオペレーティングシステムのインタフェース( 2/6 ) 第
2部 シェル及びユーティリティ
備考 **#! % 21 /! -
2/6 / 3 .! が,この引用規格と一致している。

――――― [JIS X 3014 pdf 2] ―――――

   7
2019 年
月 1 日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格(日本産業規格)」を「日本産業規格」に読み替えてください。
6 の ) 及び 6 &'()*'()+ の ) によるライブラリを,この規格で
は標準"ライブラリ と呼ぶ。
用語の定義 この規格で用いる主な用語の定義は, によるほか, のとおりとす
る。) ) だけで用いる用語については,) に定義する。
この規格の一部でだけ用いる用語は,それぞれ必要な箇所で定義する。そうした定義の対象となる用語は,下線に
よって示す。
実引数 関数呼出し式の括弧の中にコンマで区切られて並んだ式,関数形マクロ呼出しの括弧
の中にコンマで区切られて並んだ前処理字句の列, の演算対象,又は テンプレート具現化の三角括弧の中にコ
ンマで区切られて並んだ型識別子 若しくは テンプレート名。
診断情報 処理系が出力する処理系定義の出力情報の一つ。
動的な型 左辺値式の表す左辺値が指す最派生オブジェクト( )の型。
例 )
その静的な型が :クラス " へのポインタ; であるポインタ( が,クラス " から派生した( )ク
ラス # のオブジェクトを指していたとすると,式 !
の動的な型は,:#; となる。参照( )も,同様
に扱う。
右辺値式の動的な型は,それの静的な型とする。
不適格プログラム !" 適格プログラム( )でない "## 処理系への入力。
# 処理系定義の動作 !$ %&' 適格プログラムの構文単位と 正しいデータと
の組合せに対する,処理系に依存した動作であって,それぞれの処理系が文書で説明を用意しておかなければならな
い動作。
( 処理系限界 処理系がプログラムに課している制限。
) 文化圏固有動作 !$ %&' 国,文化,言語などに依存した動作であって,それぞれの処理
系が文書で説明を用意しておかなければならない動作。
多バイト 文字 !% & 翻訳環境 又は 実行環境での拡張文字集合の要素を表した バイト
以上のバイト列。拡張文字集合は,基本文字集合をその部分集合としている( 。
参照)
* 仮引数 次のいずれかとする。
― 関数宣言 若しくは 関数定義の中,又は 例外処理部の 節の中で宣言され ,その関数 又は 例外処理
部が起動する際に値を受け取るオブジェクト 又は 参照
― 関数形式マクロの定義の中で,そのマクロ名に続く括弧の中にコンマで区切られて並んでいる識別子
― テンプレート仮引数
呼出し 情報 関数について,その多重定義解決( )に用いる情報。基本的には,その関数
の仮引数の型の列。関数がクラスのメンバである場合は,関数自身の
0 修飾子 及び それを宣言しているクラスも含
める
。関数テンプレートの特殊化に対する呼出し情報では,テンプレート実引数の型も含める( ## 参照)。
静的な型 式( * )の型。その式がもたらす結果の型として,実行時の意味を考慮せずにプ
ログラムを解析することで得られる。式の静的な型は,その式が位置するプログラムの形だけから決まり,プログラ
ムの実行中に変わることがない。
未定義の動作 $ %&' 間違いを含んだプログラム,間違ったデータ などに対して生じ うる
動作であって,この規格で要件を規定しない動作。この規格で動作を明示的に与えていない場合も,未定義の動作と
する。
参考 未定義の動作としては,次のものがありうる。
― その状況を完全に無視し ,何が起きるかわからない。
― 翻訳段階 又は プログラムの実行段階で,その環境に沿っての動作をする( 診断情報を出して
。ただし ,その動作の様子については,文書を用意して説明し
もよいし,出さなくてもよい。)
ておく。
― 。
翻訳 又は 実行を終了する( 診断情報を出力する。)
間違いを含んだプログラムの多くは,未定義の動作を引き起こすことがない。それらに対しては,診断を
下すことを要求している。
注 及び にあるとおり,標準 ライブラリは,標準 ライブラリの部分集合となっている。
注 関数の呼出し情報には,返却値の型が含まれていない。多重定義の解決には,返却値の型が関与しないからである。

――――― [JIS X 3014 pdf 3] ―――――

         未規定の動作 $ %&'                  適格プログラムと正しいデータとの組合せに対する動作であって,
処理系に依存する動作。処理系は,どんな動作が生じるかについて文書を用意する必要はない。
参考 多くの場合,どんな動作が生じ うるかについて,この規格の中で示唆する。
適格プログラム + !" 構文規則,診断対象の意味規則,及び 単一定義規則(
参照)
に従った "## プログラム。
処理系の適合 この規格の構文規則 及び 意味規則は,:診断を必要としない; と明記してある規則,及び :動作
は未定義とする; と明記してある規則を除いて,すべて診断対象規則
3!% とする。
この規格は,"## 処理系に対する要件を規定する。しかしながら,それらの要件は,多くの場合,プログラム,プ
ログラムの部分,又は プログラムの実行に対する要求事項の形をとる。こうした要求事項は,次の意味をもつ。
― プログラムがこの規格に示す規則に違反していない場合,適合する処理系は,その資源的な限界の範囲内
で,そのプログラムを受理し ,正しい実行 を行わなければならない。
― プログラムが診断対象でない規則に カ所でも違反している場合,この規格は,そのプログラムに対する
処理系の処置に何らの要件もおかない。
― プログラムが診断対象規則に違反している箇所がある場合,適合する処理系は,それぞれの箇所ごとに,
少なくとも何らかの診断情報を出力しなければならない。ただし ,そのプログラムが診断対象でない規則
にも違反している場合は,この限りでない。
クラス 及び クラステンプレートに対しては,ライブラリ条項( # )でその定義を部分的に規定する。すなわち,
非公開メンバ( )の定義は,規定しない。
( 適合する)処理系は,ライブラリ条項に従って非公開メンバの定義を
与え,クラス 及び クラステンプレートの定義を完成しなければならない。
( 適合する)
関数,関数テンプレート,オブジェクト 及び 値に対しては,ライブラリ条項でその宣言を規定する。
処理系は,ライブラリ条項に従ってその定義を与えなければならない。
ライブラリが定義する名前は,名前空間の有効範囲( ) )をもつ。"## 翻訳単位( )では,そこに適切な標
準ライブラリのヘッダを取り込むことによって,これらの名前を使うことができる( ( 。
参照)
ライブラリの中の テンプレート,クラス,関数 及び オブジェクトは,外部結合( # )をもつ。
( 適合する)処理
系は,翻訳単位を結合して完全な"## プログラムを構成する際に,必要に応じて,標準ライブラリのこれらに対す
る定義を提供しなければならない( 参照)。
処理系を,依存処理系!3 1 と自立処理系!3 1 とに分類する。依存
処理系は,2/ の下で動作する処理系をいう。自立処理系は,2/ の助けなしで動作する処理系をいう。依存処理系が
提供しなければならないライブラリは,そのすべてをこの規格で規定する。自立処理系が提供するライブラリは,処理
系定義とする。その提供するライブラリには幾つかの言語常備ライブラリが含まれていなければならない( )

参照)
適合する処理系は,適格プログラムの動作を変えることがない限り,拡張(ライブラリ関数の追加を含む。)を行っ
( 適合する)処理系は,プログラムがこの規格で不適格であれば,こうした拡張を使っていても,診断情報
てもよい。
を出力しなければならない。診断情報を出力しさえすれば ,そうしたプログラムを翻訳し実行しても差し支えない。
# この規格の構成 ( にプログラム言語 "## ( の記法で
の仕様を規定する。そこでは,構文の仕様を
3 に再掲する。
与える。すべての構文の仕様は,便宜を図って,附属書
) )( ライブラリ条項 % !! と呼ぶ。)に,標準 "## ライブラリを規定する。そこでは,マクロ
( ( ),値( ),型( 及び # ) 及び オブジェク
参照),テンプレート( ),クラス( * ),関数(
ト( ) )に対する定義を規定する。
附属書 4 に,適合する処理系の最小能力の推奨例を示す。
附属書 に,最初の版からの"## の変遷,及び"## と " 言語との差異の詳細を示す。幾つかの
"## の機能
5 にこれらの機能を示す。
は,こうした経緯との両立性を保つためだけに設けてある。附属書
附属書 に,"## の識別子( )に使える文字を,その国際文字名で示す。
この規格では,例を示す場合,字下げした太字の例で始める。参考を示す場合,字下げした太字の参考で始める。
例と参考とは,互いに入れ子になることがある。
( 構文記法 この規格で用いる構文記法では,構文要素( 非終端記号)の名前を《日本語文字》でつづって表し ,
終端記号をタイプライタ体で表す。選択肢は,原則として,それぞれ単独の行として並べる。ただし,多数の選択肢
がある場合に,:次のいずれか ; と明記した上で,選択肢を列挙することがある。このとき, 行に複数の選択肢を並
注 参照)。
正しい実行 には,処理するデータにもよるが,未定義の動作も含まれる( 及び

――――― [JIS X 3014 pdf 4] ―――――

   7
2019 年
月 1 日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格(日本産業規格)」を「日本産業規格」に読み替えてください。
べることもある。省略可能な終端記号 又は 非終端記号には,:1; を下付けする。例えば ,次のものは,波括弧の
中に式を 個書いたものか,波括弧だけを書いたものを表す。

構文要素名は,次の原則に従っている。
― : 《クラス名》,
《······ 名》; は,文脈から意味が決まる識別子の使用に当てる(例えば, 。
《型定義名》など )
― : 《修飾付き識別子》)
《······ 識別子》; は,文脈に依存しない識別子に当てる( 例えば , 。
― : 《宣言列》は,宣言を並べたものを表す。)
《······ 列》; は,区切りなしに並べたものに当てる( 例えば , 。
― : 《式並び》は,式をコンマで区切っ
《······ 並び》; は,コンマで区切って並べたものに当てる( 例えば ,

て並べたものを表す。)
) ,, 記憶モデル "## では,その基本の記憶単位をバイト
% と呼ぶ。バイトは,基本実行文字集合の文
字を収めることができる大きさをもつ,一連のビット列とする。そのビット数は,処理系定義とする。その重みの最
も大きいビットを上位ビット-3 % と呼び,最も小さいビットを下位ビット
<-3 % と呼ぶ。"##
プログラムでは,その記憶として,連続したバイトからなる 個以上の列を使う。それぞれのバイトは,固有の番地
をもつ。
参考 型の表現は,* で規定する。
,, オブジェクト モデル "## プログラムの構文単位は,オブジェクトを生成し,破壊し,参照し ,取り出
し ,加工する。オブジェクト
% = は,記憶域からなる。
参考 関数は,オブジェクトではない。オブジェクトと同様に記憶域を占有することもあるが,しないことも
ある。
《定義》3>( ) 又は 《< 式》
オブジェクトは, ( # )が生成する。更に,必要に応じて処理系が生成す
る( 。オブジェクトの特性は,その生成時に決まる。オブジェクトは,名前 をもつことがある。オ
参照)
ブジェクトは,記憶域期間 ! 3 ( ) )をもつ。記憶域期間は,そのオブジェクトの生存期間
( )を左右する。オブジェクトは,型 1( * )をもつ。オブジェクト型 % = 1 とは,そのオブジェク
トを生成するのに用いた型をいう。オブジェクトには,多相のオブジェクトがある。多相オブジェクト
11
% = に対しては,実行時にそのオブジェクトの型が決定できるだけの必要な情報を処理系が生成する。多相でない
オブジェクトでは,そのオブジェクトの中の値の解釈が,それを取り出すのに用いる式
・1!! の型によって定
まる。
オブジェクトが他のオブジェクトを包含することがある。この包含されたオブジェクトを,部分オブジェクト
! %-
% = と呼ぶ。部分オブジェクトには,メンバ部分オブジェクト
% ! %-% = ( * ),基底クラス部分オ
ブジェクト%! !! ! %-% = ( )及び 配列要素がある。他のオブジェクトの部分オブジェクトとなっていな
いオブジェクトを,総体オブジェクト1 % = と呼ぶ。
それぞれのオブジェクト に対して, の総体オブジェクトとは,次で定まるオブジェクトをいう。
― が総体オブジェクトの場合, 自身。
― そうでない場合, を包含しているオブジェクト(これは一意に定まる。)の総体オブジェクト。
クラス型の,総体オブジェクト,データメンバ( *
) 又は 配列要素の型としては,基底クラス部分オブジェクト
のクラス型と区別するため,その最派生クラス
! 303 !! を採択する。最派生クラス型のオブジェクトを,
最派生オブジェクト! 303 % = と呼ぶ。
最派生オブジェクトは,それがビットフィールド( *( )である場合を除いて,ゼロでない大きさをもち, バイト
以上の記憶域を占める。基底クラス部分オブジェクトは,大きさがゼロであることがある。" 互換型( 2* 型,
* 参照)のオブジェクトは,一連のバイトからなる記憶域を占める。
参考 "## は,種々の組込みの型とともに,既存の型を組み合わせて新しい型を構成する複数の手段を提供
する( * 参照)

* プログラムの実行 この規格では,意味を規定するのに,パラメタをもった非決定性の抽象機械を用いる。この
規格は,適合する処理系に対して,その構成方法に関する何らの要件も置かない。したがって,この抽象機械の構成
を模倣する必要もない。適合する処理系は,この抽象機械の外から見た動作(だけ )を模倣しなければならない。
注 は, の略号である。
注 この規定は,まるで 規則とも呼ばれることがある。処理系は,まるで すべての要件を満たしているように,プログラムの外
から見た動作をもたらすのであれば,この規格が規定する具体的要件そのものを無視して差し支えない。例えば,処理系は,式の値が使
われることがなく,しかもプログラムの外から見た動作に影響を与えるような副作用をもたないと帰結できるのであれば,その式の評価
を行わなくてもよい。

――――― [JIS X 3014 pdf 5] ―――――

次のページ PDF 6

JIS X 3014:2003の引用国際規格 ISO 一覧

  • ISO/IEC 14882:2003(IDT)

JIS X 3014:2003の国際規格 ICS 分類一覧

JIS X 3014:2003の関連規格と引用規格一覧

規格番号
規格名称
JISX0001:1994
情報処理用語―基本用語
JISX0002:1987
情報処理用語(算術演算及び論理演算)
JISX0003:1989
情報処理用語(装置技術)
JISX0004:2002
情報処理用語(データの構成)
JISX0005:2002
情報処理用語(データの表現)
JISX0006:1989
情報処理用語(データの準備及び取扱い)
JISX0007:2001
情報処理用語―プログラミング
JISX0008:2001
情報処理用語―セキュリティ
JISX0009:1997
情報処理用語(データ通信)
JISX0010:1987
情報処理用語(操作技法及び機能)
JISX0011:1989
情報処理用語(処理装置)
JISX0012:1990
情報処理用語(データ媒体,記憶装置及び関連装置)
JISX0013:1998
情報処理用語(図形処理)
JISX0014:1999
情報処理用語―信頼性,保守性及び可用性
JISX0015:2002
情報処理用語(プログラム言語)
JISX0016:1997
情報処理用語(情報理論)
JISX0017:1997
情報処理用語(データベース)
JISX0018:1989
情報処理用語(分散データ処理)
JISX0019:1994
情報処理用語―アナログ計算
JISX0020:1992
情報処理用語(システム開発)
JISX0021:1987
情報処理用語(プロセスインタフェース)
JISX0022:1989
情報処理用語(計算器)
JISX0023:1995
情報処理用語(テキスト処理)
JISX0024:1998
情報処理用語(計算機統合生産)
JISX0025:1994
情報処理用語―ローカルエリアネットワーク
JISX0026:1995
情報処理用語(開放型システム間相互接続)
JISX0027:1995
情報処理用語(オフィスオートメーション)
JISX0028:1999
情報処理用語―人工知能―基本概念及びエキスパートシステム
JISX0031:1999
情報処理用語―人工知能―機械学習
JISX0032:1999
情報処理用語―電子メール