問題タブ [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.

0 投票する
1 に答える
600 参照

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# との相互運用性のサンプルが見つからないようです。助けていただければ幸いです...

0 投票する
1 に答える
1104 参照

c++ - tr1 :: arrayに整列されたメモリを割り当てる方法は?

独自のアロケータを定義することにより、整列されたヒープメモリを割り当てるstd::vectorを割り当てることができます。declspec alignを使用して、スタックにcスタイルの配列を割り当てることができます。しかし、インデックス0の要素が整列されることを保証するtr1 :: arrayを宣言できますか?

0 投票する
2 に答える
748 参照

c++ - VC ++でboost::shared_ptrのネイティブ/信頼できる代替手段はありますか?

私の会社は の使用を許可していませんboost(多くのばかげた理由がありますが、それは話題から外れています)。

shared_ptrに慣れているときweak_ptrscoped_ptr、個人的な開発のために生のポインターを使用しなければならないことに非常に不満を感じています。

私たちは Microsoft コンパイラ (Visual Studio 2010) のみを使用して作業していますが、これらのテンプレートに代わるもので、私の苦痛を軽減できるものがあるのではないかと考えています。

聞いたことはありstd::tr1ますが、これが何なのかわかりません。次の標準のマイクロソフトの実装のようなものだと思いますが、信頼できますか? それは何を提供しますか?保証はありますか?どのヘッダーを含める必要がありますか?

0 投票する
2 に答える
1646 参照

regex - tr1::regex regex_search の問題

tr1::regex を使用して、文字列からいくつかの一致を抽出しようとしています。文字列の例は次のとおりです。

そして、私はそれから抜け出したいです:

引用符で囲まれたものがグループ化されているので、正規表現を使用しようとしています\"(.+?)\"|([^\\s]+)。私が使用しているコードは次のとおりです。

しかし、それは出力します

私は何を間違っていますか?

0 投票する
7 に答える
16887 参照

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

0 投票する
3 に答える
5229 参照

c++ - std::array ですT が POD の場合、POD であることが保証されますか?

私は現在、C++ メモリ編集ライブラリを作成しており、読み取り/書き込み API には型特性 (std::is_pod、std::is_same) と boost::enable_if を使用して 3 つのオーバーロードを提供しています。

  1. ポッドの種類。例 MyMem.Read(SomeAddress);
  2. 文字列型。例 MyMem.Read>(SomeAddress); (これは実際には C++ 文字列を読み取るのではなく、C スタイルの文字列を読み取り、それを C++ 文字列に変換します。)
  3. ベクトル型。例 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

0 投票する
1 に答える
1954 参照

c++ - ラムダを std::tr1::function に変換する

tr1 サービス パックと Intel C++ Compiler 11.1.071 [IA-32] で Visual Studio 2008 を使用すると、これは私の他の質問に関連しています。

Rubyバージョンのように機能するc ++の機能マップを作成しようとしています

だから私は VlcFunctional 名前空間で次の関数を定義しました

これを次のように呼び出すことができます (関数テンプレートの引数は明示的に定義されていることに注意してください)。

またはそのように (関数テンプレートの引数は明示的に定義されていないことに注意してください)

しかし決定的に、これは好きではありません

テンプレート引数を明示的に定義しないと、どのテンプレートを使用するかがわからず、コンパイル エラーが発生します。

テンプレート引数を定義する必要があるため、構文がはるかにかさばります。呼び出しサイトでのクラフトを最小限に抑えることを目指しています-変換方法がわからない理由についてのアイデアはありますか? これはコンパイラの問題ですか、それとも言語がこのタイプのテンプレート引数の推論を許可していませんか?

0 投票する
2 に答える
1371 参照

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的な観点から、このコードはどのように正しく動作しますか?

0 投票する
3 に答える
3618 参照

c++ - VC++ 2010 での C++ テクニカル レポート 1 (TR1) の使用

Visual C++ 2010 で C++ TR1 ライブラリを使用するにはどうすればよいですか?

0 投票する
2 に答える
1307 参照

c++ - リスト内の各要素でC++メンバー関数を呼び出しますか?

私はリストを持っており、ThingそれぞれのControllerことをやりたいと思ってnotify()います。以下のコードは動作します:

Notifier私の質問は、「これは機能しません」行のいくつかのバージョンを使用してクラスを取り除くことはできますか? 何かを機能させることができるはずですが、適切な組み合わせを得ることができません。(いろいろ組み合わせを考えてみました。)

ブーストを使わずに?(できればそうします。)私はg ++ 4.1.2を使用しています。はい、古いことは知っています...