1 名前:デフォルトの名無しさん [2009/01/19(月) 21:22:22 ] 過去スレ 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/
2 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:28:03 ] >>1 乙
3 名前:デフォルトの名無しさん [2009/01/19(月) 21:31:09 ] 乙 こ、これは>>1 乙じゃなくて>>2 乙なんだからね!
4 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:31:40 ] ■関連書籍■ Boost C++をチューンアップする最先端ライブラリ www.amazon.co.jp/exec/obidos/ASIN/4894714191/ Boost C++ Libraryプログラミング www.amazon.co.jp/exec/obidos/ASIN/4798017043/ Beyond The C++ Standard Library www.amazon.co.jp/exec/obidos/ASIN/0321133544/ C++ Template Metaprogramming www.amazon.co.jp/exec/obidos/ASIN/0321227255/ The Boost Graph Library www.amazon.co.jp/exec/obidos/ASIN/0201729148/ ■関連スレ■ C++相談室 part65 pc11.2ch.net/test/read.cgi/tech/1230341243/ C++0x 4 pc11.2ch.net/test/read.cgi/tech/1214407525/ 【C++】STL(Standard Template Library)相談室 11 pc11.2ch.net/test/read.cgi/tech/1231640024/
5 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:32:40 ] Loki sourceforge.net/projects/loki-lib/ JTC1/SC22/WG21 - The C++ Standards Committee www.open-std.org/jtc1/sc22/wg21/ POCO, the C++ Portable Components www.appinf.com/poco/info/ sourceforge.net/projects/poco/ The unofficial BCB Boost patches bcbboost.sourceforge.net/
6 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:34:00 ] テンプレは以上です. >>4 に ・Boost C++をチューンアップする最先端ライブラリ を加えたのと, ・Boost C++ Libraryプログラミング のリンクを第二版に修正しました.
7 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 01:04:16 ] コンパイラ VC8 boost 1_37_0 次のコードがC2780連発です。 #include <boost/bind.hpp> #include <boost/numeric/interval.hpp> using namespace boost; using namespace boost::numeric; int main() { bind(&in, 3, interval<int>(2, 4)); } 何か対処法などご存知の方いらっしゃるでしょうか? find_ifなどの条件式に使いたいのですが。
8 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:08:01 ] >>7 in のテンプレート引数を指定すれば、とりあえずうまくいくと思うけどbind(&in<int, interval<int>::traits_type>, 3, interval<int>(2, 4)); もっと簡単にかけるかどうかはわからんです
9 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 16:07:04 ] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ まピョーん☆ / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
10 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 02:09:13 ] OS: Mac OS X 10.5.6 コンパイラ: gcc 4.0.1 boost: 1_37_0 この環境で,filesystemをソースからビルドしてパスを通して, g++ test.cpp -lboost_filesystem-gcc40-mt-1_37 みたいにコンパイルしようとすると,リンカがsymbol not foundとエラーをはきます. ubuntuでは問題ないためmac特有の問題だと思うのですが,原因,対策がお分かりの方いらっしゃいませんか? ちなみに,以下がコンパイル結果です. g++ test.cpp -lboost_filesystem-gcc40-mt-1_37 Undefined symbols: "boost::system::get_generic_category()", referenced from: __static_initialization_and_destruction_0(int, int)in ccCDIN5Z.o (長いので中略) libboost_filesystem-gcc40-mt-1_37.a(operations.o) __static_initialization_and_destruction_0(int, int)in libboost_filesystem-gcc40-mt-1_37.a(operations.o) ld: symbol(s) not found collect2: ld returned 1 exit status
11 名前:10 mailto:sage [2009/01/22(木) 02:20:10 ] ソースコードは以下の通りです. #include <boost/filesystem.hpp> using namespace boost; int main(int argc, char** argv) { filesystem::path dir("test"); filesystem::create_directory(dir); return 0; }
12 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 07:21:21 ] >>8 コンパイルできました。 ありがとう。
13 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 09:19:21 ] >>10 -lboost_system-mt
14 名前:10 mailto:sage [2009/01/22(木) 16:35:26 ] >>13 無事コンパイルできました. 冷静に考えてみると,エラーを見たらboost::systemを参照してたんですね... それにしてもなんでmacだけ挙動が違うんだろうか. とにかくありがとうございました!!
15 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 17:21:16 ] ubuntuに入ってるのが1.34.1以前なんじゃね
16 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 18:33:46 ] 更新しました。 ttp://booster.x0.to/
17 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:08:29 ] いったい何人が落としてるのか知らんが RSS配信でもしてテンプレにURL貼るとかすりゃいいのに 毎度毎度スパムのように貼るな と言ったら荒れるのだろうか
18 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 08:17:34 ] >>17 そうカリカリすんな。お前は本物のスパムにもマジレスするのか? 目障りだと感じたなら黙ってあぼーんするだろ?
19 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:04:12 ] もうすぐ1.38ですね。 何が変わったのか楽しみ
20 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 15:45:15 ] 0xまでC++はおあずけ
21 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 11:03:31 ] 0xいらね
22 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:18:01 ] マイクロ秒の値をミリ秒に変換するのにboost::unitsを使うのは重すぎ? 1000で割るだけのことなんだけど、1000倍する人がいたりするので、 こういう仕組みを導入する必要もあるかもしれないと思って勉強してるんだが、 思ったより複雑でちょっと挫折しかけてる。
23 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 10:54:49 ] >1000で割るだけのことなんだけど、1000倍する人がいたりするので、 >こういう仕組みを導入する必要もあるかもしれないと思って勉強してるんだが、 そういう仕組みを導入するより、1000倍して尚且つテストもしてみない阿呆を切るべき。
24 名前:デフォルトの名無しさん [2009/01/26(月) 11:30:44 ] boost::functionより速いらしい・・・ www.codeproject.com/KB/cpp/fastdelegate2.aspx
25 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 18:14:43 ] >>24 実装は面白いけれどさ。 正直言って速度差は微々たる物だなぁ。 呼び出しにかかる時間は、現実的に問題にならない。 実際のコードでは、桁が何桁も違うくらい遅い処理を、その呼び出された関数の中でするはず。 すると一千万回呼んで500〜1000msぐらいの速度差なんてどうでも良くなってしまう。 劇的に違うのはコピーにかかる時間で、 これはBoost.Functionの実装ではヒープを使っているために目に見える速度差がでるんだろうけど。 一千万回コピーして十秒足らず。 そんなにコピーする?
26 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 18:33:18 ] それよりコンパイルが早いのがほしいわ
27 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:13:44 ] >>26 激しく同意
28 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:15:05 ] 公共の仕事に配属された。 boost禁止だと・・・orz
29 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:23:06 ] コンパイル早くするのはマシン変えるのがいいんじゃね。
30 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:13:36 ] そりゃ、下手すりゃ数十年単位で保守を続けるプログラムに変化の激しいboostは論外だろ。 大人しくC++0xの正式リリースを待て。
31 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:47:25 ] boostのソースもってきて独自実装に入れちゃえよ。
32 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:00:44 ] boostのソースコードを使うことにはライセンス的にまったく問題ないわけだから、 お前の書いたコードして使うってのはだめなの?
33 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:43:46 ] そのBoostのコードだれかメンテできんのか? あ,本家のコードに追随して更新していけばいいか…
34 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 08:46:32 ] >>33 俺は自分がメンテできるとこだけ移植してるな その過程でソースを詳しく見ることになるので いろいろと勉強になることも多い
35 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 10:45:02 ] >>33 別に更新し続けなければいけない理由はないだろ。 もし、自分が「更新されたboostに追加された機能」を使いたいなら必要だけど。
36 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 17:11:35 ] boost.intrusive.listでアロケータを設定したいのですが設定できませんか? std::allocatorや自作のアロケーターをテンプレートレベルで混在させたいですぅ。
37 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 17:30:30 ] すみません自己解決しました。
38 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:21:57 ] 1.38のリリース準備が完了したみたいですね。
39 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 00:06:48 ] New Libraries: Flyweight, ScopeExit, Swap. Updated Libraries: Accumulators, Exception, Hash, Multi-index Containers, Proto, Unordered, Xpressive ttp://beta.boost.org/users/news/version_1_38_0
40 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 00:54:31 ] >ScopeExit もう自前でscope_guard書く必要がなくなるんだろうか
41 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:04:22 ] boost::hoge を文章の中で言うときは boost.hoge って書くことになってるの?
42 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:43:31 ] >>41 いいえ
43 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:52:32 ] 更新しました。 ttp://booster.x0.to/ 迷惑という意見が多い様でしたらサイトを閉じます。
44 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:16:05 ] >>43 稀によく落とすからなくなると寂しい。 とは言え更新箇所わからないし最新版欲しかったら自分からチェック入れるからな。
45 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 01:29:45 ] >>43 気にせず続けてくれ
46 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 02:04:04 ] 更新の通知の仕方に文句を付けられただけなのに、いきなりサイト閉鎖とは気が早いな。
47 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 07:21:27 ] あれ!? >>43 のサイトまじで消えてる!!
48 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 09:18:59 ] 今日は1.38のリリース日だー(・∀・)
49 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:40:19 ] >>47 あるよ。リロードしてごらん boostの発展のためには、ライブラリを簡単に使えるよに支援してくれるサイトの存在は良いことだと思うよ。
50 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 22:45:18 ] もうすぐ1.38 wkwkbnbn
51 名前:デフォルトの名無しさん [2009/02/01(日) 20:12:06 ] >>43 サイトを閉じることで更新の報告がなくなるのなら、ぜひお願いします。
52 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:37:30 ] スレの保守を兼ねていて悪くないとは思うんだけどな。
53 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:48:11 ] 更新報告でスレが埋まる訳でも無し >>51 は個人的に恨みでもあるのか
54 名前:デフォルトの名無しさん [2009/02/01(日) 21:28:51 ] >51 むしろお前がなくなればいい
55 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:21:23 ] >>43 様の報告レスがあれば保守ageをしなくて済むというメリットが
56 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:46:27 ] では次回から、SVNのコメントから重要そうなものを幾つか抜粋して 書き込み時に添える様に致します。
57 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 13:48:03 ] あー、それなら更新点報告ということで役にも立つな。
58 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 17:32:05 ] 便利なサイトだった コメントつけたことはなかった
59 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 10:03:03 ] 1.38がまでリリースされてない件について!!
60 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 10:34:25 ] beta2出たのが1/30だぜ?
61 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:46:37 ] C++0xが出た後のboostはどうなるんだろうね。 0x拡張分の6割だか7割だかはboost発祥だそうだし、 0xとの重複分を廃止した上で新たなクラスを追加構築していくのかな?
62 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 16:54:35 ] いやいや、非対応の古い処理系向けに残ってくれないと困る。 今だってTR1が出た後にunorderedとかhashとか追加しているくらいだ。
63 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:50:53 ] C++0xが広く普及するまではlambdaにはboost版はやっぱり必要だもんな。 0xの普及が遅いとboost版から抜けられなくなるかも
64 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 18:08:47 ] すみません、#ifdefでboostが使えるかどうかの判定ってできますか?
65 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 18:32:57 ] >>64 ヘッダーが読み込まれていれば頭で何らかのシンボル定義してるだろうから、それで確認?
66 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 18:37:09 ] >>65 ありがとうございます。やってみます。
67 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:07:35 ] ヘッダーの読み込みが余所で行われている前提ならともかく自分で #include するなら boost 使えない時にエラーになっちゃうし。 普通そーいうのは configure とかでやる。
68 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 11:40:39 ] boostの正規表現ライブラリって日本語対応してないんだな。 ショック
69 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 12:29:26 ] wide char版なら使えるんでは?
70 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 17:22:40 ] >>68 boost::wregex boost::u32regex 好きなほう使え mingwでicuのstatic作るのにmakefileかなり修正させられた。
71 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 18:23:49 ] boost::regexよりもboost::xpressive(非静的記述でも)のほうが速いって認識であってる?
72 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 19:53:36 ] UTFにすることで日本語も問題なく使えるんじゃなかったっけ?
73 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 04:48:31 ] 更新しました。 ttp://booster.x0.to/ 今回から、前回のビルドからの変更点を記載したchangelog.txtを同梱する様に致しました。 以下その一部 Fix bug in bessel_jn for n == -1. Add new test case. Modified : /trunk/boost/math/special_functions/detail/bessel_jn.hpp Modified : /trunk/libs/math/test/test_bessel_j.cpp Added missing config.hpp include for the wide characters support configuration macro. Modified : /trunk/libs/date_time/test/testfrmwk.hpp Changed to two_bit_color_map by default Modified : /trunk/boost/graph/dijkstra_shortest_paths.hpp Default color map to white, and fixed some warnings Modified : /trunk/boost/graph/two_bit_color_map.hpp Add missing #include <iostream>. Modified : /trunk/libs/asio/example/buffers/reference_counted.cpp Modified : /trunk/libs/asio/example/chat/posix_chat_client.cpp Modified : /trunk/libs/asio/example/nonblocking/third_party_lib.cpp Make validation a static member function. Fixes #2673 Modified : /trunk/boost/random/inversive_congruential.hpp Modified : /trunk/boost/random/linear_feedback_shift.hpp added missing std:: Modified : /trunk/boost/flyweight/intermodule_holder.hpp Use a pipe if eventfd is not supported at runtime. Fixes #2683. Modified : /trunk/boost/asio/detail/eventfd_select_interrupter.hpp Ensure arguments to windows::overlapped_ptr::complete() are passed through to the completion handler. Fixes #2614. Modified : /trunk/boost/asio/detail/win_iocp_overlapped_ptr.hpp fix wrong include Modified : /trunk/boost/fusion/include/remove.hpp
74 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 05:47:16 ] >>71 長い条件以外では大体そんな感じだと思ってる ttp://www.boost.org/doc/libs/1_37_0/doc/html/xpressive/appendices.html
75 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 11:13:26 ] >73 毎回そのまま張るとまた論議を呼びそうな気が。 張るんなら↓みたいにまとめた方が見やすいんじゃないだろうか。機械的処理も可能だし。 各ファイルの Added とかは要らないのでは、と思って抜いてみたんだけど Graph とかは厳しいな。 [Math] - Fix bug in bessel_jn for n == -1. - Add new test case. [DateTime] - Added missing config.hpp include for the wide characters support configuration macro. [Graph] - Changed to two_bit_color_map by default - Default color map to white, and fixed some warnings [Asio] - Add missing #include <iostream>. - Use a pipe if eventfd is not supported at runtime. Fixes #2683. - Ensure arguments to windows::overlapped_ptr::complete() are passed through to the completion handler. Fixes #2614. [Random] - Make validation a static member function. Fixes #2673 [Flyweight] - added missing std:: [Fusion] - fix wrong include
76 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 11:26:23 ] 現在何がアクティブなのかがわかって便利だね
77 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:03:26 ] >>74 thx たいていの場合で2倍以上速いんですね
78 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:18:47 ] Boost.Regexオブジェクト構築に毎回コストがかさむのですが、 すべてクラスの変数にするとかしかないのかな。 いっぱい関数有るんでめんどくさいわ・・・
79 名前:78 mailto:sage [2009/02/08(日) 00:36:08 ] 変更が少なくていいので、 とりあえずstatic変数にすることにしました。
80 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 19:50:24 ] 1.38.0きてるお
81 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:14:02 ] spiritのast_treeの質問なんですが、 //型名など一部省略してます spirit::rule intp, expp; intp = leaf_node_d[int_p]; expp = int_p >> *(root_node_d[ch_p(L'+')] >> int_p); 上記のようなルールで、スキップパーサにblank_pを指定して 1 + 2 を構文解析させたとき、スキップ指定しているにもかかわらず、 2つ目の値のツリーの結果に、+から2までの間のスペースが' ''2'といった 感じに含まれてしまうのですが、leaf_node_dはそういう仕様なんでしょうか? (1つ目の値はスペースは含まれていない) リーフノードにスペースを含まないようにするには、スキップパーサを指定してても intp = no_node_d[*blank_p] >> leaf_node_d[int_p]; の様に、ルール側でもスペースを飛ばすしか方法がないのでしょうか?
82 名前:81 mailto:sage [2009/02/09(月) 22:51:59 ] 訂正 expp = intp >> *(root_node_d[ch_p(L'+')] >> intp);
83 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 18:41:55 ] 更新しました。SVNは1.39に移行しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Units] Zeroing in on bug with sun < 5.9 Begin tracing xlc failure [Graph] Integrating SOC 2007 code Importing all_cliques, all_cycles algorithms Importing geodesic distance module from SOC. Imported clustering coefficient, eccentricity and core numbers algorithms. [Regex] Fixes #2713: change table initialisation so that it's initialised statically. Workarounds to allow compilation by Sun studio without the -library=stlport4 option. [Random] correctly detect the end of the range in lagged_fibonacci_01::seed. Fixes #2703 Split random_test.cpp into multiple files to avoid hitting resource limits. Correct stringizing [Spirit] Bug fix to iterator 亦、2月8日付で1.38の正式版もリリースされました。 ttp://www.boost.org/users/news/version_1_38_0 >>75 有難うございます、改善致しました。
84 名前:デフォルトの名無しさん [2009/02/13(金) 18:54:59 ] ttp://booster.x0.to/ を利用してる奴どれくらいいるの? 手あげて
85 名前:デフォルトの名無しさん [2009/02/13(金) 19:11:38 ] 利用してます bccのバリなりもほしいです
86 名前:デフォルトの名無しさん [2009/02/13(金) 19:13:19 ] 自鯖なら、ダウンロード数、アクセス数は把握してるんでは?
87 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:35:58 ] age厨は自演で何をしたいんだ? 前スレから延々つきまとってるだろお前。
88 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:41:16 ] >81 の質問はスルーですか? 他所のastのサンプルでほぼ同じようなコード書かれてるけど、 スキップ文字が入るなんて説明ないし自分のミスっぽい気はするんですが。
89 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 10:26:38 ] 少なくても最近ここに訪れている人の中には回答できる人はいないと思う。
90 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 10:40:56 ] つかえねー
91 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 11:23:14 ] >>88 > >>81 の質問はスルーですか? お前が答えてやれよ。
92 名前:デフォルトの名無しさん [2009/02/14(土) 12:57:25 ] >>81 blank_p ではなく space_p tamachan.club.kyutech.ac.jp/~gridbug/spirit/spirit01.html
93 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:02:52 ] >>92 やっぱ、違うっぽいorz
94 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:14:53 ] >>81 intpいらない。int_pは元々単一ノードとして解析される。 expp = int_p >> *(root_node_d[ch_p(L'+')] >> int_p); 多分、leaf_node_dがint_pの前にスキップされた空白をノードに取り込んでるんだろう。
95 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 16:04:06 ] >>94 int_pのみだと空白スキップされることはまでは試して 気がついてたのですが、int以外の自作トークンが使いたいときに どうすれば良いのかで悩んでます。 やはりno_node_dで空白飛ばすのが正答なんでしょうかね。
96 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 17:43:19 ] >>95 バグかも知れんね。 spirit/tree/common.hppの907行あたりを書き換えたら予想通りの結果になったよ。 if (hit) { std::advance(from, std::distance(from, scanner.first) - hit.length()); return result_t(hit.length(), factory_t::create_node(from, scanner.first, true)); }
97 名前:統合しました。。。: mailto:sage [2009/02/14(土) 18:08:11 ] pc11.2ch.net/test/read.cgi/tech/1234420483/ 真・スレッドリスターター。。。( ̄ー ̄)ニヤリッ
98 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 18:08:15 ] >>96 なるほど、そうでしたか。 チュートリアルなどでもこの不具合の発生するコードがあるのに 今まで誰も問題にしなかったみたいだし、割と最近の修正で 混入したバグなんでしょうね。 わざわざ調べていただいて、ありがとうございました。
99 名前:89 mailto:sage [2009/02/14(土) 22:21:42 ] >>96 正直侮りすぎた。スマンかった。
100 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 04:17:45 ] 謝らなくていい。ただ邪魔だから消えろ。
101 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 13:09:53 ] それよりその不具合についてコミットしといたほうがいいんでは
102 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 14:41:28 ] boostは読めるけど英語は読めません
103 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:17:28 ] >>102 辞書引け
104 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 20:49:17 ] タイトルをast_tree value bug ? とでもして、 症状の出る最小のコード書いて、tree.value の結果書いて // bug ? とでも書いとけば多分汲み取ってくれるだろう。 該当フォーラムのアドが分からんので自分はコミットできませんけど。
105 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:11:19 ] this sentence is written in japanese. あとはローマ字で適当に書いておけ。
106 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:34:08 ] スマートポインタを昨日から触り始めました。 これはokなのに、 boost::scoped_ptr<string> s( new string("foo") ); これはコンパイル出来ない仕組みなのはなぜ? boost::scoped_ptr<string> s; s = new string("foo"); たとえばコンストラクタの中でinit関数を呼んで その中でポインタ初期化したい場合とかどうすればいいんだ
107 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:40:20 ] s.reset(new string("foo"));
108 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:40:21 ] >>106 s.reset(new string("foo"));
109 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:18:39 ] >>106 ひとつのポインタを別々のshared_ptrに代入してはいけないのでポインタを=で代入できないようにしている。newしたらすぐにスマートポインタにセットさせるのが基本。 スマートポインタをスマートポインタに=を使って代入は可能のでこれを使って共有する。
110 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 00:07:42 ] shared_ptrだと boost::scoped_ptr<string> x; boost::scoped_ptr<string> y( new string("foo") ); x = y; scoped_ptrだと x.reset(new string("foo")); と理解しました。 init関数でresetって違和感ありますが、こういうものなのでしょうか。 scoped_ptrを初期化子リストでnewしない場合は 設計を見直した方がいいのかな
111 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:03:57 ] 見直した方がいいかもね。結果は変わらないかもしれんが。
112 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:12:04 ] shared_ptrでもresetできるよ、一応念のため。
113 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 03:44:59 ] >>110 コンストラクタから例外投げないとか言うアホなコーディング規約に縛られてるんでもなければ 初期化リストで new しとけ。
114 名前:113 mailto:sage [2009/02/17(火) 03:46:52 ] あれ?ごめん。 init() はコンストラクタの中で呼ぶのね。 そうなると初期化リストで new しない理由がわからん。以下 >111 と同文。
115 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 08:31:26 ] boostのshared_ptrの資料に、無名オブジェクトを使った以下のコードはfunc2が例外を投げるとリークの可能性があると書いてたけどどう? func(shared_ptr<Hoge>(new Hoge(),func2( )) newしてfunc2が評価されて例外投げるとshared_ptrにセットされる前の可能性があるかららしいけど、この評価順は規格上未定義だからって普通にあるの?それとも規格上ありうるってこと?
116 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 10:23:47 ] >>115 Effective C++にも 「やるな」 って書いてなかったっけ?
117 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 11:04:26 ] >>115 経験談だけど引数の評価順はかなり簡単に変わるから普通にある 評価順に依存してバグが起こるコードだとマジヤバイ 当然コンパイラ次第なのだけど,デバッグ用の最適化なし,と,最適化あり,にするだけで変わったりする デバッグで問題見つからなくて泣きそうになったことある
118 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:53:23 ] そんなクソコードはマクロでも使わなきゃでてこないんじゃね?
119 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 03:38:54 ] スマートポインタどうこうは別にして 評価順によるバグなんて本能的に避けるだろ。 たまに、新米プログラマで、変数使わないで長い式をグダグダ一気に書くのが かっこいいと思ってる奴がいるから困る
120 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 19:09:25 ] ,を越えて評価順が混ざるとは思わなかった。
121 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 19:56:50 ] >>120 115の例に表れるカンマは関数呼び出しの一部だよ。 順次演算子としてのカンマなら、たしかに評価順序点になるけど。
122 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 21:44:14 ] 更新しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Units] Get rid of duplication between conversion_helper and conversion_factor_helper. [Graph] Updating core_numbers from David Gleich. Importing examples from SOC 2007 [Random] Change shfit2 to shift2. Add missing namespace scope definitions of shift1 and shift2. Fixes #2764 Convert uniform_01 to the current distribution interface, dispatching on the first template paramter to retain backwards compatibility. Fixes #599. Fixes #1544. Fixes #2679 [Ptr_container] fixed bug in ptr_sequence_adapter.hpp, plus removed some warnings in detail/reversible_ptr_container.hpp. added new overload of new_clone() that allows for null-values. removed nasty bug in erase() [Fusion] use vectorN instead of vector for shorter names #define to allow testing if unused_type has IO [Interprocess] Ticket #2766: error in boost::interprocess::file_lock::swap [intrusive] Ticket #2755: compile error in boost_intrusive 1.38.0: a set of classes with protected destructor [Spirit] Fix: rename "boost::math" to "boost::spirit::math". Remove :: from memcpy() [Serialization] Correction to extended_type_info implementation
123 名前:デフォルトの名無しさん [2009/02/21(土) 13:25:35 ] boost.graphについてですが、 検索を途中でキャンセルするのは例外を使用するしかない? 例:幅優先で検索し、目的のvertexが見つかったらそこで 検索をやめる。 boost.graph自体は基本的な例外安全は確保されているみたい なので例外の使用自体に問題はないとは思いますが・・・。
124 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 13:51:45 ] >>123 それは例外ではないから例外で抜けるのは不適当だろう。
125 名前:123 mailto:sage [2009/02/21(土) 14:02:45 ] 全検索関数を途中やめること自体が例外的・・・。 (言葉遊びですな)
126 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:06:21 ] 使用するに足る理由があって他の方法より適当だと思えば 例外でも何でも使えばいいと思うよ 例外だからってエラー処理以外に使わざるべしという論理的根拠はない
127 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:11:55 ] エラー処理以外に例外を使って地雷を踏む例は多いんだが、地雷原と知ってもなお進むというなら止めはしない。
128 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:14:17 ] 実装できないよりましだな
129 名前:123 mailto:sage [2009/02/21(土) 17:46:38 ] >>126 >例外だからってエラー処理以外に使わざるべしという論理的根拠はない 同意です。ただ他の方法があるのかという質問です。 例外使えないときもあるし。 >>127 具体的には? 例外安全に関する話題?
130 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:05:52 ] 見つからないってのはエラーではないのか?
131 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:11:13 ] 例外は単なるステートメントの1つである。
132 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:30:14 ] 例外しか方法ないなー 全部黒にしてvisitorの実行を抑制することならできるけど それでも走査することには変わりねぇしな つうことは見付かった時点で全部を辿るって前提が満たされなくなるから例外でいいんじゃないと
133 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 23:53:50 ] 別にチョコボの不思議なダンジョンのリサイクルボックスみたいに n回使ったらバグが発生するとかそういうものでもないんだから、 そこまでして忌避したり意味を考えたりとかしなくていいんじゃなかろうか。
134 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 00:16:53 ] Let's Boostの人スゲーなアグレシップすぎwwwwwwwwwwwwwwww
135 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 00:51:26 ] なんか変わってる? そういや中の人は院卒業したんだっけか。
136 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 08:04:34 ] >132 >全部黒にしてvisitorの実行を抑制することならできるけど TerminatorFunc を使うってことでいいですか?
137 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 09:48:29 ] >>135 名前と写真が出るわ出るわ
138 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 10:27:09 ] 海外では顔出しも本名出しも普通だろ ガキじゃねーんだからキャーキャー騒ぐなよ
139 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 16:50:27 ] クラスのメンバ関数をパラメータ的に扱いたいんだけどどうすればいいかな。 こんな感じのことがしたいんだけど。 class A { public: void func_a1(); void func_a2(); }; class B { public: void func_b(); } template<???> void call_twice(???) { //オブジェクトとメンバ関数を引数にとってメンバ関数を2回呼ぶ } int main() { A a; B b; call_twice(a,func_a1); call_twice(a,func_a2); call_twice(b,func_b); }
140 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 17:24:13 ] つ boost.function
141 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 17:33:21 ] 単にメンバ関数へのポインタを使えば十分だろう。 Boost的には、bind使えば引数一つにまとまられるよと言うくらい。
142 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 18:17:25 ] そのレスはほんとうに単純にメンバ関数へのポインタを渡すような誤解を与えるぞ。 メンバ関数へのポインタをどう使うのかを書かないと。 このスレ的には>>140 を使うことを前提にしてるんだろうけど。
143 名前:139 mailto:sage [2009/02/22(日) 21:29:21 ] レスどうもです。 boost.function使ってみました。結構いい感じ。 で、つかぬことをおききしますがboost::functioinを使った場合インライン展開はされるのでしょうか。 速度が必要なもんで気になります。 一応アセンブラをみて見たんですが俺にはよくわからない。(´・ω・`) 関数ポインタならインライン展開されなさそうなきがするんですが。
144 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 21:42:00 ] されないね。
145 名前:139 mailto:sage [2009/02/22(日) 21:47:28 ] そですかー(´・ω・`) ありがとうございます。 boostってテンプレートだけじゃなくて意外と中でマクロも使われてるんですね。 いっそマクロの併用も検討するか…
146 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 21:58:17 ] ちなみに関数ポインタもあんまインライン展開はされないぞ。
147 名前:141 mailto:sage [2009/02/22(日) 21:59:17 ] >>142 単にこれでいいだろうというつもりで書いた。やや楽観的期待だが、インライン展開もされるだろう template<typename T> void call_twice(T x, void (T::*p)()) { (x.*p)(); (x.*p)(); } int main() { A a; B b; call_twice(a, &A::func_a1); call_twice(a, &A::func_a2); call_twice(b, &B::func_b); }
148 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:02:38 ] >>143 速度が必要なら仮想関数や関数ポインタは向かないね。 テンプレートで展開されるようにしたほうがいいかも
149 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 23:51:22 ] 147くらいのコードだと頭のいいコンパイラはインライン展開しちゃうけど、 たぶん142は何らかのデータ構造にメンバ関数を保存して必要なときに 実行とかいう使い方をするだろうから最終的には間接参照が最低一回 必要になると思う。 とりあえずテンプレート使ってみた版 template <class T, void (T::* func)()> void call_twice(T t) { (t.*func)(); (t.*func)(); } int main() { A a; B b; call_twice<A, &A::func_a1>(a); call_twice<A, &A::func_a2>(a); call_twice<B, &B::func_b>(b); }
150 名前:139 mailto:sage [2009/02/23(月) 00:15:36 ] >>149 うおっ!なんかすごいのきたw テンプレートの引数にvoid (T::* func)()なんて使えるのかー。 カルチャーショックだぜ。 もっと精進せねば。 どうもありがとうございます。
151 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 11:43:44 ] >>149 この形式だと inline 化されるというのを昔 Cryolite 氏が実験してたな
152 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 12:18:33 ] テンプレート引数に関数クラスを渡す方法ならかなり自由度が上がるかも
153 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 16:41:31 ] ひとつ相談なのですが、初期サイズの違う複数のpoolを同時に使うくらいなら boost::pool<> pool(1) にして (T*)pool.ordered_malloc(sizeof(T)) でひとつのpoolを共有すべきですか?
154 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 18:32:23 ] >>153 サイズの種類が限られてるなら同時につかえばいいんじゃないか?
155 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 18:41:34 ] やったことは無いんだけど、4バイト未満のチャンクって作れるのかな
156 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 09:25:08 ] >>153 以前ordered_mallocを使ってnew []演算子を作ろうと思って試したことがあるが、 普通のnew[]演算子よりむちゃくちゃ重くなった。 おそらくメモリプールに指定のサイズの領域が空いてるかどうかチェックする処理が重いんだと思うけど…
157 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 09:45:16 ] 常識的に考えて、その方法が速いならnewの実装なんてとっくにそうなってるに決まってるだろ……
158 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 10:43:02 ] >>154-157 ありがとうございます。参考になりました 今回は型ごとにpoolを作ろうと思います ordered_mallocが使用される回数を極力抑えられるように書いてみます
159 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:17:56 ] boost::lambda::bindで下のコードがコンパイルエラーとなります。 (1)のところを la::bind(&human::use, man, la::var(t))(); としても同じでした。 因みにboost::bindを使用した場合は bind(&human::use, man, ref(t))(); とするとコンパイルエラーが発生しないようになりました。 lambda::bindを使用した場合にでるコンパイルエラーを回避する方法はないでしょうか? 環境:WinXP, VC8, boost1.38.0 // main.cpp #include <boost/lambda/bind.hpp> #include <boost/lambda/lambda.hpp> #include "create.hpp" #include "human.hpp" #include "tool.hpp" namespace la = boost::lambda; int main() { human man; tool* t(create_tool()); // toolは抽象クラス la::bind(&human::use, man, t)(); // -----(1) delete t; }
160 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:18:48 ] 長いので分割失礼します。 // human.cpp 略... void human::use(tool* t) { t->hoge(); } 略... // tool.hpp class tool { 略... virtual void hoge() = 0; 略... [コンパイル] main.cpp \XXX\boost/tuple/detail/tuple_basic.hpp(419) : error C2259: 'tool' : 抽象クラスをインスタンス化できません。 次のメンバが原因です: 'void tool::hoge(void)' : は抽象型です \YYY\tool.hpp(6) : 'tool::hoge' の宣言を確認してください。
161 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:55:08 ] 突然ですが、おまえらに問いたい! boostのイメージカラーは何色?
162 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:01:09 ] マ板でやれ
163 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:03:29 ] >>161 失せろクズ
164 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:48:39 ] >>161 二度とくんなカスが
165 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:49:15 ] >>161 VIPでやれ
166 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:53:55 ] ここまで俺の自演
167 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:12:16 ] >>159 create_toolの中は?
168 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:21:11 ] >>162 〜166 オメーも反応すんなヴォケ しかも一人で無駄に投稿すんな。
169 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:23:56 ] 159です。 >> 167 // create.cpp class hammer : public tool { public: 略... void hoge() { // 実装 } 略... }; tool* create_tool() { return new hammer; } といった感じです。 toolの具象クラスのhammerは表に出ないようになっています。
170 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:17:28 ] >>169 とりあえずboost::refをつけたら、こっちではコンパイル通った la::bind(&human::use, boost::ref(man), t)(); // -----(1) GCC 4.0.1, boost 1.38.0
171 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:59:16 ] 159です。 >>170 確かに void human::use(tool*); ならそれで通りますね。ありがとうございます。 私の実際のコードでは void human::use(tool&); となっていまして、教えて頂いたようにしても同じコンパイルエラーが発生してしまいます。
172 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 07:01:49 ] >>171 *と&はまったく違う意味だぞ。 そこで一時オブジェクトを作ろうとしてエラーになってるんじゃないのかconst tool&にしてみろ
173 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:59:28 ] 159です。 >>172 void tool::hogeがconstでないのでtool const&とはできません。 一度実際のコードを載せてみます。 // create.hpp #pragma once struct tool; tool* create(); // create.cpp #include <iostream> #include "create.hpp" #include "tool.hpp" using namespace std; struct hammer : tool { void effect() { cout << "gotin\n": } tool* create() { return new hammer; } // human.hpp #pragma once struct tool; struct human { void use(tool& t); } // human.cpp #include "human.hpp" #include "tool.hpp" void human::use(tool& t) { t.effect(); }
174 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 10:00:01 ] // tool.hpp #pragma once struct tool { virtual ~tool() throw() {} virtual void effect() = 0; }; // main.cpp #include <boost/lambda/bind.hpp> #include <boost/lambda/lambda.hpp> #include <memory> #include "create.hpp" #include "human.hpp" #include "tool.hpp" using namesace boost; using namespace std; namespace la = lambda; int main() { auto_ptr<tool> t(create()); human man; la::bind(&human::use, la::var(man), la::var(*t))(); }
175 名前:デフォルトの名無しさん [2009/02/25(水) 11:30:52 ] struct pred { pred(int){}; ←(A) void operator()(int v) const { std::cout << v << "\n"; } }; boost::function_output_iterator<pred> fi(pred(0));←こうするには(A)が必要 boost::function_output_iterator<pred> fi(pred());←(A)を消してこう書くことができない←(B) std::vector<int> v(boost::counting_iterator<int>(0),boost::counting_iterator<int>(10)); std::copy(v.begin(), v.end(), fi);←(B)だとここでエラー std::copy(v.begin(), v.end(), boost::make_function_output_iterator(pred()));←これだと(A)がなくてもOK make_function_output_iteratorは(B)と同じことしているんじゃないの?
176 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:25:21 ] const tool&を使わずに抽象クラスを渡すには、どうにかしてコピー可能にする必要がある。 tool*を使うか、ref(t)で渡す。
177 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 13:16:26 ] 159です。 >>176 tool*でならmain.cppの最終行を la::bind(&human::use, la::var(man), t.get())(); としてやれば良いのですが tool&をhuman::useの引数にすると la::bind(&human::use, la::var(man), la::var(*t))(); は、やはりエラーとなりますね。 la::bind(&human::use, la::var(man), boost::ref(*t))(); としてもエラーです。 腑に落ちないのが boost::bind(&human::use, boost::ref(man), boost::ref(*t))(); ならコンパイルが通ること。 lambdaの内部を追っているわけではないのでなんともいえませんが、 ユーザからすると、この動作は奇妙に思えます。 boost::bindとboost::lambda::bindは互換性があると勝手に思っていたの で意外です。 boost::cref => boost::lambda::constant_ref boost::ref => boost::lambda::var という理解も間違っているのでしょうか?
178 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:13:20 ] main.cpp \XXX\boost/tuple/detail/tuple_basic.hpp(419) : error C2259: 'tool' : 抽象クラスをインスタンス化できません。 次のメンバが原因です: 'void tool::hoge(void)' : は抽象型です \YYY\tool.hpp(6) : 'tool::hoge' の宣言を確認してください。 とでてるので、抽象クラスをやめたら la::bind(&human::use, man, (*t); でエラーにならない。 lambda::bindのどっかで抽象クラスをインスタンスかしようとしてるんだろう
179 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:15:02 ] マニュアル読む限り boost::ref => boost::lambda::var は間違ってると思う。 boost::ref は参照型だけど、lambda::var は参照じゃない
180 名前:179 mailto:sage [2009/02/25(水) 14:34:38 ] >>179 すまん、間違ってた。 やっぱ参照みたい。
181 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:05:38 ] boost.cppll.jp/HEAD/libs/lambda/doc/ar01s04.html
182 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:31:50 ] 159です。 >>181 そのページは私も読みました。 boost::refはboost::lambda::varに置き換えられると理解しております。 >>178 でしょうね。 しかし、実装上の事情はどうであれ、インタフェースとしては抽象クラスの参照を bindの引数にすることを可能としていなければいけないように思えます。 何か回避策がlambdaにあるのではと思うのですが直ぐには見つけられませんね。 ご存知の方いないでしょうか?
183 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:55:58 ] la::bind(&human::use, la::var(man), la::var(boost::ref(*t)))(); でどうか?
184 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:57:52 ] >>182 抽象クラスはインスタンス化できない。それをしようとしているからエラーになる。 テンプレートの引数に参照で渡したいときはref( )を使えば参照が渡せる。
185 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:05:31 ] >>182 >>159 >bind(&human::use, man, ref(t))(); boost::bind できるんなら、boost::lambda::bindにこだわる必要ないでしょう
186 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:10:46 ] bindのプレースホルダによる汚染が怖いとかじゃないんでしょうか
187 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:25:05 ] 159です。 >>183 目から鱗ですね。 それでいけました。 ありがとうございます。 >>185 boost::bindとboost::lambda::bindの混在は面倒なトラブルが発生することが あるので避けています。 皆さんありがとうございました。 他にもスマートな方法があればお教え頂きたいと思います。
188 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:27:25 ] >>183 それでいける理由が知りたい
189 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:44:07 ] 簡単に言うならreference_wrapperとidentityにより型の解決が遅延されて、 早期の解決によって束縛される値が参照型から値型になってしまうことを防ぐことができるから かなぁ
190 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 21:07:02 ] lists.boost.org/boost-users/2005/07/12450.php
191 名前:デフォルトの名無しさん [2009/02/26(木) 16:50:17 ] 「参照型から値型がになってしまう」とはどんな具体的にどんな状況ですか? できれば最小のサンプルソースが見たいです。
192 名前:デフォルトの名無しさん [2009/02/26(木) 16:51:37 ] >>189 「参照型から値型がになってしまう」とは具体的にどんな状況ですか? できれば最小のサンプルソースが見たいです。 typo があったので再投稿。
193 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 18:09:02 ] まだtypoがある件
194 名前:189 mailto:sage [2009/02/26(木) 19:39:19 ] >>191 一言で言えば、remove_referenceを使えばそうなる。 以下、var(ref(*t))で上手くいくかの理由の大まかに解説する remove_referenceはメタ関数deduce_non_ref_argument_typesで使われている、 このメタ関数はlambda_functor_baseが具現化される際に、束縛する値の型を保持する為のタプルの型の要素に対して適用される。 なのでvar(ref(*t))以外での渡し方をすると型計算の結果、tool&やconst tool&を要素として持つタプルの型が生成される。 するとtupleを構成する型に抽象型toolが含まれてしまい、tupleを実体化するときにtoolを実体化しようとしてエラーになる。 実際はtupleはconsで実装されているのでコンパイルエラーはconsのheadメンバの宣言の時点で発生する。 そこでduduce_(ryの時点でreference_wrapper<tool>になるようにしてremove_referenceを防ぐためにboost::ref()を使うわけだけど、 boost::refだけだとbindに渡された時点でbind_tuple_mapper内での型の解決によりtool&型になってしまうので、それを防ぐためにvar()を使う。 すると問題になっているtupleの要素の型はdeduce(ryを経てもidentity<reference_wrapper<tool> >のままになり、 結果boost::lambda::bindの返す関数オブジェクトはこの関数オブジェクトをそのままtupleの要素として保持することになる。 そしてこのidentity<reference_wrapper<tool> >は生成した関数オブジェクトが呼び出される際、つまりoperator()が解決されるときに、 identity、reference_wrapperの解決を経てtool&として解決される。 要するに>>189 というわけだ。 これ以上詳しく知りたければboostのコード読んでください。
195 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:28:29 ] 乙
196 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 22:01:56 ] 更新しました。今週はソースの追加や削除が多いです。 ビルド用の設定ファイルもチューニングされ、今迄フルビルドに1時間弱掛かっていたのが20分に超高速化されました。 ttp://booster.x0.to/ 以下更新内容の一部 [Gil] GIL: fixed Ticket 784: Wrong initilization of data members in packed_pixel constructors [Utility] Fixed const issue of value_initialized according to ticket #2548. [Functional] adds missing template parameters for partial specialisations Fix the hash dirname. [Serialization] fixed namespace [Archive] permit start/end load/save to be overridable [Fusion] updates functional module: only two unfused variants, now Fix: remove non-existent test [Random] Initialize _modulus in the linear_congruential constructor that takes a pair of iterators. Fixes #2665 [Unordrered] Make copy_buckets and move_buckets member functions - so that calling them is a bit simpler. Move some of the data structure classes out of hash table data. [Config] Merge branches/cpp0x into trunk, enabling a bunch of BOOST_NO_* macros for C++0x early adopter feature tests [Math] Merges changes from Sandbox version: MPFR Support. New distributions: laplace, logistic and hypergeometric. Added C# usage example.
197 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 01:30:27 ] >今迄フルビルドに1時間弱掛かっていたのが20分に超高速化されました マジかよwwwww
198 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 10:06:36 ] RubyのModule的なことをしたいんだけど可能? 関数を用意しておいて他のクラスにその関数をメンバとして追加したいです。 Rubyのコードだと以下のようになります。 module MyModule def extend_function print "extend_function\n" end end class MyClass include MyModule end object=MyClass.new object.extend_function
199 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 10:10:56 ] C++0xスレで拡張メソッドが話題になったばかりだから覗いてみるといいかな
200 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 03:21:34 ] >198 struct MyModule { void extend_function() { // …… }; }; class MyClass : public MyModule {}; 派生クラスを操作する必要がある場合は template<typename T> struct MyPolicy { MyPolicy& self() { return *(static_cast<MyPolicy*>(this)); }; void extend_function() { // …… }; }; class MyClass : public MyPolicy<MyClass> {};
201 名前:200 mailto:sage [2009/03/02(月) 03:22:29 ] あ、間違えた template<typename T> struct MyPolicy { MyPolicy& self() { return *(static_cast<T*>(this)); }; void extend_function() { // …… }; };
202 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 04:05:44 ] >>201 selfの戻り値もT&だろ。
203 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 09:50:38 ] 大元のclass MyClassの記述を変更せずに、という(多分)そもそもの目的に外れるのでは。 何か便利な文字列操作メソッドを追加したいとかで使うんだろうけど、 std::string弄るわけにはいかないし。
204 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:34:46 ] 思ったんだけどstructとclassの違いって何だろう?
205 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:37:18 ] >>204 継承とメソッドのデフォルトがpublicかprivateかの違いだけ
206 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:42:52 ] Boost.Iterator使ってイテレータ作るときのオブジェクトはstructにしないとコンパイルエラー出るな デフォルト継承の問題のようだが
207 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:36:56 ] >206 つ friend class boost::iterator_core_access;
208 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 21:25:08 ] ARM用にクロスコンパイルができない。bjamで正しく設定すればコンパイル通るのか
209 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:44:20 ] 更新しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Config] config: add cpp0x files not added after merge config: fix both BOOST_HAS_LONG_LONG and BOOST_NO_LONG_LONG getting defined at the same time for some compilers [Math] Add option to disable use of std::fpclassify. Fix for no long double support. [Bind] Make bind.hpp and mem_fn.hpp forward to bind/bind.hpp and bind/mem_fn.hpp. (Ref #2238) [Unordered] Add missing return for operator=. [Smart_ptr] Move smart_ptr into boost/smart_ptr/*.hpp (refs #2239). Fix enable_shared_from_this-related tickets in trunk. Refs #2126. Refs #2584. [Signals2] Merged Signals2 from sandbox to trunk. [Graph] Fix: Avoid compiler warning if BOOST_NO_HASH is already defined.
210 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 23:57:23 ] あのーーー >>209 にうpされてるのVC2005では使えないんですか?
211 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:47:58 ] VC2008SP1でビルドしておりますので、VC2005では恐らく使えないと思います。 次回からその旨分かる様に、ファイル名に"VC2008"を追加致します。
212 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:53:37 ] >>211 そうなんですか、同じコンパイラメーカーのでもバージョン違うと駄目なんですか,orz
213 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 04:54:22 ] >212 少し古いバージョンで良いならこっから落とせるよ。 2003, 2005, 2008 用をインストール時に選択可能。 ttp://www.boostpro.com/products/free
214 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 09:40:22 ] コンパイラによって関数の対応状況変わるから調べたほうがいいよ
215 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:57:29 ] 最近はヘッダファイルをジャンルごとにディレクトリ切るように移行中なのか。 あとspirit使うとclassicのヘッダファイル使えと警告出るんだけど、classicじゃないspiritの使い方って どっかに書いてあるんだろうか・・・(公式ドキュメントも前のまんまだった)
216 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:05:58 ] >>215 spiritはV2になるから準備じゃないか?今のマニュアルがclassicに相当するようだ。 俺も最近spirit始めたところで悩んだ。 classicヘッダは名前空間がclassicに変わってるから注意だ
217 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 20:47:14 ] すでに自己解決した問題なんだけど、ぐぐっても日本語の情報が見つからなかったので、垂れ流しておきます。 環境依存(MinGW)っぽい話で、ここに書くべきか分かりませんが。自分の環境は OS: Windows XP (Home Edition, SP2) コンパイラ: gcc version 3.4.5 (mingw-vista special r3) boost 1.38.0 <boost/date_time/filetime_functions.hpp> がインクルードされるときに以下の警告が出ます。 > (略)/boost/date_time/filetime_functions.hpp:101: warning: left shift count >= width of type この警告は、該当のファイルの99行目と100行目の UL を ULL に書き換えると出なくなります。 書き換え前 > const uint64_t c1 = 27111902UL; > const uint64_t c2 = 3577643008UL; 書き換え後 > const uint64_t c1 = 27111902ULL; > const uint64_t c2 = 3577643008ULL; こういう解決法でいいのか、よく分かりませんが。今のところ Boost Trac のTicket #2809で報告されています。
218 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 15:59:34 ] > const uint64_t c1 = UINT64_C(27111902); > const uint64_t c2 = UINT64_C(3577643008); じゃ駄目なの?
219 名前:217 mailto:sage [2009/03/13(金) 16:26:19 ] >>218 そっちのほうが良さそうですね。(そのマクロは初めて知りました) 私の環境では、マクロ __STDC_CONSTANT_MACROS を自分で定義しないとUINT64_Cが使えませんでしたが、 定義するとうまく行きました。後の人の参考までに。
220 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 17:54:45 ] 更新しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Signals2] some inspect cleanups (mostly getting rid of tabs). Finally fixed some odd test errors on msvc9. [Smart_ptr] De-optimize assignment into this_type(r).swap(*this) Attempt to fix como link failure. [Functional] Move hash_fwd into the hash subdirectory. Remove deprecated headers. [Math] Misc. small platform specific fixes and expected error rate adjustments. [Fusion] Protected unused_type by an ADL barrier [Numeric] added unit test for LU decomposition add new constructor from vector to permutation matrix [Serialization] checked in new type trait - is_virtual_base_of.hpp Try new version of is_virtual_base_of.hpp [Wave] Wave: now compiles even with BOOST_FILESYSTEM_NO_DEPRECATED defined [Typeof] BOOST_TYPEOF_NESTED_TYPEDEF now supports expressions containing "this" for VC compilers [Detail] Initial commit. [Config] Added configuration macros BOOST_NO_AUTO_DECLARATIONS and BOOST_NO_AUTO_MULTIDECLARATIONS. [Function] 60% speedup on a micro-benchmark that copies and calls such function objects repeatedly.
221 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:17:11 ] boost1.36.0を使っているのですが、ファイルの絶対パスから相対パスを取得する良い方法は何か無いでしょうか…?
222 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:29:11 ] あれ?relative_path()ってまさにそのためのメソッドじゃなかったっけ?
223 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:05:03 ] ublasにqr分解する関数ないですか? lu分解はあるようなんですけど
224 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 18:58:20 ] >>223 「ublas qr分解」で検索すると、boost.ublasで実装した例が見つかるくらいだから、 直接qr分解するような関数はないんじゃね?
225 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 13:45:04 ] pythonのc apiが変更になるみたいだけど boost.pythonは対応してくれるんだろうか 特に日本語文字列を渡せるかあたりが変わるとか
226 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 15:24:07 ] この機会にLuaとかSquirrelとかに移行してみるというのはどうだろう。 いやもちろん用途次第だけど。
227 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 15:46:02 ] v8でJavaScriptとか・・・ 試してみたらかなり楽に使えたんでびっくりした
228 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:49:16 ] >>226 Boost.Luaとか期待しています。
229 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 18:07:26 ] pythonってライブラリのサポート率が凄く高いんだよね。 だから簡単に他に移行するのは、結構難しいんじゃないかな。
230 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 09:20:09 ] じゃあ俺はBoost.AngelScriptを期待。
231 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 18:54:29 ] 更新しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Type_traits] Add is_virtual_base_of. Add extra tests for is_base_of to test virtual inheritance. [Math] Add instrumentation code and some FPU control options. Updated the sign functions to use Johan Rade's fp-utilities code. [Serialization] Use new is_virtual_base_of [Config] Revert 51733 - it broke the regression testing system [Proto] work around issue with <termios.h> #define'ing B0 add proto::noinvoke to block metafunction invocation in ObjectTransforms [Tuple] fixed tuples::length not having a specialization for const tuple<> and const null_type
232 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:16:11 ] 以下のコードでVC++2005だとエラーは出ませんがIntelC++11だと「オペランドの型に互換性がありません ("boost::foreach_detail_::rvalue_probe<const ListInt>" と "const ListInt")」というエラーが出ます。どうしたら回避できるんでしょうか? #include <boost/foreach.hpp> #include <list> typedef std::list<int> ListInt; int _tmain(int argc, _TCHAR* argv[]) { ListInt A; ListInt& B=A; const ListInt& C=A; BOOST_FOREACH(const int& i,B) { } BOOST_FOREACH(const int& i,C) //ここでエラー { } return 0; }
233 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 09:12:24 ] まったくの勘で物をいってすまないが、 BOOST_FOREACH(int const& i,C) とかでだめかな?
234 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 09:35:01 ] BOOST_FOREACH(const int& i,C) も BOOST_FOREACH(int const& i,C) も同じ意味
235 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 09:37:23 ] そもそもconst int&でなくintにしてみたらどうだろう。 それでだめならforeachの実装覗くしかないんじゃね。
236 名前:デフォルトの名無しさん [2009/03/21(土) 12:06:26 ] class step_iterator : public boost::iterator_facade<step_iterator,int , boost::bidirectional_traversal_tag> { public: explicit step_iterator(int v, int s = 1):value(v), step(s){} private: friend class boost::iterator_core_access; void increment() { value += step; } void decrement() { value -= step; } int& dereference() const { return value; } bool equal(const step_iterator& other) const { return value >= other.value; } int value; int step; };
237 名前:236 [2009/03/21(土) 12:07:13 ] >>236 int に対する iterator で increment でstepずつ増やす iterator を 作ってみてるのですが、dereference() の箇所で error C2440: 'return' : 'const int' から 'int &' に変換できません。 とエラーになってしまいます。 メンバーのvalueをintへのポインターにして、dereference()で*valueを 返す様にしたら期待した動作をしてくれます。 また、const_cast しても期待した動作になります・・・ なぜ、int では駄目なのでしょうか?
238 名前:デフォルトの名無しさん [2009/03/21(土) 12:46:15 ] d.hatena.ne.jp/electrolysis/20090220/1235059204 ここのUDP通信のソースで質問なんだけど、 send_to()ではIPとポート指定してるのに、 何故recv_from()では必要無いんですか? boost::asio::ip::udp::socket がIPとかを記録するんじゃないかと思ったんだけど、 リファレンスマニュアル見ても明確に書いてなかった
239 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 14:32:08 ] >>236 メンバ関数のconst外す or 戻り値にconst付ける >>238 郵便を送るには送り先住所が必要ですが、受け取るにはポストを設置しておけばいいだけです。 receive_fromに渡しているendpointは差出人の住所を受け取るためのバッファです。 ちなみにそのページの非同期コードは未定義だね。
240 名前:デフォルトの名無しさん [2009/03/21(土) 15:00:11 ] >>239 >>戻り値にconst付ける error C2440: 'return' : 'const int' から 'int &' に変換できません。 >>メンバ関数のconst外す error C2662: 'step_iterator::dereference' : 'const step_iterator' から 'step_iterator &' へ 'this' ポインタを変換できません。 iterator_core_access::dereference が static typename Facade::reference dereference(Facade const& f) { return f.dereference(); } だから const はずせないです。
241 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:04:38 ] >237 > int& dereference() const const メンバ関数なので this は const step_iterator*。 従って、メンバの value も const int になります。 これは変更不可能なので、変更可能な参照 int& として返すことができません。 value を int* にした場合は、int * const になり、ポインタ値としては const ですが、 指している int の値は変更可能なので int& にできます。 > public boost::iterator_facade<step_iterator,int , boost::bidirectional_traversal_tag> > int& dereference() const ではなくて > public boost::iterator_facade<step_iterator,const int , boost::bidirectional_traversal_tag> > const int& dereference() const でどうでしょう?
242 名前:デフォルトの名無しさん [2009/03/21(土) 15:18:52 ] >>241 うまくいきました。 dereference()して値を変えたい場合は、ポインターなどにしてやる必要があるんですね。 >const メンバ関数なので this は const step_iterator*。 >従って、メンバの value も const int になります。 >これは変更不可能なので、変更可能な参照 int& として返すことができません 調べてると、「mutableでないと駄目」とか書いてあったけど、↑のことだったのか・・・
243 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:58:49 ] >>238 recv_fromはbindでポートと結びついてるソケットで読み込んでるからでないの?
244 名前:238 [2009/03/21(土) 16:17:09 ] >>239 UDPでは(?)どのポートに来たメッセージも受信できちゃうってことですか? >>243 bind()ではポート番号とか渡してないみたい
245 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 18:27:28 ] >244 send_toの時にバインドされてる
246 名前:238 mailto:sage [2009/03/22(日) 08:53:20 ] >>245 やっぱそうなのか この辺で失礼します。ありがとう
247 名前:デフォルトの名無しさん [2009/03/22(日) 18:01:34 ] vc2008EE sp1 winxp boost1.38(boostpro)で int x = 1, y = 10; (boost::lambda::_1 + boost::lambda::protect(boost::lambda::_1 + 2))(x)(y); がコンパイル通らないんだけど、なんで? error C2664: 'boost::lambda::lambda_functor<T>::lambda_functor(const boost::lambda::lambda_functor<T> &)' : 1 番目の引数を 'const boost::lambda::lambda_functor<T>' から 'const boost::lambda::lambda_functor<T> &' に変換できません。
248 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:57:14 ] とりあえず解決法だけ (x)を(boost::cref(x))にする(refでもおk) gcc-4.4, boost trunkで動作確認できた
249 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:42:42 ] Boostライブラリって同じ機能・もしくはちょっと違う機能のついた別クラスが 多い. こういうとこ改善しないのかな?
250 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:59:52 ] >>249 具体的にどれのこと?全部挙げなくて良いからさ。 あと、改善しないのか気になるんなら、直接提案してみれば良いよ。
251 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:22:20 ] 249じゃないけど、bindとlambda::bindとかtupleとfusionとか これまで書かれたコードがあるから一本化できないんだろ どっちかが非推奨になることはあるかもしれんが boostのライブラリは便利だけど、組み合わせようとするとあれ?ってなる感じがする。 lambdaはresult_ofに対応したんだっけ?
252 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:33:56 ] boost/functionを使うときにはたいていboost/bindも使うとか 文字列処理クラスが機能かぶってるとかのことを言ってるのか? おれは↑と他ちょっとしかboostしないから知らないけどなんかあんの?
253 名前:247 [2009/03/22(日) 22:46:02 ] boost::protect の一番わかりやすい(シンプルな) サンプルコード教えてください。 (boost::protectの有無で結果変わるやつ)
254 名前:232 mailto:sage [2009/03/24(火) 22:59:56 ] >>233-235 直らなかったので、ソースを調べました。 コンパイラのバージョンチェックがまずかったようです。 boost/foreach.hppの頭のほうの行の || BOOST_WORKAROUND(BOOST_INTEL_WIN, <= 810) を、以下のように変えたらコンパイラが通りました。 || BOOST_WORKAROUND(BOOST_INTEL_WIN, <= 1100) とりあえず、これで様子見です。