問題タブ [dependent-name]

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

c++ - 条件演算子の戻り値の型と 2 フェーズ ルックアップ

次のスニペットを検討してください。

この場合、fatへの関数呼び出し// 1はフェーズ 1 で検索する必要があると思います。その引数の型は明白であり、スコープ内の唯一のものにDerived&解決されるからです。f(Base&)

Clang 3.8.0 は私に同意しますが、GCC 6.1.0 は同意せず、がピックアップさfれるフェーズ 2 までのルックアップを延期します。f(Derived&)

どのコンパイラが正しいですか?

0 投票する
0 に答える
185 参照

c++ - テンプレートクラスの従属型名をフレンドリにする

Device、、、Registerおよびの3 つのクラスがWriteOnlyPolicy次のように定義されています。

デバイス

登録

書き込み専用ポリシー

RegisterWriteOnlyPolicyこのスキームで実際にインスタンス化されることはありませんが、ポリシーでクラスの保護された関数を呼び出す必要がありますwriteDeviceRegister。デバイス固有の実装ではなく、クラスのユーザーDeviceにのみ関数を公開したいので、その関数を公開したくありません。write

Device友達になりたいRegister::access_policy(この場合はWriteOnlyPolicy、テンプレート引数として指定されたクラス) を許可するために、テンプレート クラスの依存型名を友達にする構文がわかりません。これは可能ですか?

などfriendのクラスに宣言を入れることを考えましたDevice

トリックを行いますが、エラーが発生します

エラー: ';' の前に unqualified-id が必要です トークン

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

c++ - テンプレート クラスに基本クラスがないのに、なぜ「this」は型依存の式なのですか?

次のコードは、エラーなしでコンパイルできます。

そして、それthisは型に依存する式であるためwhatever、実際のテンプレート引数が判明するまで名前の検索が延期されるためであることはわかっています。この場合、メンバー関数f()は使用されないため、 のインスタンス化はA<T>::f存在せず、 の名前検索whateverは実行されません。

thisクラステンプレートに次のようなタイプ依存のベースがある場合、それはタイプ依存であることを理解できます。

テンプレート クラス の定義を解析するとき、そのベースの型を知るAことは不可能です。それどころか、メンバー関数がどこかで使用されるとすぐに、最初の例で合法になる可能性は見当たりません。this->whateverB<T>whateverthis->whateverf

this->whateverでは、最初の例のいくつかの点で合法である可能性はありますか? thisそうでない場合、その場合に型依存の式として扱われるべき他の理由はありますか?

0 投票する
0 に答える
57 参照

c++ - 明示的なパラメーターを使用して、テンプレート化された関数内からテンプレート化されたクラスのテンプレート化されたメンバーを呼び出す

GCC は、行 A では小なり演算子を認識しますが、行 B では認識しません<

書く必要がないように、GCCがMSVCと同じように行Aを処理できる「リラックスモード」がありますm.template f<1>(1)か?