問題タブ [language-specifications]

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 に答える
126 参照

c++ - C++ テンプレートのプロトタイプの同等性

以下は、実行をコンパイルし、期待どおりに実行します。

サンプル出力 (実際の出力は、エンディアンと整数サイズに依存する場合があります):

以下はコンパイルされず、 の実装のプロトタイプがcopyThing()クラスで宣言されたものと一致しないというエラーが表示されます。

2 つの唯一の違いは、その実装でsizeof(UNSIGNED_TYPE)>=sizeof(int)が に置き換えられたことです。sizeof(int)<=sizeof(UNSIGNED_TYPE)

明らかに、2 つのステートメントは意味的に同等です。テンプレート プロトタイプが等しいと判断される方法の正式な定義はどこにありますか?

それは明らかに、意味論的同等性ではなく、ある程度の語彙的同等性です。

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

c# - C# 言語仕様 6.0 はどこにありますか?

C# 5 言語仕様の場所はわかっていますが、C# 6 言語仕様はどこにも見つかりません。

C# 6言語仕様はどこにありますか?

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

c++ - Sean Parent が GBC - Implement Complete Types の講演で言及している欠陥レポートは何ですか

Sean Parent のトーク Goals for Better Coding - implement Complete Types at 44:10-44:50 で、Sean は

この [パラメーターを値で受け取るコピー代入演算子を持ち、move コンストラクターも持つクラス] を別のクラスのメンバーとして配置すると、仕様の言語がデフォルトの move コンストラクターを取得しないため、そのクラスはデフォルトの move コンストラクターを取得しません。 「それが移動構築可能な場合」と言うと、「このシグネチャを持つ移動コンストラクタがあります」と表示されます。欠陥があります。頭ではわかりません。

Sean が言及している実際の欠陥レポートを誰か教えてもらえますか?

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

c# - オプションのパラメーターを持つコンストラクターはそれをオーバーロードしますか?

コードの例を次に示します。

C# 5 Language Specification Section 1.6.7書かれています:

インスタンス コンストラクターはオーバーロードできます。たとえば、List クラスは 2 つのインスタンス コンストラクターを宣言します。1 つはパラメーターを持たず、もう 1 つは int パラメーターを受け取ります。

ただしIL、このコード用にコンパイルされたものには、2 つのコンストラクターが含まれていません。次の宣言のみが含まれます。

これは、オプションのパラメータがCLRlevel であり、 によって定義されていることを意味します[opt]

2 つのオーバーロードされたコンストラクターでこのオブジェクトをCLR表現できるランタイムがない場合。

たとえば、オプションのパラメーターをコンパイルせずに 2 つの別個のコンストラクターを作成している場合、2 つの-sILが含まれます。.ctor

明確にしたいのですが、言語仕様がそれを言っているのであればclass declares two instance constructors、コンパイル済みILに 2 ctor-s も含まれるという意味ではありません。

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

c# - 引数リストの評価後に null チェックが実行されるのはなぜですか?

C# 言語仕様7.4.3 関数メンバー呼び出しによると、関数メンバー呼び出しのランタイム処理は次の手順で構成されます。ここで、M は参照型で宣言されたインスタンス関数メンバー、E はインスタンス式です。

  1. Eが評価されます。この評価で例外が発生した場合、それ以上の手順は実行されません。
  2. 引数リストが評価されます。
  3. E の型が値型の場合、E を型オブジェクトに変換するためにボックス化変換が実行され、次の手順で E は型オブジェクトであると見なされます。この場合、M は System.Object のメンバーにしかなれません。
  4. E の値が有効であることがチェックされます。E の値が null の場合、System.NullReferenceException がスローされ、それ以上の手順は実行されません。
  5. 呼び出す関数メンバーの実装が決定されます...など

nullチェックが2番目のステップではないのはなぜですか? Eがnullの場合に引数リストを評価するのはなぜですか?

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

javascript - オブジェクトのキーと値のペアでキーを指定するときに文字列を使用する

オブジェクトのキーと値のペアでキーを指定する場合 (以下の表記を使用)、インタープリターは (明らかに) 文字列の使用を許可します。

ただし、関数 (文字列を返す) を使用して動的にキーを指定することはできません。

その表記法を使用する場合、文字列は静的な値でなければならないと思います。

しかし、それに関するJavaScript言語仕様が見つかりません...

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

c++ - C/C++ 標準に従って、「'」は「\'」と同じですか?

コードは VS 2015 でコンパイルできます。

私はただ疑問に思います:

2 つの方法は両方とも C および/または C++ 標準に準拠していますか?