問題タブ [using-declaration]
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++ - 宣言の使用に関するC++0xの混乱
この場合はどうなるでしょうか。
関心のある行はです f()
。明らかに、FDISf
によるによるルックアップは成功し、を見つけます。ただし、過負荷解決ではどの候補が考慮されますか?仕様は次のように述べています:10.2
A::f
13.3.1p4
using-declarationによって派生クラスに導入された非変換関数の場合、関数は、暗黙のオブジェクトパラメータのタイプを定義する目的で、派生クラスのメンバーであると見なされます。
これの目的は、単一のクラスの場合、そのようなクラスに独自のメンバー関数と、基本クラス関数の名前をスコープに入れるusing宣言の両方が含まれている場合、過負荷解決中にすべての関数候補が暗黙のオブジェクトで同じクラスタイプを持つことです。パラメータ。しかし、これは上記の例にとって何を意味するのでしょうか?候補者は次のようになりますか?
によるルックアップ結果セットには宣言が1つしかないため、これは間違っているように見えます10.2p7
。これをどのように解釈しますか?
c++ - キーワードを使用した C++
using
次の 2 つのキーワードの使用方法の違いは何ですか。
と
c++ - 宣言とconstオーバーロードの使用
基本クラスに2つのバージョンoperator->
(constでオーバーロード)があるとします。私が言うなら
派生クラスでは、両方のバージョンにアクセスできますか、それとも非定数バージョンにアクセスできますか?
enums - C ++ 0x列挙型クラスですべての非修飾名を使用する方法は?
新しいC++(C++0xまたはC++11)には、新しい種類の列挙型、つまり名前が(とりわけ)列挙型にスコープされる「列挙型クラス」があります。
ただし、特定のスコープで非修飾名を選択的に使用できるかどうか疑問に思います。何かのようなもの:
using E::VAL1
1つの値を記述して取得できるようです。しかし、より大きな列挙型のすべての値に対してそれを実行したくはありません。
asp.net - コードビハインドなしでASP.NETページで「Using」キーワードを使用する方法
asp.netアプリケーションにいくつかの名前空間とそのクラスを含めたいと思います。using
キーワードで可能ですか?
私はこれを持っています:
私はMVC2アーキテクチャを使用しました...
クラスを直接使いたいNewsModel getNewsDetail = ViewData["NewsDetail"] as NewsModel
。
私の質問が貧弱であるならば、ありがとう、そして申し訳ありません。
c# - ファイルから「システムの使用」を削除する価値はありますか?
using System;
私のプロジェクトで一連の POCO を開発していますが、そのうちのいくつかは句を必要としないことに気付きました。
using <module>;
オブジェクトやプロジェクトを未使用のままにしておくと、パフォーマンスやサイズにペナルティはありますか?
これが原因で、クラスが大きくなったり、遅くなったり、肥大化したりすることはありますか?それとも、コンパイラ/オプティマイザはこれを処理するのに十分スマートですか?
c++ - C ++では、名前空間やクラス以外の名前の名前を変更/エイリアスできますか?
私は持っています
参照したいのは
から名前を「名前を変更」または「エイリアス」または「ラベルを変更」したいという意味ですsrc
。
dst_bar
もちろん使用できnamespace dst { typedef src_bar dst_bar; }
ます。src::src_baz
名前をasdst::dst_baz
およびsrc::src_qux
asに変更できる(マクロ以外の)同等のものはありdst::dst_qux
ますか?
私が間違っていない限り、using
ステートメントも名前空間エイリアスも他の2つを達成することはできません。テンプレート化された転送関数を作成することdst_baz()
は可能ですが、のアリティに関する知識が必要ですsrc_baz
。テンプレートtypedefは可能性がありdst_qux<T>::type
ますsrc_qux<T>
が、間接参照により冗長性が追加されます。
FWIW、私のユースケースは、他の人々が簡潔にするために使用できるようsomepackage_someportion_somefuncA
に、名前空間に適したバージョンのようなC名を使用して提供しています。somepackage::someportion::somefuncA
using somepackage::someportion
c++ - using宣言は、using宣言の上で宣言されたオーバーロードのみをインポートしますか?
たとえば、GCC と clang はどちらも次のコードのコンパイルに失敗します。
エラーで:
using-declarationは、using-declaration が表示されるポイントより上で宣言されたオーバーロードのみをインポートし、後で表示される可能性があるもの (ただし、名前の使用前) はインポートしないことを示唆しています。
この動作は正しいですか?
c++ - C ++ 11の「typedef」と「using」の違いは何ですか?
C ++ 11では、次のusing
ような型エイリアスの記述に使用できるようになりましたtypedef
。
私が理解していることから、次のようになります。
そして、その新しい構文は、「テンプレートtypedef」を表現する方法を持つ努力から生まれました。
しかし、最初の2つの非テンプレートの例では、標準に他の微妙な違いはありますか?たとえば、typedef
sは「弱い」方法でエイリアシングを行います。つまり、新しいタイプは作成されず、新しい名前のみが作成されます(これらの名前間の変換は暗黙的です)。
それは同じusing
ですか、それとも新しいタイプを生成しますか?違いはありますか?
c++ - ADL によって選択されたオーバーロードをオーバーライドする
私はoperator<<
自分のバージョンに置き換えたい欠陥のあるライブラリを使用しています。これは、ADL がライブラリの名前空間の引数のメンバーシップに基づいてオーバーロードを選択するイディオムに従います。operator<<
代わりにC++ に自分自身を選択させる方法はありますか?