問題タブ [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 投票する
2 に答える
1925 参照

c++ - std::aligned_storage の割り当て先 (スタックかヒープか)

私は、aligned_storage として知られる TR1 の追加について頭を悩ませようとしてきました。次のドキュメントN2165N3190、およびN2140を読んでいる間、使用されているメモリのスタックまたはヒープの性質を明確に説明しているステートメントを一生見ることができません。

msvc2010、boost、および gcc によって提供される実装を見てきました。これらはすべて、ユニオンの使用を中心としたスタック ベースのソリューションを提供します。

要するに:

  • aligned_storage 実装で使用されるメモリ タイプ (スタックまたはヒープ) は定義されていますか? それとも、常にスタック ベースであることを意図していますか?

  • そして、それを定義/決定する特定の文書は何ですか?

注: MSVC10 では、aligned_storage の型の定義は次のとおりです。この場合、aligned_storage が自動変数の場合、data(_Val,_Pad) がスタックに作成されます。

注: これは些細な質問ではありません。回答を投稿する前に、質問を理解しようとしてください。

0 投票する
4 に答える
24692 参照

c++ - std、tr1、boost(名前空間やライブラリとして)の違いは何ですか?

最初はすべて同じだと思っていましたが、間違っていたことがわかりました。では、これら3つの違いを簡単に説明できる人はいますか?例えば:

  1. std::bind(最新のもの、次世代のC ++)
  2. std::tr1::bind(古い、C ++ stdの拡張)
  3. boost::bind(完全に別のライブラリ)

またはstd::shared_ptr、、、std::tr1::shared_ptrおよびboost::shared_ptr、...など

アップデート

bindshared_ptrは私の質問を明確にするのに役立つ例です。私の意図は、これら3つの名前空間の一般的な違いを理解することでした。3つの名前空間すべてに存在するいくつかのライブラリがあり、明らかbindに1つの例shared_ptrです。

どの名前空間を使用する必要がありますか?私は個人的にライブラリを好みますstd::。それはC++(C ++ 0x)の次の標準になるからです。

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

c++ - tr/regex C++ ライブラリ - 正規表現パターンの定義

tr1/regex ライブラリを使用する場合、正規表現パターンをどのように定義すればよいですか?

動作していません...コンパイル時にエラーが発生します:「正規表現」は型に名前を付けていません

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

c++ - 一致する正規表現

入力した行が「OK」かどうかを確認する機能が1つあります。

関数はfalseを返します。なんで?

0 投票する
4 に答える
860 参照

c++ - スマート ポインター: WinXP-Sp3 を実行している VS 9 でのランタイム クラッシュ

次のコードでランタイム クラッシュが発生し、デバッグもできません。レビューして、何が起こっているのか教えてください。

すべてのヘッダーをインクルードしましたが、プログラムは正常にコンパイルされています。これは私が得ているエラーです:

CppConsole.exe - エントリ ポイントが見つかりません プロシージャ エントリ ポイント ?_Xweak@tr1@std@@YAXXZ がダイナミック リンク ライブラリ MSVCP90D.dll に見つかりませんでした

この行をコメントアウトすると

プログラムはクラッシュすることなく実行されます。

更新:質問は今のところ閉じることができます。VS 機能パックをインストールして、プログラムがクラッシュせずに実行されることを確認します。

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

c++ - unordered_map では R 値の挿入が機能しない

リポジトリから入手可能な最新の GCC ビルドを使用しています。追加の C++0x 機能があるため、これを使用することにしました。しかし、今はうまくいくと思われるものに固執しました-r値を介してマップする新しい要素を追加したいです。問題を示す簡略化されたコード:

Xクラスをコードのようなプリミティブ型に置き換えるとint、コンパイルして問題なく動作することに注意してください。

私の製品コードでは、X に対応するクラスにもコピー コンストラクターがありません。

エラー メッセージは (すべてのテンプレート関連のエラーと同様) 長くて読めないので、ここに記載するのが適切かどうかわかりません。エラーメッセージが必要な場合はお知らせください。この質問を更新します。メッセージの最後の部分は興味深い:

さらに、同様のバグが既に修正されているため、これは機能するはずです [C++0x] Implement emplace* in associative and unordered containers

多分私は何か間違ったことをしていますか?報告する前に、それが GCC または libstdc++ のバグであることを確認したいと思います。

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

function - for_each バインド ベクトルのベクトル サイズ変更

これは私の最初の質問です。私はあきらめて、これには手巻きファンクターを使用しますが、それがどのように行われることになっているのか興味があります。以下の不自然な例は、ベクトル内のすべてのベクトルのサイズを 9 に変更することを目的としており、それらを null で埋めます。示された行により、MinGW GCC 4.5.0 は多くのテンプレート エラーを吐き出します。いくつかの異なる順列を試しましたが、「最も正しい」と思われるコードのみを以下に掲載しました。それはどのように書かれるべきですか?resize の 2 つの引数バージョンを保持したいことに注意してください。

ご意見をお寄せいただきありがとうございます。

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

c++ - 句読点なしで単語に一致するC++正規表現

検索しましたが、何も見つかりませんでした。答えが他の誰かに明白である可能性に私の時間をもう無駄にしないために、私はここで尋ねています。これまでに有用だったサイトはこれだけです:http ://softwareramblings.com/2008/07/regular-expressions-in-c.htmlしかし、サンプルはあまりにも単純すぎます。VisualStudio2010を使用しています。

期待される出力は次のようになります。

いくつかの
単語

いくつかの
句読点

ありがとう。

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

c++ - コンパイル時にtr1配列のサイズを確認する

boost :: array::static_sizeがtr1::arrayの一部ではないか、少なくとも私の実装(GCC 4.2.1)にはなく、tr1のドキュメントに見つからないことがわかりました。

tr1配列の要素数に対してコンパイル時アサーションを実行する別の方法はありますか?

例:以下はブーストアレイでは機能しますが、tr1アレイでは機能しません。

代わりにboostの配列を使用できることは知っていますが、興味があります。

それを行う方法がない場合は、static_sizeがtr1に含まれていなかった理由を誰かが知っているかもしれません。tr1が作成された後にブーストするために追加された機能だけですか?

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

c++ - 複数の異なる場所で定義される可能性のある関数のような C++ クラスの使用

C++0x、C++03 TR1 とブーストの間で、関数やバインドなどのいくつかのものは、コンパイラに応じて 3 つの異なる場所で定義できます。 std::tr1:: 名前空間で、VC10 はそれを std:: 名前空間だけに移動します。

現在、私の既存のコードは、boost:: 名前空間で古いバージョンのブーストを排他的に使用していますが、私のアプリケーションとライブラリの多くで、使用したすべてのブーストは現在 tr1 と C++0x にあるため、可能であればブーストの依存関係を削除したいと考えています古いバージョンのコンパイラとの下位互換性を維持しながら、それらから。

ただし、コードを見つけてインクルードし、正しいバージョンにアクセスできるようにする方法がわかりません:(私が検討したことの1つは、_MSC_VERのようなマクロを使用して、必要なクラスがコンパイラに含まれているかどうかを確認することです(フォールバックtr1 に移動し、必要に応じてブーストする)、「using somenamespace::someclass;」を使用して、問題のクラスを std:: 名前空間に移動します。

問題は、場合によってはこれが壊れる可能性があることです.VC9に機能パックまたはSP1がインストールされているかどうかを確認する方法さえわかりません:(それを行うためのきちんとした方法についてもわかりません、おそらく必要な「魔法」を行う独自のfunctional.hppを提供しますか?

主なことは、新しい標準用のコードを書き始めたいということですが、古いコンパイラでも最小限の労力で動作するようにします。