質問

によるサーゲイRyazanov、 信じられないほどの高速C++代表者 な:

私の代表団はできません。比較演算子が定義されていないので、委譲を含まないポインタ。ポインタにはスタブ機能の異なる様々な編成です。

できる読者がい"との回答が

"ポインタにはスタブ機能の異なる様々な編成です。" AFAIK、これは当てはまらない。コンパイラでコンパイルに必要な再利用テンプレート機能の発生異なる編成ユニット(この思いのものだと思いBorland一度に違反したこのルール)めておられるのじゃないかと思いクラス(なで"名もない'の名前空間用の外部連携のご利用にはスタブ機能は常に正inlinedがな問題としてのアドレスの機能力の非インライン版に発生すると"外部連携曲によるリンカーをすべてが一つの同じ機能(想定するために必要な同じように標準)...

設定されていない場合はテンプレート機能の一換ユニット(cppファイル)として定義と同じ機能の異なる別の翻訳単位のバージョンでの最終実行形式にまとめたものです。(実際に違反する一定義規則"で動作GCC、少なくとも...必要な場合はMSVC.) そのポイントは:の住所のスタブ]の異なる単位です。

思うに更新の記事を含むとの比較可能性という表示が出れば実MSVCの場合はMSVC基準を授与し、ています。

現在の四歳の著な回答とのコメントという思いがメリットを上記のコメントは、この特定の実装が変更される支援。

はC++の標準を具体的に禁止などの利用およびその他の最近のコンパイラを実際に標準に準拠したこの点?

役に立ちましたか?

解決

このコードは、標準準拠、。いと思われたに違反するODR、そのすべてのinstantiationsの機能テンプレートと同じテンプレートパラメータは"同じアドレス"(という点でポインタ機能のすべてが等しい)-ことは重要ではありません。ISO C++03 14.5.5.1[温度ます。関連リンク】を記述するルールがあります。

なので、比較することになるだろうとも定義することにありますのでconformantタです。

他のヒント

いわゆる スタブ 機能します 信じられないほど速いC ++代表者 それは 静的テンプレートメンバー関数, 、基本的にです テンプレート関数. 。改良されたバリアントにも同じことが当てはまります 信じられないほど速いC ++代表者、修正.

だから質問はこれに要約されます:

異なる翻訳ユニットのテンプレート関数(同じテンプレートパラメーターと定義を使用)のインスタンス化は、同じ関数ポインターアドレスを共有していますか?

C ++標準(ISO C ++ 17、§17.5.6.1)によると、答えは はい.

@Pavelが彼の答えで言ったように、同じことがISO C ++ 03標準(ISO C ++ 03、§14.5.5.1)に適用されました。

言い換えれば、このアプローチは標準的な準拠であり、代表者は安全に匹敵します - それらのデータは、同じ関数に拘束され、(メンバー関数の場合)同じオブジェクトに拘束されている場合にのみ等しく比較されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top