4

ISON3242§3.2の2番目のポイントからこのステートメントを誰かが説明できますか

候補関数のセットのメンバーは、潜在的に評価された式から参照されたときにオーバーロード解決によって選択された場合にodr-usedに使用されます。[注:これには、名前付き関数の呼び出し(5.2.2)、演算子のオーバーロード(13節)、ユーザー定義の変換(12.3.2)、新しい配置の割り当て関数(5.3.4)、およびデフォルト以外の初期化が含まれます。 (8.5)。

ISO規格2003:言う

オーバーロードされた関数は、評価される可能性のある式から参照されたときにオーバーロード解決によって選択された場合に使用されます。[注:これには、名前付き関数の呼び出し(5.2.2)、演算子のオーバーロード(13節)、ユーザー定義の変換(12.3.2)、新しい配置の割り当て関数(5.3.4)、およびデフォルト以外の初期化が含まれます。 (8.5)。

これらのステートメントの実際の違いは何ですか?

誰かが例/プログラムの助けを借りてこれを説明できますか?

4

2 に答える 2

6

「オーバーロードされた関数」という用語は、メンバーとセットのどちらを指す場合でも(わずかに)あいまいです。C ++ 11は、評価される可能性のある式から選択されることのない関数は、odrで使用されないことを明確にしています。

「odr-used」という用語は、C++11の新機能です。これは基本的に、指定されたオブジェクトが最終的なコンパイル済みバイナリファイルで表される可能性があり、単一定義規則が適用されることを意味します。

于 2011-04-11T06:23:32.393 に答える
4

コアの問題#1174を修正するために、段落が変更されました。そこに違いを示す例があります。

于 2011-04-11T06:26:47.340 に答える