C++規格書のココを読め

1デフォルトの名無しさん
C++の規格について不毛な議論を避けるために「規格書のココを読め」
というリンクを張ろう。テキストはこれ。
http://www.kuzbass.ru/docs/isocpp/
2とりあえず:02/07/07 10:39
2げとずざ
3デフォルトの名無しさん:02/07/07 10:40
おれが憶えている範囲で。

・_ で始まる名前はなぜ使っちゃいけない?
17.4.3.1.2 - Global names [lib.global.names]
http://momiji/data/doc/isocpp/lib-intro.html#lib.reserved.names

・宣言と定義の違いは?
3.1 - Declarations and definitions [basic.def]
http://momiji/data/doc/isocpp/basic.html#basic.def

・関数テンプレートではデフォルトのテンプレート引数を使えない
14.1 - Template parameters [temp.param]
-9-
http://momiji/data/doc/isocpp/template.html#temp.param
ページ番号の印刷位置が微妙にずれてる箇所がある。
そこがポイントだ。
53:02/07/07 10:43
ばかだ。まちがえた。こっち。

・_ で始まる名前はなぜ使っちゃいけない?
17.4.3.1.2 - Global names [lib.global.names]
http://www.kuzbass.ru/docs/isocpp/lib-intro.html#lib.reserved.names

・宣言と定義の違いは?
3.1 - Declarations and definitions [basic.def]
http://www.kuzbass.ru/docs/isocpp/basic.html#basic.def

・関数テンプレートではデフォルトのテンプレート引数を使えない
14.1 - Template parameters [temp.param]
-9-
http://www.kuzbass.ru/docs/isocpp/template.html#temp.param
63:02/07/07 10:49
ごめん、合ってた。

・_ で始まる名前はなぜ使っちゃいけない?
17.4.3.1.2 - Global names [lib.global.names]
http://momiji/data/doc/isocpp/lib-intro.html#lib.reserved.names

・宣言と定義の違いは?
3.1 - Declarations and definitions [basic.def]
http://momiji/data/doc/isocpp/basic.html#basic.def

