問題タブ [argument-dependent-lookup]
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++ - カスタムコンテナイテレータは、ADLが名前空間stdを考慮することを保証しますか?
これを実際のコードで使用するつもりはありません。約束します。
標準では、関数の引数が型であり、組み込み型ではないstd
場合に名前空間が見つかることが保証されていますか?container::iterator
container::iterator
typedef
例えば
言い換えると、イテレータクラスはstd
、ADLで考慮されないような名前空間で定義できますか?
前もって感謝します。
c++ - std :: pairを専門とするために、演算子>>をどこで定義する必要がありますか?
次のプログラムを検討してください。
ADLが名前空間stdで演算子>>を検出するとすぐに、stdで検出された演算子が実行可能な候補であったかどうかに関係なく、グローバルスコープを考慮しなくなるため、これはコンパイルに失敗します。これはかなり不便です。演算子>>の宣言を名前空間std(技術的に違法)に配置すると、コードは期待どおりにコンパイルされます。point
std名前空間のテンプレートの特殊化としてタイプ定義するのではなく、独自のクラスを作成する以外に、この問題を解決する方法はありますか?
前もって感謝します
air - AIR: Adobe Air Debug Launcher が動作を停止しました...ログはありますか?
AIR SDK ランタイム 2.7 を搭載した Windows 7 64 ビット ホーム ファミリで AIR デバッグ ランチャー (adl) に問題があります。クラッシュすることがあり、それが私のソフトウェアによるものかどうかを理解する可能性はありません。クラッシュした理由を知るためにログを取得する方法を知っている人はいますか? クラッシュすると、デバッガーが消えてしまい、ソフトウェアにバグがあった場合、どこにバグがあったのかわかりません...
win7 の別の SDK でソフトウェアをテストしてきましたが、まだいくつかの adl クラッシュがありました。ソフトウェアは winXP で正しく動作しています。win7 と AIR に関係があると思いますが、何が起こっているのかについての情報を見つけるにはどうすればよいですか?
ヒントをありがとう...
Windows のクラッシュ ダンプ ファイルを見つけることができました。次に、windbg をダウンロードします。そして、エアデバッガーランチャーのデバッグを開始しました...しかし、行き詰まりました...シンボルファイルなしではデバッグがうまくいきません...それ以上のことはできないと思います。このエラーは、整数をユニコード文字列に変換しようとしたために発生しましたが、この関数が呼び出された理由、誰によって、いつ呼び出されたのかわかりません...
クラッシュしないこともあります。
c++ - GCC、Clang、およびIBMは、テンプレートパラメーターに依存する名前ルックアップを実行する方法について意見が分かれています。どちらが正しいですか?
IBMのWebサイトで見つけたこの例を考えてみましょう。
何を印刷しますか?
私がこの例を採用したIBMのドキュメントは、ここから入手でき、次のように出力されます。
これの理論的根拠は、テンプレートパラメータに依存する名前ルックアップがのインスタンス化の直前に実行される
i()
ため、は検出されますh(double)
が、は検出されないということh(int)
です。GCC 4.4.1を使用してコンパイルすると、次のように出力されます。
GCCは、他のすべてがコンパイルされた後、テンプレート内のテンプレートパラメータに依存する名前を検索しているように見えるため、との両方
h(double)
を検出h(int)
し、後者を優先します。Clang 2.8を使用してコンパイルすると、コンパイルに失敗します。コンパイラエラーは次のとおりです。
Clangは、テンプレートが宣言された時点でテンプレート内のテンプレートパラメータに依存する名前を検索しているように見えるため、どちら
h(double)
も検出されませんh(int)
。
どちらが正しいですか?
c++ - タプルから要素を取得する
重複の可能性:
ADL が関数テンプレートを見つけられないのはなぜですか?
呼び出しget
は、引数依存のルックアップを呼び出していないようです:
g++ 4.6.0 は次のように述べています。
Visual Studio 2010 は次のように述べています。
なんで?
c++ - ADL中に関数テンプレートの優先度を最も低くするにはどうすればよいですか?
foo
呼び出しに一致するものが他にまったくない場合にのみ適用できる汎用バージョンの関数を提供したいという問題があります。次のコードを変更して、よりもlast_resort::foo
一致しないようにするにはどうすればよいですか?の定義を変更する必要がなく、の引数の型を保持する解決策を見つけたいと思います 。derived::type
base::foo
bar
last_resort::foo
c++ - ADL対応のトレーリングリターンタイプ、またはnoexcept仕様を作成するにはどうすればよいですか?
コンテナテンプレートなどを書いていると想像してみてください。そして、それに特化する時が来ましstd::swap
た。善良な市民として、私は次のようなことを行うことでADLを有効にします。
これは非常にきちんとしていて、すべてです。例外仕様を追加したいまで。swap
のスワップがであるnoexcept
限り、私のはT
ですnoexcept
。だから、私は次のようなものを書いているでしょう:
問題は、 ADLで発見されたまたはswap
である必要があるということです。これをどのように処理しますか?swap
std::swap
c++ - 「引数依存のルックアップ」(別名ADL、または「ケーニッヒルックアップ」)とは何ですか?
引数依存のルックアップとは何かについての良い説明は何ですか?多くの人がそれをケーニッヒルックアップとも呼んでいます。
できれば知りたいのですが:
- なぜそれは良いことですか?
- なぜそれは悪いことですか?
- それはどのように機能しますか?
linux - AIR Linux - ADT が AIR ランタイムのロードに失敗しました
ubuntuにair-sdkを追加したところ、adlは機能していますが、adtを使用しようとすると、次のようになります。
AIR ランタイムの読み込みに失敗しました
これで何ができますか?
.air ファイルから .dbm へのネイティブ インストーラーを作成するには、adt が必要です
"adt -package -target native my-app-name.dbm my-app-name.air"
air-sdk を変更する前は、常に問題なく動作していました。
前もって感謝します
c++ - テンプレートの修飾された名前と修飾されていない名前のルックアップの動作が異なる
このコードはどのように動作する必要がありますか?関数で修飾名を使用すると、オーバーロードを無視してジェネリック関数を呼び出しcall_read()
ます。修飾されていない名前を使用すると、最初にオーバーロードが呼び出され、次に汎用バージョンが呼び出されます。違いは何ですか?GCCのバグですか?
また、基本的なタイプでは動作が異なることに気づきました。以下のコードを参照してください
オーバーロードされた関数を2回呼び出すことになっていますが、そうではありません。ここで結果を参照して くださいhttp://codepad.org/iFOOFD52