2011-04-15 4 views
1

誰がISO N3242§3.3.3、2点目誰でもこの段落を現在のC++ 0x標準草稿について説明できますか?

から(ラムダ宣言子に出現するものを含む)関数のパラメータ名の潜在的な範囲をこの文を説明したり、関数のローカル変数の定義済みのことができます関数定義(8.4)内のは、その宣言ポイントから始まります。関数にtry-block関数がある場合は、パラメータまたは関数ローカルの事前定義変数の有効範囲が、最後に関連付けられたハンドラの最後で終わります。それ以外の場合は、最後に関連付けられたハンドラの最も外側のブロックの終わりで終了します。関数定義。パラメータ定義名は、関数定義の最も外側のブロックでも、関数のtry-blockに関連するハンドラの最も外側のブロックでも再宣言されてはならない。

ISO規格2003は言う:

関数定義(8.4)で、関数のパラメータ名の潜在的な範囲は、宣言のその時点で開始されます。関数が関数try-blockを持つ場合、パラメータの潜在的な範囲は、最後に関連付けられたハンドラの終わりで終わります。そうでなければ、関数定義の最も外側のブロックの終わりで終了します。パラメータ定義名は、関数定義の最も外側のブロックでも、関数のtry-blockに関連するハンドラの最も外側のブロックでも再宣言されてはならない。

これらの記述の実際の違いは何ですか?

例/プログラムの観点から、上記の追加点を説明する人はいますか?

私はそれがファンクションローカル定義変数に属していることに気付きました。

+2

参照先セクション8.4の「関数ローカル事前定義変数」を探しましたか? – gregg

+2

これは、 "現在のC++ 0x標準ドラフトの誰でもこの段落を説明できますか?"の6番目の**バージョンです。 2つのバージョンの標準から2つの関連する段落を貼り付けることで、「違いを見つけて」質問することで得られるものは何ですか? – razlebe

+1

私はこの形式の問題では何の問題も見ませんが、一意のタイトルを付けてください。 – Potatoswatter

答えて

4

変更点は、「関数ローカルで事前定義された変数」の追加です。これはC++ 0xで新しく追加されたものです。これらは、関数内で使用できる暗黙的に定義された静的変数です。標準のドラフトは、関数の名前を与える__func__と呼ばれるものを定義し、実装が独自のものをさらに追加できるようにします。この節では、関数のパラメータ名がどこにあっても利用可能であると述べています。

関連する問題