1 名前:デフォルトの名無しさん [2010/05/28(金) 11:49:47 ] 過去スレ Part 8 pc12.2ch.net/test/read.cgi/tech/1251446016/ part 7 pc12.2ch.net/test/read.cgi/tech/1232367742/ part 6 pc11.2ch.net/test/read.cgi/tech/1207749841/ part 5 pc11.2ch.net/test/read.cgi/tech/1192662575/ part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/ part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/ 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/
629 名前:デフォルトの名無しさん mailto:sage [2011/09/30(金) 21:26:13.06 ] progress_displayに 呼び出し元プロセスとの進捗状況をやりとりする機能を実装し そのプロトコルも規格化したりすると延命できるのかな。
630 名前:デフォルトの名無しさん mailto:sage [2011/09/30(金) 21:34:09.65 ] progress_displayやprogress_timerの実装に使われてる大元のBoost.Timerの刷新のついでだからどうしようもないな
631 名前:progress_display mailto:sage [2011/09/30(金) 21:57:09.32 ] 何でみんなそんなに冷静なのっ!?
632 名前:デフォルトの名無しさん mailto:sage [2011/10/01(土) 08:36:25.31 ] 来るべき時が来たって感じだから…
633 名前:デフォルトの名無しさん mailto:sage [2011/10/01(土) 10:52:59.90 ] この際eggやovenをだな
634 名前:デフォルトの名無しさん mailto:sage [2011/10/01(土) 13:07:50.36 ] レビューがBoostConと重なったためにまともに評価されなかったんだよね>egg どう考えてもovenの方がrangeexより優れてる筈なのに・・・どうしてああなった
635 名前:デフォルトの名無しさん mailto:sage [2011/10/01(土) 13:51:24.87 ] |をパイプ処理に使う仕様とかはqtみたいな言語のサブセット的な巨大フレームワークを構築してその中に隔離しておいてくれ
636 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 09:54:06.59 ] oerator | の定義って斬新だな フェニックスも大概独自世界構築してるけど| の方がわかりやすくてええわ
637 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 11:06:36.24 ] 俺はうげーってなるから止めて欲しい
638 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 13:11:45.27 ] シェルのパイプからの発想なんだろうけどC++で順序に意味のある結合に|を使うのは一般的になって欲しくない
639 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 20:59:58.34 ] 同感
640 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 19:22:39.08 ] >>633 >eggやoven boostライセンスだから 作者の許可なしで「改良したもの」をboostに提案しても問題ない予感がするのだが もちろん作者の名前も入れる
641 名前:progress_display mailto:sage [2011/10/04(火) 19:50:11.11 ] ・・・
642 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 20:34:30.64 ] 返事が無い ただのdeprecatedのようだ
643 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 20:37:41.95 ] 誰かが作ったのを別人が改良というのはよく見るから 改良したらいいんじゃないの?
644 名前:デフォルトの名無しさん mailto:sage [2011/10/05(水) 19:12:35.16 ] progress_display って、なんだかんだでみんな一度は使うよね
645 名前:デフォルトの名無しさん mailto:sage [2011/10/05(水) 19:13:37.47 ] boostの親善大使だから
646 名前:デフォルトの名無しさん mailto:sage [2011/10/05(水) 19:17:28.31 ] そうだったのか。。 でも確かに、親善大使という言い方に、しっくりくるものを感じる。。。
647 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 00:55:35.76 ] まぁ初めてboost触る人にSpirit薦めるわけにはいかないしねぇ 俺はlexcal_castから入門したけど
648 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 04:42:44.99 ] 誰もが一発でわかる最も簡単なboost noncopyableをよろしく
649 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 07:18:53.85 ] BOOST_FOREACHがいいんじゃないか
650 名前:やんやん ◆yanyan72E. mailto:sage [2011/10/06(木) 10:42:50.54 ] BGLから入った俺は変態ですか?
651 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 11:15:42.53 ] 俺はshared_ptrとregex
652 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 12:00:49.57 ] 俺はtokenizer
653 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 13:05:24.59 ] filesystemから入ったかなぁ
654 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 13:17:38.99 ] randomだったと思う。
655 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 13:19:25.53 ] 和訳されてる書籍にあるライブラリしか使えん
656 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 14:35:14.08 ] scoped_arrayからかな・・・auto_ptrの配列版探していて知った ところでprogress_displayを実用した著名ソフトってあるのかしら
657 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 14:59:48.03 ] google code検索で検索してみよう
658 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 19:29:22.00 ] >>656 めっちゃ有名なライブラリで使ってるよ。 Boost C++ Libraries
659 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 23:55:45.01 ] 一番最初につかったのが、progress_displayだわ まぁLet'sboostみながら一番わかりやすそうだったからってだけだが
660 名前:デフォルトの名無しさん mailto:sage [2011/10/07(金) 10:59:06.69 ] 意外にもformatが挙がらないな
661 名前:progress_display mailto:sage [2011/10/08(土) 01:20:12.74 ] 私の後継に相応しい者はいないようだな これではまだまだ親善大使を退くわけにはいかんう・・・
662 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 17:22:29.70 ] 早くprogress_display2.0を作る作業に戻るんだ
663 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 17:38:11.23 ] Boost.Timerv2に対応したprogress_displayです!!!1111 みたいにboost.develに投稿してまずはsandbox入りを目指そう
664 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 17:54:54.35 ] 表示処理部分を差し替え可能にすればなんとか・・・
665 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 19:09:47.22 ] 誰か>>629 とMPIにも対応させてくれ
666 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 20:21:58.06 ] そしてboost.interprocessに吸収されるわけですね
667 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 00:26:41.87 ] bjamこそprogress_display使うべきじゃね?
668 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 16:49:04.00 ] filesystemのwpathってなんでdeprecatedなの?
669 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 16:51:32.26 ] ごめん自己解決 pathそのものが両方サポートしてるのね。
670 名前:デフォルトの名無しさん [2011/10/25(火) 14:09:17.02 ] 「boost::this_thread」っていう名前空間の「this」ってどんな意味なのでしょうか? どなたかご存知です?
671 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 14:12:05.06 ] このスレ
672 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 14:16:33.54 ] >親善大使 簡単にスレッドを使いたくて調べてたらboostにあたった。 boost::thread は非常に簡単でいい。 「boost::this_thread」っていう名前空間の「this」ってどんな意味なのでしょうか? どなたかご存知です?
673 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 14:24:37.71 ] >>670 "this"の意味は「この」。 "this_thread"で「このスレ」。
674 名前:672 mailto:sage [2011/10/25(火) 19:21:41.47 ] >>620 あれ?2回も投稿してるし、しかもageてるよ。申し訳ない。 >>671 , >>673 ありがとうございます。 助かりました。 説明もらって、Webで見つけたサンプル達を眺めたら理解できました。
675 名前:672 mailto:sage [2011/10/25(火) 20:36:08.22 ] 連続で失礼! どちらかというと、Boostというより、C++のクラスについての質問になります。 よろしくお願いします。 ttp://melpon.tank.jp/pukiwiki147/index.php?Memo%2F%CB%DD%CC%F5%2FBoost.Thread ↑この辺り( Boost.Thread )を読んで試したりしているのですけど、 boost::this_thread sleep() ※Static member function sleep() boost::this_thread::sleep() ※Non-member function sleep() の二つのsleepがあるじゃないですか。それぞれ、 指定した時間になるまで、現在のスレッドをサスペンドします 指定した時間が経過するまで、現在のスレッドをサスペンドします と若干引数の扱いが違いますが、似ています。 threadクラスの中に入れたのと、外(this_thread)に入れたのとで、どのように使い分ければいいのですか? 「中断ポイント」として、利用されるのが前者、程度の違いでしょうか? 何か他に大事なことを知らない気がしています…。
676 名前:672 mailto:sage [2011/10/25(火) 21:33:35.07 ] ミスった ×boost::this_thread sleep() ※Static member function sleep() ○boost::thread sleep() ※Static member function sleep()
677 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 18:00:45.65 ] property_treeのINIパーサーだけど、XMLパーサーみたいに書きこむときに コメントを再現できないんだろうか? 今は無視して読み飛ばしてるみたいだが。
678 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 18:05:26.87 ] コメントなんて読んでどうすんだ
679 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 20:51:44.73 ] boost::thread のスレッドが動いているか、それとも終了しているか、を自作の関数を用いないで確認する方法ってあります?
680 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 21:20:35.33 ] timed_join
681 名前:679 mailto:sage [2011/10/31(月) 02:40:46.69 ] >>680 !!そうかっ! 感動した! ありがとうございます。
682 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 00:34:42.48 ] 既存のクラス namespace Hoge { struct Fuga // 独自にカウンタを持つ { int count ; int add_ref(void); int release(void); }; } があってintrusive_ptrを使いたいんだけどnamespace Xに追加禁止の場合は グローバルスコープにintrusive_ptr_add_refとintrusive_ptr_releaseを書くしか無い? なにかうまい回避策とかあるのかな
683 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 01:47:51.17 ] >>682 namespace に追加禁止の意味がわからん。
684 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 01:54:37.13 ] Xってどこだよ、おいといて、>>682 でHogeの中に置けないならnamespace boostに置く
685 名前:デフォルトの名無しさん mailto:sage [2011/11/02(水) 06:59:20.82 ] ttp://melpon.tank.jp/pukiwiki147/index.php?Memo%2F%CB%DD%CC%F5%2FBoost.Thread#x68e5715 「Thread Constructor」の説明に書いてある、「*this」って何のことか説明もらえたりしませんか? 呼ばれる関数内でthisとか書いてもthreadのインスタンスメソッドとか呼べないのですけど…。 さっぱりわかりません。
686 名前:685 mailto:sage [2011/11/02(水) 07:33:33.34 ] あ、何か急にわかりました。 スレ汚し失礼しました。
687 名前:685 mailto:sage [2011/11/02(水) 14:26:44.40 ] >>675 ttp://melpon.tank.jp/pukiwiki147/index.php?cmd=read&page=Memo%2F%CB%DD%CC%F5%2FBoost.Thread#ldd60c2a これみると、後方互換性のために存在する感じのように見える。 「// 後方互換性のため」のスコープがどこまでなのかがハッキリしないが、たぶん後方互換性に含まれるんだろ。 ちなみに、boost1.47のヘッダみたら、「static」の方の引数の変数名が「this_thread」にあわせられていた。 確信無いので参考までに。
688 名前:デフォルトの名無しさん mailto:sage [2011/11/02(水) 20:59:30.05 ] もう少しよく見ればthread::yield/sleepがthis_thread::yield/sleepを呼び出してるだけなのがわかっただろうになあ
689 名前:679 mailto:sage [2011/11/05(土) 06:15:53.53 ] join()・timed_join()(成功)・detach()を複数回実行した時の動作は未定です? timed_join()を繰り返して、起動した全てのスレが終了したか検知するコードを書いて今はうまく動いているのですけど、 幾つかのスレが終了している最中に、もしも別のスレが起動したらどうなるのかな?デタッチした領域は開放されているから再利用される可能性があるかな?なんて考えて…。 それとも、スレの起動箇所ごとに、アタッチするメモリ番地が決まってるのかな。 そうすると、forやwhileで起動する際に説明がつかないし…。 未定か。
690 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 11:36:39.78 ] なに言ってるかわからないがたぶん心配してるようなことにはならないだろ。基本的なところを勘違いしてるように思える。
691 名前:689 [2011/11/06(日) 22:23:39.49 ] >>690 レスありがとうです。 スレッド周りのヘッダとcppと読んでみたのですけど、あまりわかりませんでした。 スレッドが終了したかどうかって、Win32 APIとどのようにやり取りするのかわからないのがマズイ気がする。 先は長い…。 ところで、さっきと今との、経過時間をmillisecで取得したいのですけど、Boostを利用すると比較的容易な気がするのですが、どのクラスを利用すればいいでしょうか? boost::posix_time付近で探しているところですが。
692 名前:689 mailto:sage [2011/11/06(日) 22:34:54.18 ] ageてしまいました。すみません。 Win32APIでみつけることができました。GetTickCountで差分をとればいけそうでした。 もしBoostで、同じようなことが出来れば御教示ください。出来れば環境依存は少ない方がいいと思いますし。
693 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 22:45:34.52 ] boost::timer
694 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 23:13:37.80 ] chrono
695 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 06:41:56.52 ] いつもチンコ?って思っちまう
696 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 17:34:26.68 ] 半年くらい前までは[スマポ]で検索するとスマートポインタのサイトがずらっと出てきたのに 今出てこなくなってるな こういう新しいものが出たときにもともとあった情報の取得の障害になることをなんていうんだろうね
697 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 17:36:23.99 ] 産業革命
698 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 17:54:00.58 ] シャドウイング
699 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 21:56:57.82 ] オレオレ略語使いの憂鬱
700 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 12:34:52.49 ] スマポなんて初めて聞いたぞ
701 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 12:38:10.56 ] ナマポは生活保護か生ポインタか
702 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 15:27:47.67 ] むしろ誰も使ってなかったからグーグル先生の超推理でスマートポインタにヒットしてたんだろ。 いまは使われるようになったからな。
703 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 18:32:09.00 ] >>696 10年以上前の話だがCの関数をググれてたのが PHPに占領されたときは殺意を覚えた
704 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 18:42:18.38 ] >>696 いまは「スマ」と打つとsmileageが出てくるように・・・まだなってないか
705 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 20:10:00.06 ] clangが規格に忠実すぎてBootのソースがコンパイルできん。
706 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 07:45:19.68 ] JOSN用モジュールってありますか?
707 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 12:43:22.14 ] >>705 コンパイルエラー晒せ。 直接バグレポートするともっといい。
708 名前:デフォルトの名無しさん mailto:age [2011/11/15(火) 22:07:44.75 ] >>706 JSON? boost::property_tree boost::property_treeを使ってXMLを読み込んでみるコードを書いてるのですけど、 hoge.piyo.fooの要素が複数存在する可能性がある仕様の時、何個あるかしらべるには、foreach使って全て読み込んでみないとわからないですか? mapのsize()のような関数って無いでしょうか?
709 名前:デフォルトの名無しさん [2011/11/16(水) 01:35:08.82 ] Version 1.48.0 www.boost.org/users/history/version_1_48_0.html
710 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 05:45:06.58 ] boost に gettext 相当のものってありますか?
711 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 06:01:45.60 ] >>710 ちょうどBoost.Localeが入ったぞ
712 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 09:45:15.35 ] フェニックスってコンパイルは遅くなるけど 実行時間はふつうにfor文かいたりするのと変わらないの?
713 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 12:20:42.65 ] >>706 ttp://anon21.qlookblog.net/20110717-1.html
714 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 01:58:09.28 ] Windowsでstd::locale("en_US.UTF-8")すると死ねますか?
715 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 01:59:23.32 ] たぶん無視されるだけかと
716 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 13:49:42.72 ] >>712 うん。gccレベルのコンパイラでも最適化オプションつけるとfor文展開と変わらない。 最適化しない場合は知らん。
717 名前:デフォルトの名無しさん [2011/11/17(木) 14:52:45.35 ] 1.48.0 released
718 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 15:59:38.87 ] Boost.Containerの詳しい解説たのむ 主にflatシリーズ
719 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 17:27:47.13 ] > 主にflatシリーズ ソート済みvector使った擬似setや擬似mapあるだろ。つまりそれ。
720 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 18:56:20.37 ] b2 ってのは bjam と同じなの? 1.47.0 から変わったみたいでコンパイルがよく分からなくなった それと、オプションの toolset は -- がいらなくなったの?
721 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 19:35:49.47 ] boost::interprocess::detailから boost::interprocess::ipcdetailに仕様が変わってるんだな コンパイルエラー吐かれて初めて気付いた
722 名前:やんやん ◆yanyan72E. mailto:sage [2011/11/17(木) 20:16:14.19 ] 俺はbootstrap.shでtoolsetなどのオプションを指定して b2でコンパイルという感じでやってるけど、 b2をbjamと同じように使うこともできるみたいだね。
723 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 20:28:23.12 ] >>719 ありがと
724 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 13:41:41.76 ] VC++2008でエラーになる・・・ boost.moveが原因くさい #include <boost/unordered_map.hpp> int main() { struct data_type { boost::unordered_map<int, int> a; }; data_type a; const data_type b; a = b; return 0; }
725 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 16:32:03.78 ] Why don't you write your version of boost.
726 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 18:19:04.28 ] >>724 boostの使用以前にエラー。 クラス型のconstオブジェクトを初期化子なしで初期化する(default-initialized)ときは そのクラス型はユーザー定義のデフォルトコンストラクタを持っていなければならない。
727 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 20:45:24.66 ] property_treeのxml_parserでencodingをutf-8にして 文字列データに日本語を含ませるとunexpected end of dataという例外が飛んできます utf-8のxmlを読み込むにはどうすればいいんでしょうか?
728 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 20:46:15.79 ] data_type a; data_type b; a = static_cast<const data_type&>(b); でもエラーになるな。
729 名前:727 mailto:sage [2011/11/18(金) 20:47:18.46 ] あ、ちなみに環境はwindows7でVC++EE2008 boostのバージョンは1.46.1です
730 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 22:38:19.46 ] >1.46.1です
731 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 02:13:30.33 ] >>724 C++03でのmoveのエミュレーションの限界であり仕様 ttp://www.boost.org/doc/libs/1_48_0/doc/html/move/emulation_limitations.html#move.emulation_limitations.assignment_operator
732 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 02:53:37.99 ] >>726
733 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 04:00:51.16 ] moveエミュレーションってOFFにできないの?
734 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 08:18:33.39 ] >>726 は規格準拠の動作。VC++で出るべきエラーが出ないのはいつものことなのでお察しください
735 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 13:13:26.51 ] よくわからんけど>>728 が通らないっていろいろ問題でないか?
736 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 14:04:06.67 ] std::mapに変えてcodepadで試したけどエラー出なかったぞ
737 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 15:16:38.02 ] >>726 はclangとかで試せばエラーになるだろうけど とりあえずboostとは関係ないし軽く流せよ
738 名前:デフォルトの名無しさん [2011/11/19(土) 16:22:22.43 ] へえ
739 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 17:02:27.30 ] >>733 1.47とか古いboost使えば >>735 boost1.48のコンテナを使うならdata_typeに必要なメンバを追加すれば通るようにはできる >>736 どういう話だ。 >>724 ,728が言いたかったのはboost1.48のコンテナを使ったときの話でstd::mapでは再現しない。 >>726 が言ってるのはこういう話 ttp://codepad.org/wc7uBetz。
740 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 17:02:36.69 ] Boost.Containerのパフォーマンスに期待
741 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 23:12:47.21 ] >>730 治りました! ありがとうございます
742 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 07:40:41.25 ] Visual C++向けのboostのlibのディレクトリを覗くと、 (1)boost〜.dll (2)boost〜.lib (3)libboost〜.lib ※:〜の部分は同じ という3種類のファイルがあるのですけど、それぞれ何なのですか? 何となく、(3)が静的リンクなライブラリの本体で、 (1)が動的リンクなライブラリの本体で、(2)が(1)向けのインポートライブラリかなぁなんて考えたのですが、 どうして静的と動的と両方あるのだろうか?と考えると、さっぱりわかりません。 boostって静的リンクじゃないのですか?
743 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 08:38:29.93 ] どこでダウンロードしたやつだ 公式じゃないよな?
744 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 10:05:05.07 ] インストーラ配布してるとこがあるじゃん んで、boostライブラリにはダイナミックリンクとスタティックリンクの2種類があるよ ファイルの区別は>>742 の通りで間違い無い もう少し詳しくいうと、末尾に-sgdが付いているのがデバッグCRTスタティックリンク型(/MTd)、 -sが付いているのがCRTスタティックリンク型(/MT)、 -gdが付いているのはデバッグCRTダイナミックリンク型(/MDd)、 何も付いていないのがCRTダイナミックリンク型(/MD) その他命名規則の詳細はこちら www.boost.org/doc/libs/1_48_0/more/getting_started/windows.html#library-naming
745 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 07:27:35.14 ] 実際スタティックリンクの方が速いな ダイナミックリンクはどうしてもコールゲートを通すのでリングレベルの移行など CPUで処理すべき仕事が多く相当速度が落ちる 速度とサイズのトレードオフか でもDLLやsoもメモリ内に読み込むのでサイズが小さいとも言えないし 同時に走らせるプログラムが多くなってきた時だけ違う
746 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 07:44:52.93 ] ?
747 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 11:36:28.84 ] dllでコールゲート通らないし しかもリング変えるのにコールゲートとかいつの話だ
748 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 12:13:15.70 ] 聞いたことある単語を適当に並べてみただけって感じの文だな
749 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 12:14:32.91 ] ダイナミックリンクでコールゲートを通すような処理系を教えてくれよ
750 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 16:19:33.53 ] リンク時の最適化が効かない以外はあんまかわらんかね
751 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:57:26.19 ] コールゲートが必要なのはカーネルだけだろ。 カーネルの場合は、ゲートとなるアドレスが記述されていて、 そこへ飛ぶとメモリー空間がユーザー空間からカーネル空間へ変わる。 通常のDLLは、ユーザー空間にコードマッピングして、関数テーブルを そこのアドレスに書き換えてるだけ。
752 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 21:03:45.95 ] 助けてください >< boost::tupleのメンバ関数get<N>をboost::lambda::bindで束縛するにはどうしたらいいでしょう? 下記のコードでは、 error: invalid static_cast from type ‘<unresolved overloaded function type>’ to type ‘int (*)(const boost::tuples::tuple<int, int, boost::tuples::null_type, boost::tuples::null_type, .... と言われてしまいます。 get<N>のテンプレート周りかなと思うのですが。。 using namespace boost::lambda; int r; r = (bind( static_cast<int(*)(const boost::tuple<int,int>&)>( &boost::tuple<int,int>::get<0> ), _1) ) (boost::tuple<int,int>(1,1));
753 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 21:43:07.29 ] static_cast<const int&(boost::tuple<int,int>::*)()const>(&boost::tuple<int,int>::get<0>) メンバ関数がどんな型になるか勉強しなおしたほうがよさそう
754 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:03:39.03 ] >>753 ありがとうございます! いろいろとカン違いしていました。 返り値型がconst int &というのも言われてみればなるほどで、 自分はまだまだ勉強が足りないですね。。
755 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 00:07:39.70 ] read_xmlでunicodeが読めないのですが仕様ですか? 引数にマルチバイト文字しか受け付けないし、 文字コード宣言があるXML文書のパースを ロケール指定して使うproperty_treeに依存するとかあほですか
756 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 16:11:45.03 ] yes
757 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 22:45:17.23 ] boost.spirit.qiでセマンティックアクションから、 一致したruleのrangeを示すiteratorが欲しいのですがclassicを使うしか方法はないのでしょうか? 例えば、以下の様にしたいです。 void action(Iter first, Iter last){ ... } //... (char_('(') >> *char_('0') >> char_(')'))[action];
758 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 22:48:13.14 ] ptreeはutf8一択と心に決めて使うものだし
759 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 13:15:59.82 ] tupleってfusionよりメリットある部分あるの?
760 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 15:08:01.25 ] 機能が少ない分全貌を把握しやすくてとっつきやすい。 TMPに馴染みのない人がfusionの説明見たら引くでしょ。
761 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 20:56:08.16 ] そしてtupleのソースコードを読んで引く
762 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 20:58:58.39 ] 俺なんかanyですらやや引きだぜ
763 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 21:23:12.42 ] any使えて嬉しいことって人生で一度でもあればいいほうだよね
764 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 21:25:13.00 ] >>753 オレオレ言語作るときに使えないか期待している。 しかし、まだ俺にそのスキルはない。。。
765 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:43:23.40 ] ヘッダをプリコンパイルヘッダーに突っ込んでも遅い。 みんなどうやってんの?
766 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:45:44.67 ] PCを買い替える
767 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:49:14.99 ] それどころかヘッダファイルをRAMDISK上に置いても遅い 極限までOCするとちょっと速くなる 結局並列ビルドが効く様な構成にしてその上でクロック周波数を極限まで上げるしかない 後はメモリアクセス速度とCPUのキャッシュ容量も効いてくるかもな
768 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 02:26:15.97 ] boostのヘッダー1個、boostを使うソース1個でも十分遅いからな。
769 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 08:09:02.14 ] 64bitにする
770 名前:デフォルトの名無しさん [2011/11/28(月) 09:48:46.81 ] 多倍長整数型の一桁ずつをint型の配列に入れるために、 多倍長整数型をまずstringに代入し、一桁ずつの分割をして、それをboostでint型に変換してみようとしています。 つまり、charを使わないで 多倍長整数→string→string一桁ずつ→int の変換をしたいのです。 お尋ねしたいのが、string→string一桁ずつの変換をどのように行ったらいいのかということなんです。 もしわかる方がいらっしゃるなら教えていただけると嬉しいです。
771 名前:770 mailto:sage [2011/11/28(月) 09:55:53.46 ] >>770 に補足で、言語はc++です。
772 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 10:14:46.90 ] 基数のべき乗で割ったあまり使えば?
773 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 10:16:56.88 ] >>772 言われてみればそうやれば簡単にできそうですね
774 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 03:44:49.48 ] OpenMPのような並列ライブラリってありますかね? 素直にboost::threadですかね・・・ boost Proの全自動インストーラーのほうが便利ですね 入れるなら
775 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 21:24:52.86 ] boost.fusionあたり使ってstd::vectorだろうが構造体だろうが かたっぱしからオブジェクトのメンバーをprintしてくれる debug関数みたいなのないですか
776 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 13:04:42.91 ] grep のことかな
777 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 18:27:57.73 ] デバッガでウオッチすればいい
778 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 19:10:34.41 ] シリアリズしてstd::cout
779 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 01:45:36.46 ] シリアライズのコードぱくれば作れそうだな
780 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 12:42:57.64 ] boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(1)); boost::this_thread::sleep(boost::posix_time::milliseconds(1)); ↑ふたつって、意味は同じ? それとも、下側のソースは、基準になる現在時刻がないから、最低の時間(オーバヘッド)のsleepになる? どういうルールでどのテンプレートが利用されるのかが理解できないです。 よろしくおねがいします。 …boostスレに書いたほうがいいです?(過疎ってるみたいなのでこちらに書いてみました。) >【初心者歓迎】C/C++室 Ver.76【環境依存OK >>836 @ 2011/11/30(水) 10:57:59.02 でも同じ質問を書きましたのでマルチです。1week経ったので引っ越しました。
781 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:53:52.11 ] boostのメルセンヌ・ツイスタを自作のアプリケーションに使用した場合にも 「著作権表示、ライセンス条文、無保証の旨」を書かないと駄目なんでしょうか? それとメルセンヌ・ツイスタに限らずboostを利用する際にライセンスに関わる注意点はありますか?
782 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 16:34:29.67 ] >>781 random/mersenne_twister.hpp を見るとライセンスがwww.boost.org/LICENSE_1_0.txt であるとわかる。 バイナリ配布にあたってはライセンス同梱は必要ないようだが、 mersenne_twister.hpp込みでソースを配布するならライセンス表示、同梱は必要だろう。 これはboost全体に言える。
783 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 16:44:24.56 ] >>782 ありがとうございます ヘッダを見ればよかったんですね
784 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 20:15:47.01 ] >>780 > boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(1)); > boost::this_thread::sleep(boost::posix_time::milliseconds(1)); > ↑ふたつって、意味は同じ? 意味は違うがよっぽど変な状況でないかぎり結果は同じ。 this_thread::sleepには指定した日時まで待機するのと指定した期間の間待機するのと二種類ある。 上側は指定した日時(たとえば01時23分45秒まで。上の例だと現在時刻の1ミリ秒後)まで待機するもので 下側は指定した期間(たとえば1秒間。上の例だと1ミリ秒間)待機するもの。 どっちになるかは引数の型で決まる。
785 名前:デフォルトの名無しさん [2011/12/15(木) 07:47:16.25 ] Boost.Regex って、UTF8 テキストに対して使えますか? 例えば、"." を検索すると”あ”等のマルチバイト文字にマッチするのでしょうか?
786 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 07:48:07.75 ] 使えない
787 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 12:25:20.07 ] ダメじゃん
788 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 13:51:07.46 ] 馬鹿には無理
789 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 06:51:38.22 ] Boost.Anyなんて使うならLuaを組み込んだほうがまし
790 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 03:53:05.45 ] variantやanyを使って実行速度遅くするなら 工夫してunion使った方がマシな気がする 実行速度を落さないunionの拡張はboostにないのだろうか
791 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 08:49:08.27 ] >>790 素の union で何が不満なの?
792 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 10:41:49.00 ] unrestricted union使うぐらいならvariantでいいや
793 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:59:33.58 ] boost::array<int,5> arr = { {1,2,3,4,5} }; arrayで要素数を省略した初期化って現状不可能ですか?
794 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 17:48:55.48 ] 微妙に意味がわからないがテンプレートをインスタンス化するときの<int,5>の5の省略は不可能(おそらくずっと)
795 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:12:16.28 ] 要素数の後決めしたいとか、array使う意味が皆無になるんだが。
796 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:51:36.87 ] やっぱり不可能ですか、、、 後決めしたいというより、ただただ書くのを省略したいだけなんですがね。。。
797 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:16:16.71 ] >>796 #include <iostream> #include <boost/array.hpp> #define ARY(t, n, ...) \ static const t n ## _[] = {__VA_ARGS__}; \ boost::array<t, sizeof (n ## _) / sizeof (n ## _[0])> n = {{__VA_ARGS__}} int main() { ARY(int, arr, 1, 2, 3, 4, 5); std::cout << arr[2] << std::endl; return 0; } 省略できてもあまり嬉しくなかった。
798 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:45:18.04 ] int a[] = {1, 2}; のような事をしたかったってことなんだろうね
799 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:56:46.18 ] まさにそれをしたかった。なぜそうしなかったかというと、境界チェック付きの 配列を使いたかったから。
800 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:55:20.06 ] 別スレで同じこといってるやつみたけど 結局boost使うことにしたのかな
801 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:54:36.97 ] ublasってopencvより遅い気がするのだけど気のせい? ublasの方が速い場合ってエクスプレッショナルテンプレートが効く場合だけ? gccのコンパイルオプションで同じぐらいの速度にならないものだろうか
802 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 14:50:46.10 ] >>797 どうでもいいがプリプロセッサの 可変長引数でコンパイルエラー 世の中C99対応のコンパイラばかりではない
803 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 14:54:39.38 ] >>801 分岐の少ない問題でOpenCVがublasごときに負けたら OpenCVの存在意義が無くなると思うが? OpenCVはGPUを使って数百の並列実行してるんだからな。
804 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:00:18.40 ] lexical_cast ってスレッドセーフ?
805 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 20:45:04.63 ] corutineはそろそろ正式リリースしてくれないものか
806 名前:progress_display mailto:sage [2012/01/08(日) 15:36:56.20 ] 明けましておめでとうございます。 挨拶が遅くなり申し訳ありませんが、今年も何卒宜しくお願いいたします。
807 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 13:20:18.76 ] >>806 開けましておめでとうございます。 ところで、後でちょっとお話がありますので、 会議室を1時間くらい予約しておいてください よろしく
808 名前:progress_display mailto:sage [2012/01/09(月) 14:36:31.42 ] >>807 やだ課長、1時間は短いですよぉ
809 名前:Regex mailto:sage [2012/01/09(月) 17:52:20.64 ] >>808 打ち合わせどうだった? 何言われたの??
810 名前:boost::tuple mailto:sage [2012/01/09(月) 20:23:36.80 ] さてと、C++11への引っ越しを始めるとするか・・・。
811 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 20:26:00.89 ] corutineがいろいろ改変されたのあって どれが一番いいのかわからない x86 amd64 のwindows linux mac で動けばいいのだけど
812 名前:progress_display mailto:sage [2012/01/13(金) 23:37:40.00 ] @typeに登録しておこう(´;ω;`)
813 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 23:51:00.44 ] shared_ptrってスレッドオフしてallocate_sharedすればintrusive_ptrとパフォーマンスたいして変わらんっすよね?
814 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 05:42:46.00 ] shared_ptrのサイズはポインタ二つ分。 共有管理オブジェクトにはweak_ptr用のカウンタもある。 大した違いかどうかは場合による。
815 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 09:35:55.06 ] メモリ intrusive_ptr 生成破棄 intrusive_ptr 参照カウント増減 shared_ptr
816 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:11:46.99 ] ttp://www.boost.org/doc/libs/1_48_0/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html 自分で定義した(例えば多倍精度浮動小数点数)型を数学関数内部でも使える様にするにはどうすればいいですか?
817 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 23:51:54.60 ] ttp://www.boost.org/doc/libs/1_48_0/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html やったことはないがその型に対してこれ↑を満たすように必要なものを自分で書けばboost::mathでその型を使えるんだろ
818 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 03:32:32.30 ] void func2( boost::array<int, 3> & c) { c.assign( 0 ); } error: invalid initialization of reference of type ‘boost::array<int, 3ul>&’ from expression of type ‘const boost::array<int, 3ul>’ arrayを参照引数にできないんだっけ?
819 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 07:59:21.04 ] >>818 おまいはエラーメッセージも読めんのか?
820 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 08:58:09.76 ] ああ!constついてました
821 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 05:12:42.79 ] boost::fusion::list a の先頭要素が a.begin() で参照できないのがちょっと気持ち悪い
822 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 23:49:52.05 ] bjamの利点がわからないのですが、autoconfとかを用いずbjamを利用してるのは何故でしょうか?
823 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 00:18:21.01 ] POCOとほとんど同じ機能持つライブラリ ありませんか?
824 名前:デフォルトの名無しさん mailto:age [2012/02/02(木) 16:01:00.05 ] ubuntuでboost入れたら一瞬でインスコ完了で使えるようになった 一方、Windowsではサイズがでかい上にビルドにかなり時間がかかる。 この差はなんでつか?ちなみにWindowsではVCで使う感じです
825 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 16:32:49.79 ] apt-get とかでパッケージをインストールしたんのなら、既にバイナリが含まれてるからだろ。
826 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 17:06:15.79 ] なるへそ Windowsでは全部落としてきて自分でビルドしたからか
827 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 01:20:40.57 ] >>823 なんでpoco不可?
828 名前:デフォルトの名無しさん mailto:age [2012/02/03(金) 08:07:34.00 ] ポコチン
829 名前:デフォルトの名無しさん mailto:age [2012/02/05(日) 22:05:47.61 ] ちんぽこ
830 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:10:55.09 ] ちんぽこ商用ライセンスだと制限きついしなぁ
831 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:01:35.59 ] VC2010 Essentialsを使っています。 boost::serializationを使うと、アプリケーションを作成するためのプロジェクトでも .libと.expを作ってくれるようになるのですが、これを抑制する方法はないでしょうか?
832 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:02:11.18 ] ちんぼ
833 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 01:54:03.78 ] っぽ
834 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 02:07:40.85 ] ぬるぽ
835 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 12:57:55.72 ] >>831 前に別のライブラリで同じ症状に遭ったことがあるけど、解決策見つからず 本当にどうしても嫌なら、ビルド後のプロセスでdelするとか・・・
836 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 15:29:48.48 ] libが生成されるってことはエクスポートテーブルもできてるんだから ファイルを消せばいいってもんじゃないだろ どこかで間違えて__delcspec(dllexport)が定義されてるんだろうね
837 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 18:34:24.22 ] serializationがらみで ttp://codepad.org/bp6RCbxw boost::shared_ptrのシリアライズコードを改造して、std::shared_ptr用の物を書いたのですが、 コレにカスタムデリータのサポートを追加するいいアイデア無いでしょうか?
838 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 22:45:06.20 ] poco高すぎだろ pro買わないとネットワーク系全滅だし
839 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 12:34:22.38 ] >>824 linuxでC++やるときってエディタ何使うんですか emacsのタグジャンプの設定で苦労した覚えが 今はもっといいのあるんだろうか
840 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 17:27:39.08 ] 現在Boostのthreadを使って、ワークパイルを管理するクラス、各スレッドに付随するクラス(ワーカーとします)を作っています。 ワーカーは仕事を一通り終えた後、管理クラスが終了許可を出すまで「待ち」を行うようにするため、mutexとconditionを用いています。 管理クラスが終了許可を出せば「待ち」が解除されてスレッドとして動作していた関数を完了するのですが、待ちが解除されるときにmutexにロックがかけられてしまいます(それより前でmutexにロックはかけていない)。 そのため、ワーカーが破棄されるときにmutexでunlock()関数を使わないとエラーが生じます。 ワーカーで行いたいことは通知が来るまで待つだけで、排他制御の必要はありませんが、わざわざunlock()を使わなければならないのでしょうか。 イメージ的にはconditionにmutexを渡さないwait()があれば期待通りになりそうなのですが、それは存在しません。 よろしくお願いします。また私の解釈に間違いがあれば指摘いただけると幸いです。
841 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 16:10:52.17 ] 待つだけでいいならミューテックスでもいいのでは…そういう話ではない…? #include <iostream> #include <boost/thread.hpp> #include <unistd.h> void f( boost::mutex* guard ) { std::cout << "worker: working" << std::endl; std::cout << "worker: waiting until the mutex was unlocked" << std::endl; guard->lock(); std::cout << "worker: finished" << std::endl; guard->unlock(); } int main() { boost::mutex m; std::cout << "main: lock a mutex" << std::endl; m.lock(); std::cout << "main: create a worker" << std::endl; boost::thread worker(&f,&m); std::cout << "main: sleeping 3 seconds" << std::endl; sleep(3); std::cout << "main: unlock the mutex" << std::endl; m.unlock(); std::cout << "main: waiting for join" << std::endl; worker.join(); std::cout << "main: finished" << std::endl; return 0; } $ ./sample main: lock a mutex main: create a worker main: sleeping 3 seconds worker: working worker: waiting until the mutex was unlocked main: unlock the mutex main: waiting for join worker: finished main: finished
842 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 17:00:53.33 ] >>841 返信ありがとうございます。 管理側は仕事追加・終了許可時に、ワーカーのインスタンスそれぞれのメンバー変数であるconditionでnotifyすることで待ちを解除させています。 ワーカーは、管理側が仕事を追加すると通知を受けて仕事を開始するためにwhileループ内で待ちを行っています。(終了許可待ちと仕事待ちは共通のconditionとmutex) void Worker::run() { while (true) { TaskData* task = NULL; while (_taskBag->getTasks(&task)) { job(task); } if (_finishable && _taskBag->numTasks() == 0) { _mtx.unlock(); break; } _cond.wait(_mtx); } } ワーカーが複数いるので、mutexロック解除で待ち解除の通知を行うと、「仕事追加→いずれかのワーカーが仕事に着手」の後にmutexの所有権が管理側に戻ってこないかもしれないので難しそうです。 まぁ実装の仕方次第でmutexだけでもいけそうですが。 あとよくよく考えると_cond.wait(_mtx)の時に暗黙的に_cond.wait(mutex::scoped_lock(_mtx))のようになっているんでしょうか。 となると、ロックがwait解除後に再度かけられてしまうのはある意味当たり前ですね。 申し訳ありません。簡潔な文章で伝えるのがもの凄く難しいですねw
843 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 07:46:49.88 ] waitにはmutexをロック済みのunique_lock渡す必要がある。直接mutexをwaitの渡せているのはたぶんVCのせい。 unique_lockのローカル変数を作ればunlockを呼び出す必要は無い。 condition_variableは他の変数と一緒に使うことが前提。 waitはnotifyの通知以外でも誤って解除されるのでbool変数などと合わせて使わないとだめ。 bool変数で確認するからにはmutexでの排他制御が必要。
844 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 09:57:29.58 ] >>843 ありがとうございます。 排他制御が要らなく見えていたので、待ちの実現だけにcondition、mutex両方を使うことに冗長さを感じていたのですが、conditionはそもそも単体では使わないものなんですね。 ちなみに_cond.wait(_mtx)の記述はXcode4.2でもできています。C++の引数1つの場合の暗黙的なコンストラクターですね。 こういう場合に暗黙的にできてしまうと見落としてしまう場合があって危険だと感じます。
845 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 11:57:41.20 ] >>844 それじゃあboostのバージョンが低いだけじゃないの?一時変数は非const参照に拘束できない。
846 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:45:57.66 ] >>845 Boost 1.48です。ちなみに上記の_mtxはワーカークラスのメンバー変数です。
847 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:55:58.52 ] >>846 そうか。あとはコードを実際に追わないと分からないわ。
848 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 07:34:07.70 ] boost::asioの非同期通信でhttpクライアントつくろうと思ってasync_read_someでデータ取ってるんだけど、何故か5kbくらいでデータが途中で切れちゃうんだ 誰かピンとくる人居ないか…助けてくれ
849 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 01:04:19.29 ] >>848 async_read_until使えば?
850 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:40:45.11 ] 今作成中のプログラムに<boost/thread.hpp>と<boost/thread/condition.hpp>をインクルードすると、システムのlocale_facets.tccとboostのshared_count.hppにおいて大量のエラーが発生します。 これらのファイル自体には問題は無く、何らかの依存関係でエラーが出ているんだろうということは想像がつくのですが、全く原因がわかりません。 何かこのような現象について心当たりのある方は居られないでしょうか。 Xcode4.2で、ヘッダーサーチパスには/opt/local/includeを(boostはこの下にインストール)設定しています。ライブラリーファイルのリンクも行っています。 よろしくお願いします。
851 名前:デフォルトの名無しさん [2012/02/15(水) 19:46:15.26 ] >>850 ですが、自己解決しました。申し訳有りません。 原因はboostを使っているソースファイルとは別のファイル内で定義した「swap」という名称のマクロでした。 それぞれのソースファイルを最終的にmain関数で参照する形となっていたためにboost内の何かとマクロ名が衝突したようです。 自分で定義したswapをユニークな名称に変更することで解決しました。 今後どなたかの参考になれば幸いです。
852 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:49:52.51 ] こらたかし!マクロは全部大文字にって言ったでしょ!
853 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:30:41.91 ] さすがにswapをマクロ名にするのはないな
854 名前:デフォルトの名無しさん [2012/02/15(水) 22:26:50.21 ] cpp側なら問題なかったのですが、実装も含めたヘッダーに書いてしまったのが盲点の原因でした...
855 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:40:49.07 ] 気が、狂っとる
856 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:45:19.13 ] 君は優秀な人材だぜひマイクロソフトに就職しなさい
857 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:53:13.67 ] >cpp側なら問題なかったのですが よくねぇよ。 規格にちゃんと、 「標準ライブラリーのヘッダーをincludeする翻訳単位は、全標準ライブラリーヘッダーで宣言されている名前を#defineもしくは#undefしてはならない。」 と書いてある。 だから、ひとつでもどれか標準ライブラリーのヘッダーをincludeしたならば、swapという名前は#defineも#undefもできない。
858 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:06:42.94 ] min max
859 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:27:50.00 ] >>857 swapって名前標準ライブラリーにあるの?
860 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:29:27.19 ] あぁalgorithmにあるのか。使ったこと無かったわ。
861 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:29:55.03 ] 嘘だろ…
862 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:34:09.02 ] iostreamをインクルードするだけで使えるというのに・・・。
863 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:44:50.77 ] >>859 名前だぞ名前。 クラスのメンバーにも等しく適用されると何故わからないんだ。 多くの標準ライブラリのクラスがswapという名前のメンバーを持っているのを知らないのか。
864 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:11:46.32 ] >>858 MSは禿にごめんなさいしないといけないよね
865 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 03:25:04.66 ] C++にテンプレートが無い様な時代から既に用意されてたんだから 後出しのハゲが謝りお願いすべき
866 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 03:49:30.66 ] 小文字が入ってるマクロ名は紛らわしいから コンパイラが警告吐いてくれたらいいのにな
867 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 07:22:59.71 ] assertみたいなマクロ実装関数で警告が出ることになるか ところでassertをキーワードに昇格させて定数式なら コンパイル時エラー出す設計にはできなかったのかな そうするとstatic_assertと書き分けなくて良いような気もするけれど
868 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 12:13:03.95 ] 例によってCとの互換性が
869 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 12:38:53.66 ] staticの方はともかくassertってあんまし使わなくねーか?
870 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 12:38:56.08 ] iOS開発でObjCのコンテナクラス類使わずにどうもSTL/boost多用してしまうんだけど 果たしてこれはよくないのかどうか・・・
871 名前:デフォルトの名無しさん [2012/02/16(木) 15:37:52.34 ] threadのwaitってどこのサイトみても … while(!ready) { cond.wait(lock); } … のようになっていますよね。これを起こす場合には ready = true; cond.notify_all(); とすると思うのですが、while分の!readyを判定してからcon.waitをかけるまでの間に上記の起こすコードが呼ばれた場合には、動かなくなってしまう気がします。 これを回避する方法などあるのでしょうか。timed_waitでしょうか。
872 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 18:47:36.71 ] >>871 cond.wait(lock);でロックを要求している素晴らしい設計を無視するなよ
873 名前:デフォルトの名無しさん [2012/02/16(木) 19:01:27.73 ] >>872 ありがとうございます。 よくよく考えてみるとwhile文の前と起こすコードの先頭でミューテックスをロックすればいいんですね。 今まで引っかかっていたものがスッキリとれました!
874 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 21:10:13.56 ] >>872 ,873を理解するまで1時間かかってしまった
875 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 18:51:24.80 ] 1.49出たのに反応なしか
876 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 01:31:34.53 ] 小学生並みの発想だな
877 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:05:48.47 ] 中学生並みの反応だな
878 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 21:26:03.54 ] 大学生並の考察だな
879 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 22:17:31.08 ] 院生並の皮肉だな
880 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:36:14.79 ] 社会人並みの判断だな
881 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:51:07.07 ] 年金生活者は余裕だな。
882 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:00:44.76 ] 病院生活並の苦労だな
883 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 09:58:05.77 ] 世捨て人並の達観だな
884 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 18:03:57.16 ] 銀河皇帝並みの独断だな
885 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 00:18:09.27 ] 原子核級の大志だな
886 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 14:27:31.51 ] 風俗嬢並の偏屈だな
887 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 00:11:07.28 ] 俺並みの性欲だな
888 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 00:46:18.10 ] 風説の流布
889 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 02:29:45.81 ] 痛風の呂布
890 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 09:45:46.39 ] 風呂の風俗
891 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 18:41:57.17 ] 温泉の効能
892 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 20:16:36.14 ] 駄レスがスレをboostする!
893 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:11:17.86 ] 歌舞伎町の893
894 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:36:25.70 ] ゲスの極み
895 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:45:41.65 ] お肉の厚み
896 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:07:56.91 ] boostってC++11の要素は取り込みはじめてるの?
897 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:33:35.99 ] C++11がBoostを取り込んだの間違いだろ Boost.Moveのことなら知らん
898 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:37:49.12 ] Boost.Chrono とかは C++11 からの逆輸入。
899 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:49:09.56 ] 既存コンパイラで動くようにしてくれてるならいいことだ
900 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 00:46:51.29 ] ◆ 便利な今までに出た風説の流布一覧 伝説の流川 伝説の呂布 解説の掛布 風疹の漁夫 ふーてんの流浪 妖鳥の流布 入れ墨の鯨布 風の谷の呂布 骨折に湿布 聖教新聞の配布 電設の鈴木 通風の湿布 テンセルの毛布 テンソルの分布 ピンサロの主婦 風雪ながれ旅 風雪の露天風呂 風俗で炉利 風俗の幕府 風てんのトラ 温泉の掛川 風の谷のナウシカ 季布の一諾 空席の椅子 秀策の棋譜 特攻の拓 ピンフの20符
901 名前:progress_display mailto:sage [2012/03/19(月) 23:18:49.04 ] 最近おれっちの話が出来ていないが、C++11先取りしておれっちを実装するコンパイラってまだ出てきてないの?
902 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 20:20:56.52 ] serialization を使ったときに、exe ファイルにいろんなシンボルがエクスポートされるのを防ぐ方法ってないでしょうか?
903 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:34:46.67 ] 仕様です
904 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 06:51:48.14 ] >>901 あれ、あなた風の噂で左遷されたって噂を聞いてたけど・・・?
905 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 19:36:20.60 ] boost::optional<int> test () { return 1; } void func { if (auto i = test() && i.get() != -1) { return ; } } これコンパイル通らないけどどうして?
906 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 20:00:01.39 ] funcの定義
907 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 20:16:53.92 ] void func () { ↑
908 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 21:59:09.93 ] >>905 エラーメッセージ見ろよ。
909 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 00:58:06.25 ] >>906-908 そこじゃなくて >if (auto i = test() && i.get() != -1) { 俺が言いたいのはこっちのほうだった auto i = test()この段階で初期化されてるはずなんだけどどうして無理なんだろう
910 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 01:05:06.21 ] >>909 規定された条件部の文法↓にマッチしないから。 condition: expression attribute-specifier-seq/opt decl-specifier-seq declarator = initializer-clause attribute-specifier-seq/opt decl-specifier-seq declarator braced-init-list
911 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 01:25:55.07 ] >>910 そもそも規格上無理なのね ありがとう
912 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 16:18:52.52 ] テンプレートクラスのメンバ関数を、 boost::threadとboost::bindで呼び出して、別スレッドで動かしたいのですが うまくいきません。ご教授願います。 template<class T> class TestClass : public T { public: TestClass(void) : T() {} }; class TestBase { public: void print(TCHAR *str){ cout << str << endl; }; }; typedef TestClass<TestBase> MyTestClass; int _tmain(int argc, _TCHAR* argv[]) { TCHAR *char str = _T("test"); MyTestClass myTestClass; myTestClass.print(str); // 正常に動作 boost::thread myThread(boost::bind(&MyTestClass::print,str)); // ←コンパイルエラー // c:\Program Files\boost\boost_1_47\boost\bind\mem_fn.hpp(333): error C2296: '->*' : 無効な左オペランドです。 }
913 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 17:52:34.92 ] >>912 boost::bindでクラスのメンバ関数ポインタを拘束した場合、第一引数はそのクラスのインスタンス(かインスタンスのポインタとか)になる boost::bind(&MyTestClass::print, myTestClass, str)
914 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 18:08:58.52 ] >>913 ありがとうございます。無事にコンパイルが通りました。
915 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 19:19:10.20 ] boost::threadを使って、メンバ関数ではなくて、 クラスそのものを別スレッドで動かしたい場合は、どのように指定すればよいでしょうか?
916 名前:915 mailto:sage [2012/04/21(土) 20:04:05.95 ] boost::threadに渡せるのは関数ポインタだけなのかな? boost::threadにクラスのコンストラクタを渡せば、そのクラスは別スレッドで動いてくれるのかと思ったけど 勘違いでしょうか?
917 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 20:54:52.22 ] クラスが動くってなんだ? ・・・って関数オブジェクトのことか? 関数オブジェクトのインスタンスを渡せばそのoperator()を別スレッドで実行させることはできる
918 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 21:32:08.83 ] >>916 具体的にどんなコードを書きたいのかここに出したほうが良いと思う。
919 名前:915 mailto:sage [2012/04/21(土) 21:36:19.05 ] ウインドウクラスをクラス化したので、 そのクラスを別スレッドにして、プロシージャなどの処理をしたかったんです。 とりあえず、グローバル関数作って、その中でクラスのインスタンスを作って、 boost::threadでそのグローバル関数を呼び出す形にしてみました。 いちいち関数を作るのも面倒なので、無名関数でやってみようかな。 無名関数使ったことないけど。
920 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 02:06:07.47 ] JavaやFlashで使われている、イベント/リスナーをC++で実現したいのですが、 boostを使ってできますでしょうか?
921 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 02:13:52.12 ] >>920 イベントはシステム側の要求でとある時に「この処理をどうします?」ってプログラマに聞くことなのでそれは可能。 で、リスナは結局デリゲートかなんかに処理をキックする機構なので、 例えばバインドなどでインスタンス関数をイベントに渡したりしたとして、そのインスタンスの寿命がなくなって無効になるタイミングをコントロール出来れば可能だろう。 と、言うわけでできなくは無いけど、GC無いからそこをどうにかしないと難しいと思う。
922 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 18:39:55.58 ] boost::graphについて質問です。 例えば、RPGゲームのマップ移動の最短経路を求めたいとします。 ただしマップを通過できるかどうかは条件があって、 ・一定のキャラクターレベルを超えていないと通れない ・特定のアイテムを所有していないと通れない などの条件があります。 私の考えたチープなやり方では、propertyでマップノードごとにRequireLevel、RequireItems などを持たせて、 レベルによってグラフノードの書き換えをする関数、 DisableGraphByLevel(graph,characterInfo); アイテムの有無によってグラフノードの書き換えをする関数、 DisableGraphByItem(graph,characterInfo); などを処理してから、グラフに対して最短経路アルゴリズムを実行するという形です。 ただ、これだと処理後に毎回グラフを元に戻さないといけないし、 条件がより複雑なものが追加されるとこの形では対応できません。 それに第一、スマートではありません。 boostっぽく処理するにはどのように設計すればよろしいでしょうか?
923 名前:やんやん ◆yanyan72E. mailto:sage [2012/04/26(木) 02:13:10.40 ] www.boost.org/doc/libs/1_49_0/libs/graph/doc/dijkstra_shortest_paths.html これの、distance_mapとか、distance_compareとかdistance_combineとかを うまく定義すれば、グラフを書き換えなくても望みの動作をさせられるんでない?
924 名前:922 mailto:sage [2012/04/27(金) 14:45:37.73 ] >>923 ありがとうございます。参考にして見ます。 boostを使うだけでなく、boostの中身を理解して、自分でアロケーターだとか イテレーターとか作ってみたいと思っているのですが、 やんやんさんのように高度に詳しくなるには、どういった書籍やサイトがお勧めでしょうか? よろしければ教えてください。
925 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 18:41:03.11 ] document嫁
926 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 22:27:30.41 ] >>905 if (auto i = test() && i.get() != -1) { ↓ auto i = test() && i.get() != -1; ↓ auto n = test() && i.get() != -1; auto i = n; 多少構文をばらしてみれば無理なの解るだろ
927 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 22:29:18.96 ] >>920 boost::functionとboost::bindと、なんかブロードキャストするクラスか なんかがあったから、それ組み合わせりゃ楽にできるよ
928 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 22:43:36.06 ] >>924 興味があるところから入っていって、もっと知りたいと思ったら勝手に詳しくなるもの
929 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 23:47:34.23 ] >>920 boost::signals2はどうだろ
930 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 00:07:51.46 ] <boost/thread.hpp>をインクルードすると下記のエラーが出ます。 どうすればいいでしょうか? 開発環境はVC++ 2008/2010 WinXPです ソースコードは metalphaeton.blogspot.jp/2011/04/boostthread.html ここにあるものをそのまま使いました 1>c:\program files\boost\boost_1_47\boost\thread\win32\basic_timed_mutex.hpp(160) : warning C4793: boost::detail::basic_timed_mutex::unlock': ネイティブ関数としてコンパイルされました: 1> マネージ コードでサポートされていない組み込み型が見つかりました 1>c:\program files\boost\boost_1_47\boost\thread\win32\thread_primitives.hpp(314) : warning C4793: boost::detail::win32::interlocked_bit_test_and_set': ネイティブ関数としてコンパイルされました: 1> マネージ コードでサポートされていない組み込み型が見つかりました 1>main.obj : warning LNK4248: 未解決の typeref トークン (0100001F) ('boost.detail.win32._SECURITY_ATTRIBUTES') です。イメージを実行できません。
931 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 00:31:14.34 ] >>930 本当にC++ですか?
932 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 07:07:29.09 ] >>930 C++/CLIはC++じゃありません
933 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 12:40:42.28 ] C++/CLIではthreadはうまく動かない 昔いろいろやってコンパイルだけはできるようになったけど、結局動くことはなかった
934 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 13:07:13.78 ] C++/CLIはスレッド出来る。.NETとおなじ機能。 C#でも不可能と言うことになる。
935 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 15:37:34.03 ] .NETのVMのスレッド用API機能とWin32のスレッド用API 混在してもまともに動く気がしない
936 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 15:43:05.54 ] >>934 933の言っているのはboost threadの話。 boostスレだからboostは省いたんだろう。
937 名前:デフォルトの名無しさん [2012/05/25(金) 18:04:12.87 ] spirit::qiで質問なんですが、Attributeを捨てることって出来ないんでしょうか? stringを返すruleを使うと、一番上までstringを返さないと存在しないAttribute(string)にアクセスしようとして 不正落ちしてしまいます。 パース中に使用し終わって、解析後にまで残す必要ないものなので捨てたいんですが・・・ あとついでに >>757 www.boost.org/doc/libs/1_49_0/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html このディレクティブを使えばiterator_rangeを受け取れるようです
938 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 09:10:19.76 ] VisualStudio 2010 でboost::filesystem::directory_iterator の leaf() を使いたいんですが Version 1.36 では使えません、どのバージョンなら使えますか。 もしかして、まだ、未対応ですか?
939 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 09:14:06.80 ] 2年前に1.42で使ってたきがした。 少なくてもその辺以降なら使えるんじゃないだろうか。 後は詳しい人よろしく
940 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 09:26:54.17 ] leafって名前変わらなかったっけ?
941 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 10:10:51.40 ] >>938 です thx です。 ごめんなさい、バージョンを間違えていました。 boost_1_46_1 でした。が、leaf() って使えないんですね? <boost/filesystem/fstream.hpp> を調べると #if BOOST_FILESYSTEM_VERSION == 2 # include <boost/filesystem/v2/fstream.hpp> # else Visual Studio 2010 ではundef になっています? leaf() ってboost/filesystem/v2/fstream.hpp に入っているようなので どうしたら使えますか?
942 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 10:26:23.13 ] 自己解決しました マクロできってやるだけで、V2使えました。
943 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 18:33:25.03 ] leafはpathに名前変わった ってもう見てないよね
944 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 23:13:13.00 ] path().filename() だろ
945 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 00:15:07.24 ] boost.intrusive でコンテナに同じ要素を2つ以上登録するのってできないの? lets boostの例で同じ要素追加しようとしたらエラーになった lst.push_back(*pa); lst.push_back(b); lst.push_back(c); lst.push_back(*pa); ここでおかしくなる
946 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 11:28:56.17 ] auto d = *pa; lst.push_back(d); しよう
947 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 11:38:00.10 ] >>945 できない。仕組み考えればわかるだろ class hoge { hoge *prev; hoge *next; int value; } みたいな構造でprevやnextに自分自身のポインタを入れてリンクの終端を探して探索すれば無限ループになる
948 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 21:50:25.15 ] boost::interprocess::shared_ptrってプロセス間通信用の名前空間に入ってるけど、 DLLの入出力なんかに使ったら、常にexeとdllで同じバージョンに保っとかないと クラッシュするよね。なんで:interprocessの中に入ってんの?
949 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 23:31:39.75 ] >>948 ? それをいうならshared_ptrに限らず異なる領域にあるモジュール間の通信に使うものは 双方のモジュールで互換性のあるものを使わないと問題がでるけど。 (必ずしも同じバージョンの同じライブラリを使う必要はない。そのほうが単純に楽で確実性が高いだけ) それとBoost.'Interprocess'は名前どおりのプロセス間通信用に限定されたものでなくスレッド間通信用のライブラリでもある。
950 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 22:18:05.21 ] >>949 やっぱダメなんやね。 外から見るとテンプレートで型安全。 内部ではvoid* で保持。 実装ははpimplでDLLに配置ってな感じで 自前でスマポ作らないと安全な仕様は無理か。
951 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 22:45:31.07 ] 両方自前ならknown/rquest versionのやり取りするだけじゃん?