問題タブ [tr1]
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.
interop - .NET 相互運用と TR1 shared_ptr
アンマネージ C++ コードから C# に shared_ptr をマーシャリングするにはどうすればよいですか?
新しい MyObject を割り当て、shared_ptr を介してそれへのポインターを返す C++ の関数 (C バインディングを介して公開) があります。
C++ では、次の関数を呼び出すことができます。
MyObjHandle が定義されている場所:
C# から GetMyObject への呼び出しを PInvoke するにはどうすればよいですか? メンバ objPtr を IntPtr として定義したことを除いて、構造 MyObjectHandle を C# とほとんど同じように定義するだけでした。それは AccessViolationException エラーで惨めに失敗しました。失敗した他のいくつかの PInvoke バリエーションを試しました。shared_ptr と C# との相互運用性のサンプルが見つからないようです。助けていただければ幸いです...
c++ - tr1 :: arrayに整列されたメモリを割り当てる方法は?
独自のアロケータを定義することにより、整列されたヒープメモリを割り当てるstd::vectorを割り当てることができます。declspec alignを使用して、スタックにcスタイルの配列を割り当てることができます。しかし、インデックス0の要素が整列されることを保証するtr1 :: arrayを宣言できますか?
c++ - VC ++でboost::shared_ptrのネイティブ/信頼できる代替手段はありますか?
私の会社は の使用を許可していませんboost
(多くのばかげた理由がありますが、それは話題から外れています)。
shared_ptr
に慣れているときweak_ptr
やscoped_ptr
、個人的な開発のために生のポインターを使用しなければならないことに非常に不満を感じています。
私たちは Microsoft コンパイラ (Visual Studio 2010) のみを使用して作業していますが、これらのテンプレートに代わるもので、私の苦痛を軽減できるものがあるのではないかと考えています。
聞いたことはありstd::tr1
ますが、これが何なのかわかりません。次の標準のマイクロソフトの実装のようなものだと思いますが、信頼できますか? それは何を提供しますか?保証はありますか?どのヘッダーを含める必要がありますか?
regex - tr1::regex regex_search の問題
tr1::regex を使用して、文字列からいくつかの一致を抽出しようとしています。文字列の例は次のとおりです。
そして、私はそれから抜け出したいです:
引用符で囲まれたものがグループ化されているので、正規表現を使用しようとしています\"(.+?)\"|([^\\s]+)
。私が使用しているコードは次のとおりです。
しかし、それは出力します
私は何を間違っていますか?
c++ - std::function が等価でないのはなぜですか?
boost::function
この質問はとにも当てはまりますstd::tr1::function
。
std::function
は同等ではありません:
C++11 では、オーバーロードoperator==
とoperator!=
オーバーロードは存在しません。初期の C++11 ドラフトでは、オーバーロードはコメントで削除済みとして宣言されていました (N3092 §20.8.14.2):
「型システムの穴の可能性」が何であるかは述べていません。TR1 と Boost では、オーバーロードは宣言されていますが、定義されていません。TR1 仕様のコメント (N1836 §3.7.2.6):
これらのメンバー関数は未定義のままにします。
[注:ブール型の変換は抜け穴を開き、2 つの関数インスタンスを
==
orで比較できます!=
。これらの未定義void
の演算子は抜け穴を塞ぎ、コンパイル時のエラーを確実にします。—終わりのメモ]
「抜け穴」についての私の理解は、bool
変換関数がある場合、その変換は等値比較 (およびその他の状況) で使用される可能性があるということです。
C++03 の safe-bool イディオムと C++11 の明示的な変換関数の使用は、この「抜け穴」を回避するために使用されたという印象を受けました。Boost と TR1 は両方とも safe-bool イディオムを使用しfunction
、C++11 はbool
変換関数を明示的にします。
両方を持つクラスの例として、std::shared_ptr
両方が明示的なbool
変換関数を持ち、等値比較可能です。
なぜstd::function
平等は比較できないのですか?「型システムの穴の可能性」とは何ですか? とどう違うのstd::shared_ptr
?
c++ - std::array ですT が POD の場合、POD であることが保証されますか?
私は現在、C++ メモリ編集ライブラリを作成しており、読み取り/書き込み API には型特性 (std::is_pod、std::is_same) と boost::enable_if を使用して 3 つのオーバーロードを提供しています。
- ポッドの種類。例 MyMem.Read(SomeAddress);
- 文字列型。例 MyMem.Read>(SomeAddress); (これは実際には C++ 文字列を読み取るのではなく、C スタイルの文字列を読み取り、それを C++ 文字列に変換します。)
- ベクトル型。例 MyMem.Read>(SomeAddress, NumElem); (これは実際にベクトルを読み取るのではなく、C スタイルの配列を読み取ってベクトルに変換します。)
オーバーロード 2 と 3 は、オーバーロード 1 の単純な「ラッパー」です。
最近、コンパイル時に読み書きしたいデータのサイズを知っていたので、一連の読み取りと書き込みに std::array を使用したいと思いました (私は PE ファイル形式のラッパーを書いていました)。
std::array を使用するコードを作成し、std::array 型の検出と処理のために別のオーバーロードを追加するつもりでしたが、誤ってコンパイルを実行してしまい、驚いたことにそれが機能しました!
私は現在 MSVC 10 を使用していますが、std::array の場合、T が POD の場合、std::array は POD であることがわかります。(つまり、オーバーロード 1 を使用するだけで機能します。)
私の質問は、これが C++ 標準によって保証されているのか、それとも実装に任されているのかということです。
自分で標準を確認できることはわかっていますが、このサイトの言語弁護士の一部を信頼するほど自分自身を信頼していないため、「セカンドオピニオン」を取得するのが最善であると考えました. ;)
ありがとう
PS コードはこちらから入手できます (ヘッダーのみのライブラリです): http://code.google.com/p/hadesmem/source/browse/trunk/HadesMem-v2/Hades-Memory/Hades-Memory/MemoryMgr.h#86
c++ - ラムダを std::tr1::function に変換する
tr1 サービス パックと Intel C++ Compiler 11.1.071 [IA-32] で Visual Studio 2008 を使用すると、これは私の他の質問に関連しています。
Rubyバージョンのように機能するc ++の機能マップを作成しようとしています
だから私は VlcFunctional 名前空間で次の関数を定義しました
これを次のように呼び出すことができます (関数テンプレートの引数は明示的に定義されていることに注意してください)。
またはそのように (関数テンプレートの引数は明示的に定義されていないことに注意してください)
しかし決定的に、これは好きではありません
テンプレート引数を明示的に定義しないと、どのテンプレートを使用するかがわからず、コンパイル エラーが発生します。
テンプレート引数を定義する必要があるため、構文がはるかにかさばります。呼び出しサイトでのクラフトを最小限に抑えることを目指しています-変換方法がわからない理由についてのアイデアはありますか? これはコンパイラの問題ですか、それとも言語がこのタイプのテンプレート引数の推論を許可していませんか?
c++ - 仮想メンバー関数とstd::tr1 :: function:これはどのように機能しますか?
これがサンプルコードです。B
はのサブクラスでA
あり、両方とも固有のprint
ルーチンを提供することに注意してください。main
また、両方のbind
呼び出しがへの呼び出しであることに注意して&A::print
ください。ただし、後者の場合、への参照B
が渡されます。
GCC4.2でコンパイルした出力は次のとおりです。
私はこの正しい振る舞いを検討しますが、両方の場合std::tr1::function
にsがバインドされていることを考えると、それがどのように正しく機能しているかを説明するのに迷っています。&A::print
誰かが私を教えてくれませんか?
編集:答えてくれてありがとう。私は継承とポリモーフィック型に精通しています。私が興味を持っているのはどういう&A::print
意味ですか?a
それはvtableへのオフセットであり、そのvtableは参照されるオブジェクト(この場合、または?)に基づいて変化します。より基本b
的な観点から、このコードはどのように正しく動作しますか?
c++ - VC++ 2010 での C++ テクニカル レポート 1 (TR1) の使用
Visual C++ 2010 で C++ TR1 ライブラリを使用するにはどうすればよいですか?
c++ - リスト内の各要素でC++メンバー関数を呼び出しますか?
私はリストを持っており、Thing
それぞれのController
ことをやりたいと思ってnotify()
います。以下のコードは動作します:
Notifier
私の質問は、「これは機能しません」行のいくつかのバージョンを使用してクラスを取り除くことはできますか? 何かを機能させることができるはずですが、適切な組み合わせを得ることができません。(いろいろ組み合わせを考えてみました。)
ブーストを使わずに?(できればそうします。)私はg ++ 4.1.2を使用しています。はい、古いことは知っています...