問題タブ [compile-time-constant]
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.
d - D の固定サイズのビット配列
コンパイル時のサイズのビット配列 (スタック上) が必要な場合、代替手段は何ですか?
みたいなことを考えている
とbt
同じようにcore.bitop
私のニーズに合うでしょう。
素敵なブール演算とともに、このためのテンプレートをすでに書いた人はいますか?
c++ - より簡潔な呼び出しのために、コンパイル時のゲッターを実装する方法は?
呼び出しをより簡潔にする方法でコンパイル時のゲッターを実装したいと考えています。から再帰的に継承する非型 ( unsigned int N
) クラス テンプレートがあります。Everyには と呼ばれる独自のメンバーがあり、対応する の値に初期化されます。ベースケースは. たとえば、オブジェクトにはと呼ばれる 6 つの があり、を通じて値が付けられます。コンパイル時の getter を実装したいのですが、プロトタイプの先頭に a を追加するほど簡単ではありません。foo
foo<N - 1>
foo
enum
number
N
foo<0>
foo<5>
enum
number
0
5
at
constexpr
g++ 4.8 では、エラーのインスタンスがいくつか発生します: error: 'index' is not a constant expression
、とりわけ。残りはただ従うだけです。すべてのクライアント コードがat
整数リテラルのみで呼び出した場合でも、getter はコンパイルされません。なんで?
いずれにせよ、私の解決策は、コンパイル時の整数ラッパーを実装することでした。これは単純に非型 ( unsigned int N
) クラス テンプレートctint
(コンパイル時 int の略) であり、そのenum
メンバーmem
は次のように初期化されますN
。
したがって、foo<N>
およびfoo<0>
の getter メソッドをそれぞれ次のように置き換えます。
と
作品:
しかし、関数呼び出しを冗長にします。<iostream>
何かが機能することを示すが、それを機能させるのに役立たない部分 (例: ) を除いて、ライブラリを使用しない実装が必要です。<>
ゲッターが、呼び出しで型名をオプションで省略したり、構文やスペルを省略したりできるようにしたいのですが、プロトタイプや定義では必須ではありません。sを巻き込みたくないarray[]
。それが無理なら次善の策を知りたいです。
c - clang に「整数定数のオーバーフロー」警告はありますか?
次のスニペットを検討してください。
Clang でこれらの警告 (/エラー) を受け取ることはできますか? どのように?どのバージョンから始めますか?
ありがとう、シプリアン。
scala - コンパイル時に定数がコンパイル時の定数であることをテストする方法はありますか?
算術式がコンパイル時の定数にコンパイルされるかどうかを知ることがいかに難しいかfinal val
、そしてコンパイル時の性質を誤って破ってしまうことがどれほど簡単かを考えると...
コンパイル時に、たとえば複雑な算術式からコンパイラが実際にコンパイル時の定数を作成したことを確認する簡単な方法を考えられる人はいますか? これはある種の注釈またはマクロかもしれないと推測していますが、もっと単純なものがあるかもしれません。たとえば、次のようなものかもしれません。
可能でしょう。
c++ - 「int サイズ = 10;」定数式を生成しますか?
次のコードは、gcc 4.8 および Clang 3.2 でコンパイルされます。
C++ 標準の 8.3.4/1 は、配列のサイズは整数定数式でなければならないと述べていますが、そうでsize
はないようです。これは両方のコンパイラのバグですか、それとも何か不足していますか?
最新の VC++ CTP は、次の興味深いメッセージでコードを拒否します。
size
興味深いのは、それがゼロであるとどのように考えているかです。しかし、少なくともコードは拒否されます。gcc と Clang は同じことをすべきではありませんか?
c++ - プライベート内部クラスのサイズを公開する
内部クラスのサイズでコンパイル時定数を公開する必要があります。そうするために、次のコードを試しました:
私の問題は、PrivateSize
一部のコンパイラで署名され、他のコンパイラでは署名されていないことです。署名された型と比較すると、これに関する警告が表示されます。私の知る限り、の基になる型は実装定義であり、強制的にorenum
にすることはできません。signed
unsigned
コンパイル時定数としてsizeof(A::Private)
外部に公開する方法を知っていますが、クラスをプライベートに保ちますか? コードは一部の古いコンパイラで使用されるため、使用できないことに注意してください。A
Private
constexpr
c# - const int と const someStruct の C# の違い。const someStruct が「コンパイル時の定数」ではないのはなぜですか?
「コンパイル時定数」とは正確には何なのか知りたいです。ここから、それは述べています
const としてマークされたメンバーのすべてのインスタンスがコンパイル中にその値に置き換えられ、読み取り専用メンバーは実行時に解決されることを意味します。
したがって、colorBlack を const として持っている場合、それはコンパイル時の定数になると想定しましたが、コンパイラはそうではないと教えてくれます。しかし、「const int some int = 0;」について文句はありません。コンパイル時定数です。
なんで?
gcc - GCC などの C/C++ コンパイラは、通常、モジュロを一定の 2 乗で最適化しますか?
次のようなものがあるとしましょう:
一般に、GCC などのほとんどの C/C++ コンパイラによってx % 32
縮小されますか?x & 31