- 1 名前:デフォルトの名無しさん [2006/09/23(土) 15:00:11 ]
- 語って.はぁと part boost::mpl::int_<3>
前スレ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
- 592 名前:デフォルトの名無しさん [2007/01/11(木) 10:51:18 ]
- 生のポインタじゃなくて weak_ptr を使う理由は、
参照先のオブジェクトの生死を追跡することが出来るから。 えっと、ほかにうれしさある?
- 593 名前:デフォルトの名無しさん [2007/01/11(木) 11:09:46 ]
- >>592
おれもよく分からんのだけど、読んだりしらべたりした感じだと 循環参照でカウントが不当に上がってしまわないように shared_ptrの相互参照は片方をweak_ptrにしないと駄目ってことも あるんじゃないだろうか。違ってたらまた指摘よろ
- 594 名前:デフォルトの名無しさん [2007/01/11(木) 11:11:17 ]
- >>589
reset()か。ちょっと試してみる
- 595 名前:デフォルトの名無しさん [2007/01/11(木) 11:24:52 ]
- >>589
reset()した後に、そのshared_ptrをどうやって再利用したらいいんだろう。
- 596 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 11:57:10 ]
- shared_ptrみたいな簡単な部類すら理解できないのに
boostを使おうなんて100年早い
- 597 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 12:08:07 ]
- >>596
それでも BGL は便利にがんがんつかわせてもらってます ><
- 598 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 16:02:41 ]
- >>595
shared_ptr p1( object1 ); p1.reset( object2 ); shared_ptr のインターフェイス定義くらい読んでおけよ。
- 599 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 16:28:02 ]
- >>592
他に,対象のオブジェクトを参照している最中に (そのオブジェクトを指している shared_ptr が全て消えることで) 突然そのオブジェクトが死んでしまうような事態を回避することができます. (この問題はマルチスレッドプログラムで特に顕著だと思いますけれど, シングルスレッドプログラムでも論理的にはありえるケースです) void process( weak_ptr< Obj > wp ) { if( shared_ptr< Obj > p = wp.lock() ){ // このスコープ内では, (たとえば他の実行スレッドの動作によって) // p の指しているオブジェクトが削除されるようなことはない } else{ // wp が指しているオブジェクトが死んでいる場合. // ここでどうするかは何を実装するかによります. // wp の参照先が常に生存していることが不変条件ならば, // 571さんの書いているように論理エラーを通知する (例外を送出する) ことに // なるでしょうし,参照先のオブジェクトが死んでいることを検出して // 他のアクションを取るようなことも,場合によっては想定されます. } }
- 600 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 16:30:05 ]
- また,自身は shared_ptr を必要としないけれど,他の誰かに
shared_ptr を渡すような要求がある場合に weak_ptr が必要になります. // 自身は B のオブジェクトへの (弱い) 参照を持っているだけで良いが, // B のオブジェクトへの shared_ptr を返すインタフェイスが必要なクラス class A{ public: shared_ptr< B > getB() const{ return boost::shared_ptr< B >( p_ ); } private: weak_ptr< B > p_; }; あと weak_ptr の使い方として典型的なのが,参照先のオブジェクトが 死んでいてもかまわないような場合です. proxy (特にキャッシュの実装) や observer などの実装で有用な使い方があるかと思います.
- 601 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 17:17:34 ]
- shared_ptr はソースはそんなに複雑ではないわりに、
enable_shared_from_this や、weak_ptr、shared_ptr<void>、カスタム削除子 への対応など 細かいところでさまざまな工夫が施されているから、一度ソースに目を通しておくと勉強になる。
- 602 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 19:49:50 ]
- 削除子は勉強になったなぁ
- 603 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 20:18:15 ]
- 今回の人の場合、ソース読むよりスマートポインタのことが書かれた
適当な本読んだほうがよくねえか? いやおまいらが親切なのはよくわかったけどさ
- 604 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 20:31:23 ]
- カウンタを共有するのがポイント
- 605 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 20:56:40 ]
- >>603
>適当な本読んだほうがよくねえか? そういう本ある?自分は見たことないんだけれど
- 606 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 21:08:05 ]
- 超定番ながらModern C++ Designじゃないかね?
- 607 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:49:52 ]
- multi_array<double,3>
じゃなくて int ndim=3; multi_array<double> a(ndim) みたいな多次元配列の宣言の仕方できないのでしょうか? ndimをプログラム中で変えたいのです
- 608 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 09:59:32 ]
- 多次元配列の大きさを動的に決める方法なかったみたいなので
std::map< std::vector<double>, double> m で代用しました。速度で問題でそうな雰囲気もするけど、しかたないかな・・・
- 609 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 11:07:32 ]
- >>608
ふつうstd::vector<<std::vector<double> >じゃない?
- 610 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 11:09:46 ]
- >>608
スレ違いになるが、一次元配列を(動的に)確保して、擬似多次元アクセス関数を作った方が善くないか?
- 611 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 11:32:19 ]
- >>606
boost::shared_ptr を理解する上で Modern C++ Design はどうなんですかね? あれはスマートポインタについては,削除子による不完全型への対応とか クロス DLL 問題などの突っ込んだ議論は載っていなかったように思いますし, それに boost::shared_ptr の設計思想は, MC++D の一つの柱である 「ポリシーに基づく設計」のそれとは,アンチテーゼの関係にすらあるように思いますし.
- 612 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 15:50:59 ]
- >>608
…代用できるの?
- 613 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 21:54:17 ]
- どうみてもコンパイルエラーです。本当にありがとうございました。
- 614 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 23:21:36 ]
- >>611
標準C++ライブラリ(背表紙赤い奴)には auto_ptr の詳しい説明と 簡単なカウント式スマポの実装例があったような あとは More Effective C++ とか?
- 615 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 10:15:05 ]
- 「C++再考」のハンドルクラスの実装例なんか、どうっすかね?
- 616 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 17:01:38 ]
- boost.accumulators
いじってるんだけど、数値計算メインの人が MPL勉強するのはちょっとしんどいんじゃないかと思うんだ
- 617 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 00:27:28 ]
- boostのヘッダーをインクルードすると、
バカみたいにコンパイル時間がかかるのですが、 メモリー増設すれば少しは早くなるのでしょうか? Pentium M 17Ghz Mem 500M VS2005 OS:XP です コンパイルオプションをいじれば少しは早くなるのでしょうか?
- 618 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 00:30:17 ]
- CPUを速くしろ、と言おうと思ったが十分速いみたいだw
- 619 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 00:40:24 ]
- プリコンパイル済みヘッダ使えば多少はマシになんじゃない
17GHzもあるとどうかわからんけどw
- 620 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 00:46:42 ]
- 1.7Ghzの間違いでした
コンパイル中に、やたらとディスクアクセスする音が聞こえるので ひょっとして500Mで足らないのかと思ったのですが、 そうでもないのですか?
- 621 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 01:12:45 ]
- そりゃヘッダ含めソースコードが置かれているのはディスクの中だからさ。
- 622 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 01:13:40 ]
- 環境による。XPと開発環境以外何も入っていないのならspirit使わなければ500MBでも十分。
まあ500MBなんて半端なメモリ容量のPCは相当特殊だろうから俺の意見は参考にならんだろう。 512MBからビデオメモリ用に12MB引っ張ってくようなキモイ統合チップセットは聞いたことないし。
- 623 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 10:43:29 ]
- mplとかlambda使うならプリコンパイル済みヘッダは必須だな
- 624 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 10:51:49 ]
- テンプレートってコンパイル時まで型が決まらないからテンプレートなのに
プリコンパイルの効果あるの? それとも全部のパターン分インスタンシエイトしちゃうとか?
- 625 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 13:01:41 ]
- >>624
2回目以降のコンパイル時には効果絶大だろ。 PCH が無いと、一度インスタンス化した型でもソースファイルが違うと もう一度コンパイルしなきゃいけないし。
- 626 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 13:33:11 ]
- >>624
プリコンパイルっても別にオブジェクトコード吐くわけじゃなくて、 プリプロセッサ通して構文解析かけて、コンパイラの内部形式に変換しとく程度でも充分効果あるだろ。
- 627 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 14:06:43 ]
- いちいち stfafx.{cpp|h} みたいなのを作らないと
いけないのがめんどうだよな。hdrstop とかも指定せずに、 臨機応変にやってくれればいいのに。 って無茶か。
- 628 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 14:23:58 ]
- boost::serialization のシリアライズ先は
テキスト/バイナリ/XML なんだけど、 吐き出したデータを他の言語処理系から 読みたいときには XML しかないかな? 大量のデータを他の処理系とやりとりするときって、 やっぱり今まで通り独自形式で吐くしかないのかなぁ。 いっそのこと RDBMS のテーブルに吐き出してくれたらいいのに。 って、やっぱ自分で書き出すしかないか。
- 629 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 14:26:16 ]
- >>627
普通にcc foo.hするだけだろ。
- 630 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 21:42:08 ]
- RDBMSはランダムアクセスは早いがシーケンシャルが遅い。
そのうえ更新頻度が高いとシステムダウンする勢いでCPU負荷を上げ、 リソースを占有してしまう。
- 631 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 22:02:00 ]
- 素直にXMLでいいや・・・
ところで、当たり前かも知れないけど serialization って deserialization の方がコスト高いよね。 パースにかかるコストが高いんだろうけど。
- 632 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 22:40:36 ]
- 軽く作ればパースはたいしたことはない。
普通の言語と違って構文がスゲー単純だから。 字句はDFAを使うとかすればいいかもしれない。
- 633 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 22:41:53 ]
- 追記。たとえ重いパーサであってもRDBMSのODBCなどの
オーバーヘッドに比べれば屁の河童。
- 634 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 12:25:46 ]
- 現在のバージョンの boost::serialization って、
特に XML にシリアライズする場合には浮動小数点数の NaN が正しく扱われないんだな。 ちょっとカナシス。
- 635 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 02:26:24 ]
- 浮動小数点といえば、IEEE754はそろそろバージョンうpじゃなかったか
- 636 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 11:32:56 ]
- boost.decimal みたいなライブラリがほしいなぁ。
- 637 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 11:43:43 ]
- .NETはDecimal定数が扱えるのがぶっちゃけめちゃくちゃ便利だな。
複素数やリストもそうだけど、定数やリテラルとして使えるかどうかって 結局使い勝手に格段の差が出来ちまうな。
- 638 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 14:32:51 ]
- >>635
kwsk
- 639 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 15:25:16 ]
- >>638
ttp://ja.wikipedia.org/wiki/IEEE_754r
- 640 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 15:33:30 ]
- >>639
thx
- 641 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 00:56:43 ]
- tuple と lambda を使ってみてたんだけど、
bind(&get<0>, _1); って式が通らないんだが……。 返り型の指定してもダメだし、ドキュメントいくら読んでもさっぱりわからない。 誰か教えてくれないだろうか……(´・ω・`)
- 642 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 01:00:06 ]
- 質問です。
クラスAとクラスBがあるとしてshared_ptrで相互参照するのはNGというのを最近知りました。 すると、相互参照したい場合は class A{ weak_ptr<B> b; } class B{ shared_ptr<A> a; } とすれば良いのでしょうか。ちなみにAは一つしか存在しないBの管理クラスで、Bは複数存在する管理されるクラスなのですが、 その場合はこのように管理される側が管理する側をshared_ptrで参照して、管理する側が管理される側をweak_ptrで保持するのが良いのでしょうか。 あとscoped_ptrというのもあるようで、それぞれどういう時に利用すれば良いのかまだいまいち掴めません。
- 643 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 06:57:25 ]
- >>641
getは設計が古くなっている。 戻り値指定なしでもできるが長くなるのでこんな感じで template<typename Result, int i> struct get { /**/ typedef Result result_type; /**/ template<typename Tuple> /**/ Result operator()(Tuple& t) const /**/ { return boost::get<i>(t); } }; bind(get<double, 0>(), _1);
- 644 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 07:27:37 ]
- >>642
各オブジェクトの寿命を考えてみたらいいと思うよ。 あと、weak_ptrはオブジェクトを参照するときに 一時的なshared_ptrを作成するのでコストがかかるね。 scoped_ptr, scoped_arrayは、受け取ったポインタを 自分の寿命が切れるときにdeleteするだけのポインタクラス。 C++の仕様がわかっていれば使い道はいろいろ。
- 645 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 14:15:52 ]
- で、いつ標準化されるんですかね。
- 646 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 00:52:42 ]
- >>643
おお、ありがとう。 やっぱり戻り値の型が判別できないのが問題なのかな? 色々いじりつつ、もう一度 lambda の sig を読んでみたら、今度はちょっと分かった気が。 template <int i> struct get { /**/ template <class Tuple> /**/ typename boost::tuples::element<i, Tuple>::type operator()(Tuple& t) const { /******/ return boost::get<i>(t); /**/ } /**/ template <class Args> /**/ class sig { /******/ typedef typename boost::tuples::element<1, Args>::type Tuple; /******/ typedef typename boost::tuples::element<i, Tuple>::type Result; /**/ public: /******/ typedef typename boost::remove_cv<Result>::type type; /**/ }; }; bind(get<0>(), _1); ってことで、こう書いたらとりあえず行けたんだが、こんな感じでいいのかな? もっといいやり方があったりするんだろうか。 しかし、関数オブジェクトならこれでいい(?)けど、テンプレート関数には sig は使えないよね。 ということは、関数の場合はテンプレート引数を全部指定しないとダメってことかな。 いや、でも、boost::get<> のテンプレート引数全部指定してもダメだったし、キャストしてもムリだったような。 なんかまたよくわからなくなってきた…(´・ω・`)
- 647 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 11:19:05 ]
- 引数指定が間違ってるんだろう。consとかいるぞ
そもそもgetのシグニチャーは公開されてないと思われるので書いてはいけない。 要は君の::getが主役で、boost::getはシンタックスシュガーだ 関数オブジェクトがつねに偉いのだ
- 648 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 20:32:31 ]
- bindで結合されたオブジェクトをfor_eachで適用するとき,適用されたオブジェクトを取り出すには
for_eachの結果を何に代入すればいいのでしょうか? struct fn1 { double sum; void operator()(double &t ) {sum += t;} } fn1.sum=0; 何に代入したらオブジェクトfn1を取り出せる? =for_each(ar.begin(),ar.end(), boost::bind( fn1, boost::bind(fn2,_1 )) ); 代入しないと fn1.sum==0 となる
- 649 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 20:41:39 ]
- >>648
bind() された関数オブジェクトの型は決められていないから、無理。 かわりに、結果の書き込み先を参照で持たせるのがいいんじゃない? 総和なら std::accumulate() 使えばいいんだけどね。 ソース貼るならコンパイルできるかどうか見直せよ。
- 650 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 20:48:45 ]
- boost::bind(boost::ref(fn1),
- 651 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 20:52:54 ]
- >>650
できました 感謝
- 652 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 01:40:45 ]
- lambda
のtestコード algorithm_test.cpp がMSVC8でコンパイル通らない
- 653 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 03:06:39 ]
- >>649←恥ずかしい人ハケン
- 654 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 06:14:33 ]
- よかったね。毎日が発見の連続だね。
- 655 名前:649 mailto:sage [2007/01/22(月) 07:01:48 ]
- ん?何か変なこと言ったか?
- 656 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 16:11:33 ]
- みなさん、boost::FileSystemって使ってます?
日本語対応してないとかmingwで一部テストがエラーとか、ちょっと使うのに二の足踏んでます。 でも移植性のある他の代替選択肢もなさそうだしなぁ・・・。
- 657 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 16:39:05 ]
- >> でも移植性のある他の代替選択肢もなさそうだしなぁ・・・。
boost以外のポータブルなライブラリを使えばよいのでは。 ファイルシステム関連でMBCS/WCSに対応してないって、実用上論外だと思うが。 Shift_JIS環境では使い物にならないし、Win32のFindFirstFileA()って パス長に思いっきり制限あるし。
- 658 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:16:19 ]
- CVSから1.34拾ってこい。
- 659 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:47:54 ]
- がらっと変わってるよね
念願の basic_path 化とか他盛りだくさん boost.cvs.sourceforge.net/*checkout*/boost/boost/libs/filesystem/doc/index.htm?pathrev=RC_1_34_0
- 660 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:35:35 ]
- 1.34 早くリリースされないかな?
- 661 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:28:32 ]
- 1.35は大変なことになるというか、もう別の言語というか
Fusion, MPI, Asio, Interprocessなどなど ライブラリに関しては、標準が何かするべきではないと思う 標準は、発表の場を提供することに予算を使うべきだ。 そして、その場所を標準として定義すべきだ(とか言ってしまおう) 実際stlportが泥を被っているわけだしな BoostがなければC++は死んでたよ
- 662 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 22:11:32 ]
- >>661
すまんが言いたいことがよくわからん。 もうちょっと具体的 and/or 他人に理解できるようにお願い。
- 663 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 22:40:02 ]
- signalを関数objectとしてfor_eachに渡す方法はないのでしょうか?
struct obj1 { void operator()(double &t) const {std::cout << "obj1:" << t << " " ;} }; struct obj2 { void operator()(double &t) const {std::cout << "obj2:" << t << " " ;} }; boost::signal1< void ,double> sig; sig.connect(obj1()); sig.connect(obj2()); std::vector<double > ar; std::for_each(ar.begin(),ar.end(),sig) err sigのプライベートメンバーにアクセスできません となってfor_eachに渡せません 単にobj1,2を両方使いたいだけなんだけど
- 664 名前:663 mailto:sage [2007/01/22(月) 22:56:26 ]
- 自己解決しました
std::for_each(ar.begin(),ar.end(),boost::bind<void>(boost::ref(sig), _1)); でできました
- 665 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 09:21:05 ]
- gil::transform_channels(pixel1,pixel2,pixel3, ( 1.0/(boost::lambda::_1 - boost::lambda::_2) ) );
がコンパイルエラーになるのですが、 何か見落としているのでしょうか?
- 666 名前:665 mailto:sage [2007/01/24(水) 09:51:28 ]
- エラーの原因
gil::transform_channels(pixel1, pixel2, pixel3 を使ってるはずが lambdaを使ったとたん gil::transform_channels(const pixel1,const pixel2, pixel3 に入れ替わってしまうことが原因のようです
- 667 名前:665 mailto:sage [2007/01/24(水) 09:52:00 ]
- gil::transform_channels(pixel1,pixel2,pixel3, std::plus<double>() );
とするとコンパイルは通ります
- 668 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 10:50:48 ]
- MSVC++7.1, boost1.33.1の環境です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3506.txt のコードを実行すると、自分の環境では boost::regex_search()で例外が発生してしまいます。 ("Memory exhausted"). これはboost:regexのバグでしょうか。対処方法はありますか。 別にやっていること自体は大したことでは無いはずです。 (このパターンはこの入力に対してはマッチしません)。 C#, Java, JScript, ICU, 鬼車, 等々で、全く同じ正規表現と入力を用いて 同等のパターンマッチを試みても、何の問題も発生しないことは確認済みです。
- 669 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 12:43:19 ]
- そんなことより文章のほうに目がいった
- 670 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 13:00:18 ]
- エロかとおもったら三四郎じゃないすか
- 671 名前:デフォルトの名無しさん [2007/01/24(水) 22:55:12 ]
- boost のヘッダは <boost/...hpp> と "boost/...hpp" と、どちらがお勧めですか?
- 672 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 23:14:27 ]
- 後者は書かないことをすすめる
- 673 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 23:20:45 ]
- >>672
なんで? <...> は標準ヘッダでしょ? boost は標準じゃないから "..." だと思うよ。
- 674 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 00:02:55 ]
- >>673
くだすれC言語(初心者用) pc10.2ch.net/test/read.cgi/tech/1153542424/
- 675 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 00:03:34 ]
- >>673
<>と""の違いは、ファイル探索順の違いしかないと思ったが。
- 676 名前:668 mailto:sage [2007/01/25(木) 00:05:11 ]
- えーと、つまり俺の問題は俺の環境のみで起きるのであって、そんなもん
知るかヴォケ、悔しかったらboost::regexなんぞに頼らず テメェがDFAとかNFAとか書きやがれ。 ということでよろしいでしょうか。 このタイプの正規表現で、入力量の大きい時にコケる、という印象なのですが。
- 677 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 00:06:17 ]
- 個人的にはプロジェクト内のものは " "、プロジェクト外のものは < > にしてる。
つまり <boost/....hpp> 派だな。
- 678 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 00:08:08 ]
- >>676
君のプログラムを試したわけはないが VC7 ってとこにちょっと引っ掛かる。 可能であれば VC8 とか cygwin/mingw とかで試してみなはれ。
- 679 名前:668 mailto:sage [2007/01/25(木) 00:13:15 ]
- >>678
VC8は持ってないんすよ。 localeまわりでstd::wcoutが腐るとかfstream::open()が上手くいかねーとか 腐った風評しか聞きませんので、移行するとしても二の足を踏んでしまいますが。 VC7.1をboostはサポートしていないのですか?
- 680 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 00:16:42 ]
- VC8でも同じ例外発生したよん。
- 681 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 02:33:59 ]
- bindが必要とするresult_typeを
sig templateで代用することはできないのでしょうか?
- 682 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 06:33:13 ]
- MPLで次元解析する方法みて感動したけど、
いざ自分の問題で使おうと思っても、使いどころが微妙 いり込んだ type の木構造でも使わない限り enable_ifの延長としてしか使えない
- 683 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 20:40:23 ]
- boost::bindを
boost::lambda::bind に変えたら挙動が違う protectで囲ってあるところを呼んだり呼ばないで落ちたり どっちのbinsを使うのが推奨なの?
- 684 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 00:47:54 ]
- >>668
の問題に関して: capslockabcjp.kitunebi.com/faq.html boostのバグ? スレでの指摘により、boostの動作が怪しいという指摘がありました。 boost1.33および1.33.1で/\1/を使用した場合に落ちることを確認しました。
- 685 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:43:57 ]
- boostがC++でC++のコンパイラ作るのはいつ?
- 686 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 20:43:41 ]
- spiritでC++のコンパイラ書けってことか
- 687 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 03:04:59 ]
- Boostのおなじみの形式のドキュメント
こんなやつをdoxgenみたいに自動生成するツールってないのかな boost-sandbox.sourceforge.net/libs/time_series/doc/html/index.html
- 688 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 16:49:09 ]
- ヘッダーファイルの置き場所について教えてください
既存のboostの拡張として boost/X/Y/z.hpp に、おきたくなるようなヘッダーがあります。 しかしboost MLに投稿してもrejectされる可能性を考えて my_lib_name/X/Y/z.hpp においておくべきか,どうかで迷ってます ヘッダーの場所を #define my_lib_name/X/Y/z.hpp INC_XYZ として後で変更できるようにしておくのが無難なのでしょうか? namespaceも boost::X::Y::z などとせず #define my_lib_name::X::Y::z NAME_XYZ としておくのが無難なのでしょうか?
- 689 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:22:21 ]
- >>688
boost 気にすんな。紛らわしい。 どうせ accept されないし。 書き換えるにしてもたいした手間じゃない。
- 690 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 16:44:56 ]
- >>671
確か、mingwで使おうと思ったときに""だとどうしてもエラーになった気がする。 それ以後ずっと<>にしてる。 ""で行けている人居る?
- 691 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 17:58:52 ]
- #define BOOST_DIR c:/lib/boost_ver_xxx/
#define BOOST_BIND_INC BOOST_DIR##bind.hpp うまくいかない #include "BOOST_BIND_INC " うまくいくのかな? #include <BOOST_BIND_INC >
- 692 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:04:41 ]
- Makefileの先頭で
INCLUDE=C:/boost LIB=C:/boost/mingw こんなんでいけたはず。 というかUNIXルーツのソフトのお約束で常識だったはず。 x.ccをコンパイルする時はこうだった思う。 A>echo "INCLUDE=C:/boost">Makefile A>echo "LIB=C:/boost/mingw">>Makefile A>gmake x
|

|