問題タブ [constant-expression]
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++ - `*' は定数式に使用できません
コンパイル中にこれらのエラーが存在する理由を誰かに説明してもらえますか?
エラーは次のとおりです。
助けてくれてありがとう:)
f# - F# でリスト リテラルを作成できません
私は次のタイプを持っています
そして、次のようなコンパイル時エラーが発生します。
これは有効な定数式またはカスタム属性値ではありません
ここで何が問題なのか本当にわかりません。
c++ - 定数式で呼び出された `static constexpr` 関数は...エラーですか?
次のコードがあります。
sincefoo()
はstatic constexpr
関数であり、bar
宣言される前に定義されているため、これは完全に受け入れられると思います。
ただし、g++
次のエラーが表示されます。
定数式で関数を呼び出す機能がの要点であるconstexpr
ため、これは役に立ちません。
clang++
はもう少し役に立ちます。noexcept
への引数は定数式でなければならないというエラー メッセージに加えて、次のように表示されます。
それで...これは2パスコンパイルの問題ですか?コンパイラーがクラス内のすべてのメンバー関数を定義する前に宣言しようとしているという問題はありますか? (クラスのコンテキストの外では、どちらのコンパイラもエラーをスローしないことに注意してください。) これには驚きました。static constexpr
直感的には、クラスの内外を問わず、すべての定数式でメンバー関数を使用できない理由がわかりません。
c++ - assert は定数式で使用できますか?
-macro assert
from<cassert>
は、条件が満たされていることを確認する簡潔な方法を提供します。引数が に評価された場合、true
それ以上の効果はありません。ただし、その場合、その呼び出しを定数式内でも使用できますか?
c++ - int a=1、は || です。1 定数式?
N4527 5.20[expr.const]p5
定数式は、値が定数式 (以下で定義) の許可された結果であるエンティティを参照する glvalue コア定数式、または値がオブジェクトである prvalue コア定数式のいずれかです。 :
— 参照型の各非静的データ メンバーは、定数式の許可された結果であるエンティティを参照します。
— オブジェクトまたはサブオブジェクトがポインター型の場合、静的ストレージ期間を持つオブジェクトのアドレス、そのようなオブジェクトの末尾を過ぎたアドレス (5.7)、関数のアドレス、または null ポインター値が含まれます。
エンティティは、それが一時オブジェクトではないか、値が上記の制約を満たす一時オブジェクトである静的ストレージ期間を持つオブジェクトである場合、または関数である場合、定数式の許可された結果です。
a || 1
定数式ですか?
N4527 5.20[expr.const]p2
条件式 e は、抽象マシン (1.9) の規則に従って e を評価した場合に、次の式のいずれかが評価されない限り、コア定数式です。
(2.7) — 適用されない限り、左辺値から右辺値への変換 (4.1)
(2.7.1) — 定数式で初期化された、前に初期化された完全な不揮発性 const オブジェクトを参照する、整数型または列挙型の不揮発性 glvalue、または
(2.7.2) — 文字列リテラルのサブオブジェクトを参照する不揮発性の glvalue (2.13.5)、または
(2.7.3) — constexpr で定義された不揮発性オブジェクトを参照する、またはそのようなオブジェクトの可変でないサブオブジェクトを参照する、非揮発性の glvalue、または
(2.7.4) — 有効期間が e の評価内で始まる不揮発性オブジェクトを参照する、リテラル型の不揮発性 glvalue。
コア定数式ですかa || 1
?