問題タブ [lvalue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++標準のどこで::deleteは左辺値を変更できると言っていますか?
:: deleteに渡された左辺値を変更する最初のコンパイラーに遭遇しましたが、左辺値をゼロにしません。それは次のとおりです。
削除操作後のpはゼロではなく、古い値から変更されていることに注意してください。同僚は、pを0xFFFFFFFFに変更するメインフレームC ++コンパイラや、pを0に変更する他のコンパイラを使用した経験では、これは珍しいことではないと私に言いました。
C ++標準のどこで、コンパイラがこれを実行できると言っていますか?
StackOverflowを検索すると、次の質問が見つかりました。削除してポインタをNULLに設定しないのはなぜですか。これには、次のステートメントを含むBjarneStroustrupの応答を参照する回答がありました。
C ++では、削除の実装で左辺値のオペランドをゼロにすることが明示的に許可されており、実装でそれができることを期待していましたが、そのアイデアは実装者に普及していないようです。
最終委員会ドラフトC++0x標準のセクション5.3.5および12.5を読み直しましたが、「明示的な」部分が表示されていません。標準の間違ったセクションを見ているだけですか?または、セクションにロジックのチェーンがありますが、正しく接続されていません。
AnnotatedC++リファレンスマニュアルのコピーはもうありません。コンパイラがこれを実行できるのはARMでしたか?
[編集:セクション参照を3.5.3から5.3.5に修正。また、削除後にpが未定義であるというヘンクの主張に対する対位法として、興味深いパラドックスを追加しています。]
pがnullに初期化される場合、興味深いパラドックスがあります。
ただし、この場合、動作は十分に文書化されています。deleteがnullポインターを取得すると、何もしないと想定されるため、pは変更されません。
c++ - テンプレートパラメータの参照変数による問題
次の小さな例は私の問題を示しています。
エラーメッセージ(GCC):
エラー:'static void X :: xxx(T &&)[with T = int&]'はオーバーロードできません
エラー:with' static void X :: xxx(T&)[with T = int&]'</ p>
なんで?T = int&
---> inにT&
置き換えられますか?int&&
static void xxx(T& x)
質問に対する答えが「はい」の場合、次のようになります。
T&
は左辺値参照ではなく、右辺値参照になります。- そして、次のコードが機能するはずです。
しかし、そうではありませんでした:
エラーメッセージ(GCC):
エラー:'X :: xxx(int)'の呼び出しに一致する関数がありません<br>注:候補は次のとおりです:static void X :: xxx(T&)[with T = int&]
その場合T&
、withT = int&
は等しくT&&
なく、右辺値参照でもありません。しかし、そうでない場合、なぜ最初の例が機能しないのですか?(これは再帰的な問題です!)
しかし、同様の問題はポインター型では発生しませんでした。
この動作で参照が異なるのはなぜですか?
c++ - 指定子と修飾子の間の相関関係?
const
とC仕様によってvolatile
呼び出されます。cv-qualifier
specifier
とqualifier
( )の正確な違いは何cv-qualifier
ですか?修飾子は指定子でもありますか?
qualifier
左辺値のみの場合は必要ですか?
以外の修飾子は何cv-qualifier
ですか?
私の上記の理解は意味がありますか?
c++ - 配列と右辺値
$4.2/1 - 「「N T の配列」型または「T の境界が不明な配列」の左辺値または右辺値は、「T へのポインター」型の右辺値に変換できます。結果は、配列の最初の要素へのポインタです。」
初期化/宣言時以外に配列型の右辺値を取得する方法がわかりません。
c++ - テンプレートの非型パラメータ+ 左辺値/右辺値
C++03 $14.1/6 - 「非型非参照テンプレート パラメータは左辺値ではありません。」
C++0x $14.2/6- 「非型非参照テンプレート パラメータは右辺値です。」
それを言い換える背後に特定の理論的根拠はありますか?
c - 左辺値が必要
「Lvalueが必要です」というエラーメッセージは実際にはどういう意味ですか?
c++ - C++ const 参照と const の違いは?
違いは何ですか:
および (アンパサンドなし):
どちらも同じ L と R の値を持っているようですが、違いは何ですか?
objective-c - 特定のインデックスで NSMutableArray の値を変更する方法
[array objectAtIndex:i]
は L 値として機能しないため、インデックス i にオブジェクトを設定するために使用することはできません。
c++ - 抽象クラスで左辺値を使用する
抽象クラスの左辺値を持つメソッドの呼び出しに問題があります。クラス定義は次のとおりです。
SimulatorSequenceItemBase には複数のサブクラスがあります。for ループ内には、シーケンス (for ループ) と項目 for があります。
次を使用して、シーケンスをループしてステップをカウントしたい:
ルートは最初にルートを参照し、MoveNext を呼び出すたびに、参照を次の要素に調整する必要があります。
ルートのタイプが抽象的であるため、ルートを割り当てることができないため、上記のコードは機能しません。しかし、root をポインターにすると、MoveNext で値を変更できなくなります。
どうすればこれを修正できますか? コードを変更しても問題ありませんが、考え方は同じである必要があります。
c++ - 左辺値から右辺値への変換について
「単項 & 演算子のオペランドでは、左辺値から右辺値への変換は行われません。」
それが何を意味するのか知っていますか>誰か説明できますか..それをお願いします
元: