問題タブ [loki]
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++ - 2 つの Loki ファンクター間で状態を持つファンクターを適切に共有するにはどうすればよいですか?
operator()
コールバックの目的で Loki::Functor を使用しており、 2 つのコールバック間でファンクター (適切なメンバー関数が定義されたオブジェクト) を共有したいと考えています。このファンクターは、両方のコールバックが参照できるように状態を保持する必要があります。
簡単なテストでは、値渡しのファンクターで Loki ファンクターを構築すると、メンバー関数ポインター コンストラクターを使用した場合とは異なる結果になることが示されています。
f2
は、メンバ関数ポインタとインスタンスへのポインタを使用すると、 とは異なる動作になることを示していf1
ます。次にf3
、loki ファンクター間でファンクターを共有するための可能な方法としてそれ自体を提案します。
f1
Loki::Functor でサポートされている「コピー セマンティクス」に関連していると思います - ファンクターのコピーが作成され、 の新しい値を持ちますが、私が望むことを行います - 実際のインスタンスは loki ファンクターによって参照され、したがって共有されx
ますそれらの間の。f2
f3
f3
したがって、ファンクターの同じ実際のインスタンスBar
を 2 つの loki ファンクター ( f2
& ) にバインドする最良の方法があるかどうか、または構文f3
に沿ってそれを行うためのより良い/よりクリーンな方法があるかどうかを知りたいですか?f1
編集: 時代遅れの Loki を使用している理由を尋ねる人もいるかもしれません。これは、グローバルな静的が厳密に禁止されている、制約のある開発環境で必要なものを提供します (ただし、loki/Functor.h から Small Object シングルトンを削除する必要がありましたが、それは簡単でした)。代替の一般化されたファンクター ライブラリの提案があれば、制約について詳しく説明します。
c++ - Loki マルチメソッドは C++11 に組み込まれましたか?
Andrei Alexandrescuが適用したModern C++ Design Generic Programming and Design Patterns Appliedと、解決しようとしている問題を正確に扱っている multimethods に関する第 11 章を読んでいます。本のすべてのソース コードは、Lokiという名前のライブラリで公開されています。
問題は、この本がかなり古く (2001 年) 、C++11 ではもはや当てはまらない制限(たとえば、テンプレート パラメーターの数を可変にできないなど) を扱っていることです。Loki が C++11 を使用して書き直されているかどうか調べてみましたが、最後の変更は 2009 年であり、Andrei Alexandrescu のホームページには更新がありません。しかし、いくつかの調査を行った結果、Loki は標準ライブラリに組み込まれるという意味で Boost のようなものであるという印象を受けました。
マルチメソッドのイディオムまたはその一部は C++11 に採用されていますか?
c++ - 呼び出し関数が静的かどうかの検出
シングルトンから非 const メンバー関数へのアクセスを制御しようとしています。シングルトンの非定数メンバー関数へのアクセスを許可されているすべてのクラスの型リストを維持しています。BOOST_TYPEOF(this) を使用して、クラスがタイプリストに存在するかどうかをコンパイル時に検出することを計画しています。ただし、このチェックは、静的メンバー関数または非クラス関数からは無効です。コンパイル時にこれを検出する方法はありますか。
c++ - Loki の SmallObjAllocator of of memory
loki ライブラリは、本質的に C++ でジェネリック プログラミングを使用します。メモリのスモール オブジェクト アロケータ (Loki::SmallObjAllocator) を使用してコードを作成しました。Visual C++ 2010 を使用しています。
私はそれらのエラーを受け取ります:
c++ - Loki と愚かな C++ ライブラリの関係は?
Andrei Alexandrescu が彼の 'ScopeGuard' メカニズムの 2 つのバージョンを発表していることに気付きました。そして、最初のバージョンは Loki ライブラリの一部であり、2 番目のバージョンは Facebook の愚かなライブラリの一部であり、ごく最近までAlexandrescu が雇用されていました(そのニュースを指摘してくれた @JerryCoffin に感謝します)。しかし、Loki の Web サイトや Loki のウィキペディアのページでは、この関係について何も述べられていません。愚かな Readme.mdもそうではありません。
では、ライブラリは私が上で説明したものを超えて関連していますか?
c++ - ScopedGuard の「未使用変数」を無効にする
Andrei Alexandrescu と Petru Marginean のスコープ付きガード オブジェクトで遊んでいます
-Wall -Werror でコンパイルすると、「未使用の変数」エラーが発生します。次のコードはLOKIから取得したものです。
問題は使用法にあります:
それはちょうどです
私は対処の最後にいくつかのアクションを得るためにマクロを使用しています:
このようにして、ユーザーは単に呼び出すことができます
このマクロは、未使用の警告を無効にするのを困難にします。
-Wno-unused-variableを使用せずに、誰かがこれをよりよく理解し、これに対する解決策を提供できますか?