問題タブ [constexpr]

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

c++ - constexpr 関数で一時変数を使用するにはどうすればよいですか?

これは私がやりたいことの単純化されたバージョンです。

私のバージョンでは、a+b はもっと複雑なので、3 回カット アンド ペーストしたくありません。3*(a+b) を使用することも、実際の関数の有効な解決策ではありません。代数ではなく、構文に関連する質問を維持しようとしています。a+b を独自の constexpr 関数に移動することで機能させることができますが、そうでなければ役に立たない関数で名前空間を汚染したくないのです。

0 投票する
2 に答える
3494 参照

c++ - static const getterのインラインとconstexpr?

次のコードで、外部使用に最適な最適化を可能にする関数はどれですか?その理由は? 「バージョン 4」は C++ 2011 で許可されていますか?

どうもありがとうございました。

0 投票する
4 に答える
6356 参照

c++ - 定義されているクラスと同じタイプの静的constexprメンバー

クラスCにタイプCの静的constexprメンバーを持たせたいのですが、これはC ++ 11で可能ですか?

試行1:

g ++ 4.7.0によると:「不完全な型の無効な使用」はFoo()呼び出しを参照しています。

試行2:

ここで問題となるのは、クラス定義内のconstexprメンバーの初期化子がないことです。f

試行3:

Foo::fここで、g++は。の違いの再宣言について文句を言いconstexprます。

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

c++ - 配列宣言の定数式

C++入門書はそれを言います

配列の次元はコンパイル時に認識されている必要があります。つまり、次元は定数式である必要があります。

別のポイントは、

私は、次の宣言が失敗することを期待します

それでも、そうではありません。コンパイルして正常に実行します。

また、奇妙なこと++count;に、配列宣言の後も問題は発生しません。

-std=c++11フラグを付けてコンパイルされたプログラムg++4.71

何故ですか?

0 投票する
7 に答える
9854 参照

c++ - C ++ 11:配列のコンパイル時間計算

constexpr関数fがあるとします。

そして、コンパイル時に既知のconstintNがあります。

また

また

あなたの答えによって必要に応じて。

int配列Xが欲しい:

関数がコンパイル時に評価され、Xのエントリがコンパイラによって計算され、結果がX初期化子リストで整数リテラルを使用した場合とまったく同じようにアプリケーションイメージの静的領域に配置されます。

これを書く方法はありますか?(たとえば、テンプレートやマクロなどを使用)

私が持っている最高のもの:(Flexoのおかげで)

0 投票する
2 に答える
4563 参照

c++ - constexprとコンパイル時の数学関数のテンプレート?

私はC++2011の新しいキーワードconstexprとかなり混乱しています。コンパイル時関数(特に数学関数)をコーディングするときに、constexprを使用する場所と、テンプレートメタプログラミングを使用する場所を知りたいです。たとえば、整数のpow関数を使用する場合:

2番目と3番目の関数は同等ですか?最善の解決策は何ですか?同じ結果が得られますか:

  • xがコンパイル時にわかっている場合
  • コンパイル時にxが不明な場合

constexprを使用する場合とテンプレートメタプログラミングを使用する場合

編集1:テンプレートの特殊化を含むようにコードが変更されました

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

c++ - numeric_limits の最小値/最大値は constexpr ですか?

C++11 標準では、とはテンプレートで使用できる定数式または である必要があるnumeric_limits<T>::minと指定されていますか?maxstatic_assert

より一般的には、標準に従って定数式である関数のリストを見つける方法は?

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

c++ - 三元を持つ単純なC++11階乗階乗は、最大テンプレート深度を超えています

特殊化を使用してコンパイル時の階乗関数を作成する場合、次のコードで十分であり、次の結果として120を正しく提供しますfact1<5>()

ただし、次のコードのように、単一の関数本体と3項演算子を使用すると、G++4.7とClang++3.2の両方がテンプレートの最大インスタンス化の深さを超えます。1から返されることはないようfact2です。この定義がfact2<5>()120を返さないのはなぜですか?

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

c++ - コンパイル時定数での文字列リテラルの添字

重複の可能性:
文字列リテラルを定数式で添え字化できますか?

文字列リテラルに添え字を付けると、結果はコンパイル時定数になりますか?つまり、次のコードは有効ですか?

GCC 4.7はそうだと言っていますが、この問題に関して標準は何と言っているのでしょうか?

'a'不思議なことに、文字列リテラルは文字列化演算子の結果であるため、単に書くことはできません。一部のコンパイラにはcharizing演算子がありますが、これは単なる拡張機能です。