問題タブ [static-functions]

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 投票する
3 に答える
91 参照

c++ - 空の関数の引数はキャッシュにロードされますか?

C++ コンパイラが空の (静的) 関数を最適化することは知っています。

-Dその知識に基づいて、(コンパイラのオプションを使用して) 識別子が定義されるたびに最適化されるべきコードを書きました。次のダミーの例を検討してください。

望ましい動作は次のとおりです:NO_INC識別子が定義されているときはいつでも (-DNO_INCコンパイル時に使用)、すべての呼び出しをT::inc(...)最適化する必要があります (空の関数本体のため)。それ以外の場合、 への呼び出しは、T::inc(...)特定の value によるインクリメントをトリガーする必要がありますi

これに関して2つの質問があります:

  1. 空の関数への呼び出しが最適化されているため、オプションT::inc(...)を指定したときに への呼び出しがパフォーマンスに悪影響を与えないという私の仮定は正しいですか?-DNO_INC
  2. a関数本体は空ですが、変数 (およびi) が呼び出されたときにまだキャッシュにロードされているのではないかと思います (T::inc(a, i) それらがまだ存在しないと仮定します)。

アドバイスをありがとう!

0 投票する
3 に答える
1051 参照

c++ - このような静的メンバー関数で静的メンバー変数を呼び出せないのはなぜですか?

みんな!以下のようなコード スニペットがあります: testcase.cpp

「ビルド」ボタンをクリックすると、出力メッセージは

エラー LNK2001: 未解決の外部シンボル "public: static int Test::b" (?b@Test@@2HA) 1>B:\PROGRAMPROJECT\visual 2015 pro\testcase\testcase\x64\Debug\testcase.exe : 致命的なエラーLNK1120: 1 つの未解決の外観

しかし、コードの場所を次のように変更すると:

それはうまくいきます!理由がわかりません。誰か助けてください。私のIDEはvs pro 2015 + windows10です。

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

templates - if ステートメントが条件の評価に失敗しました

入力用と出力用の 2 つの列挙子を格納する基本クラスがあります。どちらも静的な 2 つのメンバー関数があります。最初の関数は、入力に基づいて値を返す単なる静的関数です。constexpr 値を返す constexpr 関数テンプレートである 2 番目の関数を呼び出します。ここでクラス全体を見ることができます。

コンパイル時に値がわかっているときに関数テンプレート自体を使用すると、次のようになります。

私は正しい出力を得ています:

-出力-


ただし、実行時に値が決定されるときに非 constexpr メンバー関数を使用しようとすると、何らかの理由で非 constexpr 関数が if ステートメント内のコードを実行できません。

キーボードから入力した値に関係なく、、、0または1ifステートメント2内のコードの実行に失敗しています。Foo::update()'s常に の値を出力しています123

それが役に立ったら; を使用Visual Studio 2017 CE v15.9.4しており、言語を に設定してコンパイルしていISO C++ Latest Draft Standard (/std:c++latest)ます。

if statementsこのコードがを true に評価できず、スコープ内でコードを呼び出す理由がわかりません。