・関数テンプレートではデフォルトのテンプレート引数を使えない
14.1 - Template parameters [temp.param]
-9-
http://momiji/data/doc/isocpp/template.html#temp.param
73:02/07/07 10:52
>>6 名前を騙るな。
で # 以降は ime.nu が切っちゃうね。ttp:// ではじめたほうがいいかな。
8偽1:02/07/07 10:54
そして最後にはISO/IEC 14882-1998規格完全準拠の処理系を作りに乗り出します
>>9
それはさすがにまずかろー。ここで買ってね。18ドル。
http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
11デフォルトの名無しさん:02/07/07 11:47
>>9は何なの?違法コピ?
12デフォルトの名無しさん:02/07/07 12:01
>>9って違法!?
俺落としちゃったけど削除しとこう・・・
13デフォルトの名無しさん:02/07/16 20:41
⊂(`Д´⊂ )⊃==領すレGET-
>>12
本当に削除した?
保守
16lo;こんう&lro;:02/09/27 12:38
 
17lo;スレジマ&lro;:02/09/27 12:39
           
18­:02/09/27 12:40


19デフォルトの名無しさん:02/10/26 12:26
ほっしゅ
>>20
ハァ?
ニヤリ
C イイ!
ぷぅ
通報しますた
28デフォルトの名無しさん:02/12/18 21:46
ちゃんと重箱の隅つっついとけ
http://std.dkuug.dk/jtc1/sc22/wg21/
僕の肛門もIP記録実験です
俺は イスラエル---インド---中国---北欧---カナダ---エジプト---自宅

と20もの多弾プロ串を経由しているので追跡は不可能です。
結局自分に都合の悪いレスされると答えないで逃げるかレッテル張りするへたれなわけだが(w>コピペ厨
宮崎はスーパーハカーのお友達がいるからこんなことしなくても関係ないだろ。
33デフォルトの名無しさん:03/01/09 14:38
2chは普通の無個性な掲示板になりました
記録実験をトップニュースにする程公共性があるのかと小一時間問い詰めたい。
あとニュースなんだからちゃんと「IPアドレス」って書け。
なんか投票までやってるし。
どうでもいいけどね
>>216
(=゚ω゚)ノぃょぅ
>>572
なんで?
IPなんて圧縮しなくても最低4バイトあれば記録できるYO!
>>238
はいはい能書きはいいから
実際問題、仮に削除された奴が
削除されたことに対して文句を言っても無駄でしょ
大袈裟に語らんでよ
>>713
他のサバもバンバンやっちゃって。
Z武とマンコだけは外せないということは言うまでもない
野鳥スレがどうこう言うんだったら、それに反応するのもやめた方が
いいと思いますよ。>運営ボランティアの皆さん。

だれそれの正体とか言う話が出ると、それに呼応するように
トリップの教えあいとかして、テストスレなどに書き込む。
馴れ合いの一種だと思いますが、ちがうでしょうか。。。
ひろゆき後ろを見ろ!
ACCS、任天堂、警察のみなさ~ん!!
24歳童貞もよ(ニュー速いちのうんこ好き) ◆RKlw/UJGqg
が著作権侵害の犯罪教唆しましたよ~!!
http://live2.2ch.net/test/read.cgi/news/1041919882/717


717 :24歳童貞もよ(ニュー速いちのうんこ好き) ◆RKlw/UJGqg :03/01/09 00:01 ID:PgSHqi/K
>>699
おまいら買ったらすぐにnyに流せよ。

IP晒されてるのはクソ馬鹿ばっかりだな・・・ こういうのが減るのならいいか・・・
みんな串刺してるのか・・・
俺は生だからうかつな発言はできないなぁ(w
こんにゃく、か、、、
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
Σ(´Д゚;≡;゚д`) あばばばばばばばあわわわわわわわ
追跡されないようにしてから書き込めばいいだけのこった。
なにやってんだか・・・
匿名は仮面舞踏会のようなあやしい雰囲気が(略
インポ


<血液型A型の一般的な特徴>(見せかけの優しさ・もっともらしさ(偽善)に騙されるな!)
●とにかく気が小さい(神経質、臆病、二言目には「世間」、了見が狭い)
●他人に異常に干渉する(しかも好戦的・ファイト満々でキモイ)
●自尊心が異常に強く、自分が馬鹿にされると怒るくせに平気で他人を馬鹿にしようとする
(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際にはたいてい、内面的・実質的に負けている)
●「常識、常識」と口うるさいが、実はA型の常識はピントがズレまくっている(日本の常識は世界の非常識)
●権力、強者(警察、暴走族…etc)に弱く、弱者には威張り散らす(強い者に弱く、弱い者には強い)
●あら探しだけは名人級(例え10の長所があってもほめることをせず、たった1つの短所を見つけてはけなす)
●基本的に悲観主義でマイナス思考に支配されているため、性格がうっとうしい(根暗)
●一人では何もできない(群れでしか行動できないヘタレ)
●少数派の異質、異文化を排斥する(差別主義者、狭量)
●集団によるいじめのパイオニア&天才(陰湿&陰険)
●悪口、陰口が大好き(A型が3人寄れば他人の悪口、裏表が激しい)
●他人からどう見られているか、体裁をいつも気にしている(「世間体命」、「~みたい」とよく言う)
●自分の感情をうまく表現できず、コミュニケーション能力に乏しい(同じことを何度も言う、知障)
●表面上意気投合しているようでも、腹は各自バラバラで融通が利かず、頑固(本当は個性・アク強い)
●人を信じられず、疑い深い(自分自身裏表が激しいため、他人に対してもそう思う)
●自ら好んでストイックな生活をし、ストレスを溜めておきながら、他人に猛烈に嫉妬する(不合理な馬鹿)
●執念深く、粘着でしつこい(「一生恨みます」タイプ)
●自分に甘く他人に厳しい(自分のことは棚に上げてまず他人を責める。しかも冷酷)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(他人をけなして相対的に自分の立場を引き上げようとする等)


それと、O♀はエコヒイキきつくて、冷酷だからな。

A♂の異質排除×O♀の冷酷=差別・いじめ とあいなる。
たとえばここで唐突に広末をどうしたいと叫んだところで、
その広末がどの広末なのか特定するのは事実上不可能です。
しかし特定の有名人の広末を主題とするスレッドで
類似発言を連呼すればグレーゾーンに入りますね。
「ケース・バイ・ケース」という言い古された言葉を
貴方の鈍いオツムに吹き込んでおくしかありません。

上の最後の一行について名誉毀損で訴えますか?(笑
とにかく2ちゃんは人が減るのを一番恐れている。
裁判で負けたら、手のひらを返したようにルール変更
匿名は弱者保護のためですって言ってのは、やっぱり詭弁だったんだね (´・д・`)
ISP責任法でよろしこ
 厨質問スマソ
hobby 今何をされてるんでつか?
おならぷー
60山崎渉:03/01/13 18:26
(^^)
結局ひろゆきの年収っていくらなんだろう?
62山崎渉:03/01/15 17:51
(^^)
63山崎渉:03/01/23 22:23
(^^)
64デフォルトの名無しさん:03/03/02 03:01
結局どこを読めばいいのでしょうか
ぜんぶー
66山崎渉:03/04/17 16:01
(^^)
67山崎渉:03/04/20 03:58
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
68山崎渉:03/05/28 13:17
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
C 以外は糞
70デフォルトの名無しさん:03/06/16 11:17
何このスレ?
age2chの標準機能で荒らされてるみたいなんだけど
71(*゚Д゚):03/06/16 11:21
オナニーしちゃった。
72(*゚Д゚):03/06/16 11:28
じゃなかった・・・072ーだった。
73(=゚Д゚):03/06/16 11:30
C++ってなんすか?
74(*゚Д゚):03/06/16 11:43
バハムート改の事だよ…!!これで物知り博士の仲間煎り。
75デフォルトの名無しさん:03/06/16 11:44
C++を理解できない奴はこうやって荒らしたりするのか。
なるほど、勉強になる。
76(*゚Д゚):03/06/16 11:47
授業料没収します…
77デフォルトの名無しさん:03/06/16 17:20
誰かあの長々とした英文を翻訳してください。
って無理だわな。
英語も勉強しないと。
783 ◆zz/Ed1ynRo :03/06/26 17:25
>>46
同意

ところで、携帯ゲーム機"プレイステーションポータブル(PSP)

 このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。
画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。

この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。
任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。

いきなり変なこと書いてスマソ‥‥
GBAと比較してみてどうですかね?(シェアのことは抜きで)
79山崎 渉:03/07/15 10:50

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
80山崎 渉:03/07/15 14:03

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
81山崎 渉:03/08/02 02:52
(^^)
82山崎 渉:03/08/15 17:55
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
[]で囲まれたものはキーワード。(opt)はオプション。つまり無いこともあると。

A.12 Templates

template-declaration:
[export](opt) [template] < template-parameter-list > declaration

template-parameter-list:
template-parameter
template-parameter-list, template-parameter

template-parameter:
type-parameter
parameter-declaration // プリミティブ型のことか? template <int int_t>

type-parameter:
[class] identifier(opt)
[class] identifier(opt) = type-id
[typename] identifier(opt)
[typename] identifier(opt) = type-id
[template] < template-parameter-list > class identifier(opt)
[template] < template-parameter-list > class identifier(opt) = id-expression
// id-expressionというのはここでいうtype-id(はっきりしている型)
// が求まる式という意味なのだろうか?
template-id: //汎関数、汎クラスの名前+汎パラメタ実引数をひとまとめにしたもの
template-name < template-argument-list(opt) >

template-name:
identifier

template-argument-list:
template-argument
template-argument-list, template-argument

template-argument:
assignment-expresion //これはなんだ?代入式って?
type-id
id-expression


explicit-instantiation:
[template] declaration
// 汎関数、汎クラスの複数回インスタンス化防止。コンパイラへの優しさ。

explicit-specialization: // 完全特殊化
[template] < > declaration
// specializationとは型パラメタに応じて一つ以上定義部を設けること。
ANSIC++のgrammarだけはここで見れる
http://www.csci.csusb.edu/dick/c++std/cd2/gram.html
C++相談室から拾ってきた。こっちには規格書全部含まれてる。
http://www.kuzbass.ru/docs/isocpp/
87デフォルトの名無しさん:03/10/07 18:15
14 - Templates [temp]

-1- A template defines a family of classes or functions.
template-declaration:
export[opt] template < template-parameter-list > declaration
template-parameter-list:
template-parameter
template-parameter-list , template-parameter

The declaration in a template-declaration shall
* declare or define a function or a class, or
* define a member function, a member class or a static data member of a class template
or of a class nested within a class template, or
* define a member template of a class or class template.

A template-declaration is a declaration. A template-declaration is also a definition if
its declaration defines a function, a class, or a static data member.

テンプレート宣言の宣言は
* クラス又は関数の宣言、定義する

* 1)メンバ関数、2)メンバクラス、又は3)クラステンプレートのスタティックメンバ、
4)クラステンプレートにネスト宣言されたクラスのスタティックメンバ を定義する。

* クラス又はテンプレートクラスのメンバテンプレート(クラス、関数)を定義する。

この辺りはちょっと具体例がないので分り難い。
Static Data Memberがこのぐらいの抽象度の説明で出てくるのは印象ぶかい。
-2- A template-declaration can appear only as a namespace scope or class scope
declaration. In a function template declaration, the declarator-id shall be a
template-name (i.e., not a template-id). [Note: in a class template declaration, if the
declarator-id is a template-id, the declaration declares a class template partial
specialization (temp.class.spec). ]

(tenplate-declarationとは関数テンプレート、クラステンプレートを人まとめにしたもの)
テンプレート宣言は{namespace scope,class scope}にだけapearする。
つまり関数内ではダメですよ、ということらしい。union内ではどうなのだろうか?

関数テンプレート宣言においては、declarator-idはtemplate-nameとなる。
declarator-id
template-id
template-name
これらの文法内での意味は保留。

クラステンプレート宣言内において、declarator-idとtemplate-idなら、
その宣言はクラステンプレートの部分的特殊化となる。

部分的特殊化はLOKIなどで活用されてるので分りやすい。
問題は、文法用語のこと。とりあえず、declarator-idとtemplate-idが同じなら
テンプレートの部分的特殊化と見なしてよいということ。
まあクラステンプレートの名前のことだと思うけど。
-3- In a template-declaration, explicit specialization, or explicit instantiation the
init-declarator-list in the declaration shall contain at most one declarator. When such
a declaration is used to declare a class template, no declarator is permitted.

8章をみるとdeclaratorについてはこう書いてある
A declarator declarares a single object, function, or type within a declaration.
Init-declarator-list appearing in a declaration is a comma-separated sequence
of declarators.
つまり宣言文のなかで、宣言される一つ以上の対象のことらしい。


template-declarationという集合の中の、
完全特殊化と、explicit instantiationについて書いてある。
ここは分り難い。most one declaratorとは何のことなのか?
なんのことなのか分らん。英語力が足りない。
>>84
> template-argument:
> assignment-expresion //これはなんだ?代入式って?

定数値を取るテンプレート( template<int N> class array とか )に対する引数。
中に array< 1==2 ? 3 : 4+5*6 > と式を書いても構文上は構わんので。
# ここは本当は conditional-expression であるべきだとは思うんだけど。
>>89
> most one declaratorとは何のことなのか?
「at most one declarator」。
最大でも一つの宣言子。
>>90-91
赤ペン先生ありがとうございます。
英語力、C++対する理解ともにかなり怪しいので助かります。
-4- A template name may have linkage (basic.link). A template, a template explicit
specialization (temp.expl.spec), or a class template partial specialization shall not
have C linkage. If the linkage of one of these is something other than C or C++, the
behavior is implementation-defined. Template definitions shall obey the one definition
rule (basic.def.odr). [Note: default arguments for function templates and for member
functions of class templates are considered definitions for the purpose of template
instantiation (temp.decls) and must also obey the one definition rule. ]

テンプレート名はリンケージを持つかもしれない。

テンプレート(そのもの??)、テンプレートの完全特殊化、
又はクラステンプレートの部分的特殊化はCリンケージを持つことはない。

もし、CかC++以外のなんらかのリンケージがひとつあるなら、
その動作はimplement-defined(実装依存?)である。

テンプレートの定義はひとつの定義ルールに従う。

関数テンプレートとクラステンプレートのメンバー関数のデフォルト引数は
テンプレートのインスタンスを目的とした定義と考えられ、また
ある一つの定義ルールに従わなければなりません。
definition ruleというのが3.2に書いてあるが、難しいのでパス。
-5- A class template shall not have the same name as any other template, class,
function, object, enumeration, enumerator, namespace, or type in the same scope (
basic.scope), except as specified in (temp.class.spec). Except that a function template
can be overloaded either by (non-template) functions with the same name or by other
function templates with the same name (temp.over), a template name declared in namespace
scope or in class scope shall be unique in that scope.

クラステンプレートは他のテンプレート、クラス、関数、オブジェクト、enum{型,宣言子}、
namespace、同一スコープにある型と同じ名前を持つことはない。
いくつかの例外はtemp.class.specを見ろと。

テンプレート関数がテンプレート関数、非テンプレート関数の両方に対して
オーバーロードできることを除けば、テンプレートはクラススコープ、ネームスペース
においてユニークな名前で宣言される。


このクラステンプレートにおける例外が曲者っぽい。
何かを説明するときに対象の特徴を元にリストを挙げるわけだけど、リストの全てとは
// class
{名前空間,クラス{,テンプレート},関数{,テンプレート}}内のクラス{,テンプレート}
// function
{クラス{,テンプレート}のメンバとしての,名前空間内の}{,インライン}関数{,テンプレート}

というかんじでしょうか。存在するスコープと属性を元にリストアップ。
一覧が見たい人は、for str in 上の文字列;do echo $str;done
とでもしてみてください。
クラスに関しては10通り。関数に関しては12通り。まだまだあるかもしれません。

仕様書において、関数やクラスの特徴をそのたびごとにずらずらと並べられているのは
分り難いと思いました。一度全ての組み合わせを用いられるケースとは別に挙げて
しまう方が分りやすいかと。
-6- A namespace-scope declaration or definition of a non-inline function template, a
non-inline member function template, a non-inline member function of a class template or
a static data member of a class template may be preceded by the export keyword. If such
a template is defined in the same translation unit in which it is declared as exported,
the definition is considered to be exported. The first declaration of the template
containing the export keyword must not follow the definition.

1)名前空間スコープでの非インライン関数テンプレートの宣言、定義、
2)非インラインのメンバー関数テンプレート
(ただのメンバーというのは非テンプレートのクラスのメンバという意味らしい)
3)非インラインのクラステンプレートのメンバー関数
4)クラステンプレートのスタティックデータメンバ
これらはexportキーワードにより優先されるかもしれない。
何に対して優先されるのか?

もし、exportとして宣言されるそのようなテンプライズされたクラスや関数が
同じ変換ユニット内で定義されるなら、その定義はexportされる。

exportキーワードを含むテンプレートの最初の宣言(最初でない宣言とは?)は
定義に従ってはいけない。


exportについて説明しているのだけど、separation compilationは当分は
使えないだろうからパス。Inclusion compilation最強。
-7- Declaring a class template exported is equivalent to declaring all of its non-inline
function members, static data members, member classes, member class templates and
non-inline function member templates which are defined in that translation unit
exported.

exportされるクラステンプレートを宣言することは、
1)非インラインメンバ関数
2)非インラインメンバ関数テンプレート
3)スタティックメンバデータ
4)メンバクラス
5)メンバクラステンプレート
変換ユニットで定義されるこれらの全てがexportされることと同等である。

つまり、あるクラステンプレートがexportされたら、そのクラスの1-5の要素は
全てexportされると。

一般にexportの難しさは

foo.h  テンプレート宣言
foo1.c  テンプレート定義(export指定)
foo2.c  テンプレートのインスタンス化
という関係があるとき。foo1.cにおいてexportされた定義がfoo2.cにおいて
参照できるかできないか。Cでは通常inline関数はヘッダファイルに書くものだが、
C++では他の*.cppつまりオブジェクトファイルに入れておけるということなのかな??
-8- Templates defined in an unnamed namespace shall not be exported. A template shall be
exported only once in a program. An implementation is not required to diagnose a
violation of this rule. A non-exported template that is neither explicitly specialized
nor explicitly instantiated must be defined in every translation unit in which it is
implicitly instantiated (temp.inst) or explicitly instantiated (temp.explicit); no
diagnostic is required. An exported template need only be declared (and not necessarily
defined) in a translation unit in which it is instantiated. A template function declared
both exported and inline is just inline and not exported.

無名名前空間で定義されたテンプレートはexportされない。
テンプレートはプログラム中でたった一度だけexportされる。
実装においては、これらのルールを破ることでメッセージ表示をする必要はない。
特殊化でもexplicitly instantiatedでもない非exportテンプレートは、
暗黙的、明示的インスタンス化される全ての変換単位において
宣言されていなくてはならない。
exportされるテンプレートは、インスタンス化される変換単位において
宣言だけされることを必要とする。
exportかつインラインとして宣言される関数テンプレートは、
インラインではあるあg、exportはされない。
-9- [Note: an implementation may require that a translation unit containing the
definition of an exported template be compiled before any translation unit containing an
instantiation of that template. ]

実装によっては、exportされたテンプレートが定義された変換単位が、
インスタンス化される変換単位より、先にコンパイルされていなくては
ならないかもしれない。


とここまでわけもわからず読んでみて、exportはコンパイラの実装と、
言語的な仕様の板ばさみ状態で分り難い。通常、多くのテンプレートライブラリが
Includsion compilationでの仕様を前提としているので、この14はさらっと
概要だけ分ればいいのかな。
むしろ、exportは全てのテンプレートに絡んでくるから、
何度でもこの14 -*-を読まないとダメか。
>>87-100
突然、何だったんだ?
>>101
英語の勉強とテンプレートの仕様と駄スレの再利用が目的でした。
14章の頭しか読んでませんが、それでも年内に最後まで読みたいです。
どうか見逃してやってくださいm(__)m
>>102
なんとなく面白かったので再開する気ありませんか?
104名無しさん@Vim%Chalice:04/01/20 01:39
再開期待age
105デフォルトの名無しさん:04/01/20 03:27
ISO/IEC 14882:2003のPDFを無料で落とせるURLを
教えて下さい。
>>105
確かに ISO の方だとちょい高すぎだが、ANSI(>>10)の方だと $18 で買える。
つか、今購入してDL中だ(w
107!240:04/03/12 02:38
C++相談室 part28
http://pc2.2ch.net/test/read.cgi/tech/1077985164/240

|18.4.1.3
|1 These functions are reserved, a C++ program may not define functions
| that displace the versions in the Standard C++ library (17.4.3).

となっているため、以下の関数を置き換えることはできない。

void* operator new(std::size_t size, void* ptr) throw();
void* operator new[](std::size_t size, void* ptr) throw();
void operator delete(void* ptr, void*) throw();
void operator delete[](void* ptr, void*) throw();
108!240
一方で

|18.4.1.1 2,6,11 / 18.4.1.2 2,6,10
|Replaceable: a C++ program can define a function with
| this function signature that displaces the default
| version defined by the C++ Standard library.

となっているので、以下の関数は置き換えが可能である。

void* operator new(std::size_t size) throw(std::bad_alloc);
void* operator new(std::size_t size, const std::nothrow_t&) throw();
void operator delete(void* ptr) throw();
void operator delete(void* ptr, const std::nothrow_t&) throw();
void* operator new[](std::size_t size) throw(std::bad_alloc);
void* operator new[](std::size_t size, const std::nothrow_t&) throw();
void operator delete[](void* ptr) throw();
void operator delete[](void* ptr, const std::nothrow_t&) throw();