問題タブ [vmat]
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.
templates - なぜこのファンクターの operator() は末尾の const 修飾子が必要なのですか?
何年も不在だったので、C++ (技術的には Objective-C++) に戻ってきますので、ご容赦ください。テンプレートを使用して、そうでなければ大量のカット アンド ペースト コードを必要とするソリューションを実装しようとしています。以下の抜粋は、この取り組みの基本的な要点を示しています。
私の質問は、「なぜ?」で終わるコメントから明らかなように、なぜconst
ここで宣言が必要なのですか? SwapA(...)
省略されている場合、コンパイラは、 の本体に呼び出しサイト に一致するメソッド シグネチャがないことを報告しloadFromOperation
ます。
SwapA
として明示的に宣言されていれば、これは理解できますconst
が、そうではありません。その操作は状態の変更に依存していないため、明らかにそうである可能性がありますが、それは重要ではありません。
また、このコードには別の有益な視点がありますが、より熟練した C++ 実践者が提供したいと考えているスタイルやその他の批評を歓迎します…</p>
memory-management - STL std::vector を __block 変数として使用するとメモリが破損するのはなぜですか?
しばらく時間と労力を費やした後、コード内のメモリ破壊バグをこの関数に突き止めました。__block vector<int>
2 つの変数を、ストレージを提供するスタック割り当て配列と、ブロック内のコードが配列にアクセスできるようにする変数の組み合わせに置き換えることで、メモリ破壊を止めました{klist|dlist}Ptr
(以下の推奨コードを参照)。これは、実際に問題があるのは の使用であると確信しています__block vector<int>
。
[指摘しておきますが、これは純粋に反復的なアルゴリズムです。再帰はありません。このブロックは、左右のサブツリーを処理するために必要なコードの重複を避けるためにのみ存在します。]
明らかな疑問は、なぜ STLvector
オブジェクトがここでメモリ破損を引き起こしているのかということです。__block
彼らは動的なサイズ変更すら行っていません... C++ オブジェクトを変数として使用することは単にサポートされていないのでしょうか?
c++ - Mountain Lion の現在の Xcode 4.6.1 ツールチェーンで _LIBCPP_DEBUG2 を有効にすることはできますか?
このスレッドは、clang の libc++ のデバッグ モードについての初期の議論であり_LIBCPP_DEBUG2
、コンパイラ コマンドで定義することによって有効にする予定でした。誤って割り当てられたものとの戦いを終えたばかりなstd::vector<>
ので、デバッグビルドでこれをオンにできることに興味があります。
プリプロセッサ マクロのビルド設定に単純に追加しようとする_LIBCPP_DEBUG=1
と、リンク フェーズでエラーが発生します (以下を参照)。これらは、ディスカッション スレッドで説明されているデバッグ データベースへの新たに生成された参照が原因であると思われます。
その初期の議論では、ライブラリの標準バージョンには必要なサポートが存在すると述べられていましたが、今日ではそうではないようです。それはまだまったくサポートされていますか?もしそうなら、どうすれば必要なビットにリンクできますか?
templates - テンプレート関数の引数で MatrixBase::eval を「強制」する方法はありますか?
私は、Eigenを広範囲に使用するライブラリのコードに取り組んでおり、頻繁にEigen::Matrix
オブジェクトをNSObject
自分の設計のサブクラスにマップしています ( vMAT_Array
)。ライブラリを操作するには、多くの場合、マトリックスをvMAT_Array
インスタンスにマーシャリングして、それらを渡すことができるようにする必要があります。
これを処理するvMAT_cast
テンプレート関数があります。
この関数の問題は、 Eigenの遅延評価セマンティクスと正しく相互作用しないことです。たとえば、以下の単体テスト コードを見てください。
.eval()
へのほとんどの引数の明示的な呼び出しに注意してくださいvMAT_cast
。これらが必要なのは、テンプレート関数が (コンパイル時に) Eigenの遅延式テンプレートの 1 つを使用してコードに展開しようとするためです。これにより、次のような素敵なエラー メッセージが生成されます。
を「強制」する template-fu があるのではMatrixBase::eval
ないかと思いますが、それについての知識がありません。誰でも私を啓発できますか?
python - この一連の lldb コマンドを自動化するにはどうすればよいですか?
Apple のlldb (rdar://13702081)のバグを回避するために、次のように 2 つのコマンドを続けて入力する必要が非常に頻繁にあります。
これらの手順を組み合わせることができる Python ライブラリ (または何か) を使用して、新しいlldbコマンドを作成することは可能ですか? 理想的には次のようなものに:
解決
Jason Molenda のおかげで、動作中のlldbコマンド スクリプトからの出力を以下に示します。
非常に複雑な式でlldbバグを回避するためのジェイソンの提案を使用して、以下の回答で提供されているスクリプトを微調整する必要がありました。これが私の最終的なスクリプトです: