問題タブ [restrict-qualifier]

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.

0 投票する
1 に答える
69 参照

pointers - 制限されたポインターで未定義の可能性がある動作

4 つのコード フラグメントを次に示します。このコードが明確に定義された動作を生成することが保証されている (または保証されていない) のはなぜですか?

制限された「循環参照」:

外側から内側への代入:

関数に渡す:

ポインター演算ループ:

0 投票する
1 に答える
260 参照

c++ - restrict-pointer-type テンプレート引数と、テンプレート化された基本クラスの仮想メソッドのオーバーライド

以下は、コンパイルしてリンクする必要があると思いますが、そうではありません。

コンパイラ出力:

両方の場所で修飾子を削除する__restrict__と、コンパイルとリンクが行われます。私は何を間違っていますか?

ノート:

  • これは、restrict 修飾子とテンプレートの両方に関する SO (執筆時点) に関する唯一の質問です。おかしいですね。
  • でGCC 4.9.3を使用してい--std=c++11ます。
0 投票する
1 に答える
299 参照

c++ - このポインタに制限修飾子を適用する方法

__restrict__GCC/Clang の修飾子をthisクラスのポインターに適用するにはどうすればよいですか?
この質問は、Richard Powell の CppCon 2018 講演「How to Argue(ment)」に触発されたものです。同様の質問「restrict qualifier on member functions (restrict this pointer)」を見ました (すべてのコードはCompiler Explorerにあります) 。

上記のコードは、次のアセンブリを生成します。その中で、ポインタvalueを介して 2 回ロードする必要があることがわかります。thisこれは理にかなっています。これは、C から継承された C++ と制限修飾子により、プログラマーが動作をオフにできることの結果です。ポインターのrestrict機能を有効にする方法が見つかりません。this

コンパイラ エクスプローラーのページで、__restrict__2 番目のロードを回避するために使用するメソッド引数の例を示します。__restrict__構造体参照を関数に渡し、使用して 2 番目のロードを省略した例もあります。

thisコンパイラーが、プログラマーがメソッドの引数で暗黙のポインターに言及できるようにする世界を想像できます。コンパイラは、thisポインターへの修飾子の適用を許可することができます。例については、以下のコードを参照してください。

フォローアップの質問として、C++ 標準または C++ ガイドラインにthis、restrict 修飾子を決して持たないようにするものはありますか?