Boost総合スレ part7
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2009/01/19(月) 21:22:22part 6 http://pc11.2ch.net/test/read.cgi/tech/1207749841/
part 5 http://pc11.2ch.net/test/read.cgi/tech/1192662575/
part 4 http://pc11.2ch.net/test/read.cgi/tech/1175663346/
part 3 http://pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 http://pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 http://pc8.2ch.net/test/read.cgi/tech/1091198276/
■関連サイト■
Boost C++ Libraries
http://www.boost.org/
Boost 翻訳プロジェクト
http://boost.cppll.jp/HEAD/
Let's Boost
http://www.kmonos.net/alang/boost/
boost info
http://shinh.skr.jp/boost/
0002デフォルトの名無しさん
2009/01/19(月) 21:28:03乙
0004デフォルトの名無しさん
2009/01/19(月) 21:31:40Boost C++をチューンアップする最先端ライブラリ
http://www.amazon.co.jp/exec/obidos/ASIN/4894714191/
Boost C++ Libraryプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4798017043/
Beyond The C++ Standard Library
http://www.amazon.co.jp/exec/obidos/ASIN/0321133544/
C++ Template Metaprogramming
http://www.amazon.co.jp/exec/obidos/ASIN/0321227255/
The Boost Graph Library
http://www.amazon.co.jp/exec/obidos/ASIN/0201729148/
■関連スレ■
C++相談室 part65
http://pc11.2ch.net/test/read.cgi/tech/1230341243/
C++0x 4
http://pc11.2ch.net/test/read.cgi/tech/1214407525/
【C++】STL(Standard Template Library)相談室 11
http://pc11.2ch.net/test/read.cgi/tech/1231640024/
0005デフォルトの名無しさん
2009/01/19(月) 21:32:40http://sourceforge.net/projects/loki-lib/
JTC1/SC22/WG21 - The C++ Standards Committee
http://www.open-std.org/jtc1/sc22/wg21/
POCO, the C++ Portable Components
http://www.appinf.com/poco/info/
http://sourceforge.net/projects/poco/
The unofficial BCB Boost patches
http://bcbboost.sourceforge.net/
0006デフォルトの名無しさん
2009/01/19(月) 21:34:00>>4に
・Boost C++をチューンアップする最先端ライブラリ
を加えたのと,
・Boost C++ Libraryプログラミング
のリンクを第二版に修正しました.
0007デフォルトの名無しさん
2009/01/20(火) 01:04:16boost 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などの条件式に使いたいのですが。
0008デフォルトの名無しさん
2009/01/20(火) 02:08:01in のテンプレート引数を指定すれば、とりあえずうまくいくと思うけどbind(&in<int, interval<int>::traits_type>, 3, interval<int>(2, 4));
もっと簡単にかけるかどうかはわからんです
0009デフォルトの名無しさん
2009/01/20(火) 16:07:04/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ まピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0010デフォルトの名無しさん
2009/01/22(木) 02:09:13コンパイラ: 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
001110
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;
}
0012デフォルトの名無しさん
2009/01/22(木) 07:21:21コンパイルできました。
ありがとう。
0013デフォルトの名無しさん
2009/01/22(木) 09:19:21-lboost_system-mt
001410
2009/01/22(木) 16:35:26無事コンパイルできました.
冷静に考えてみると,エラーを見たらboost::systemを参照してたんですね...
それにしてもなんでmacだけ挙動が違うんだろうか.
とにかくありがとうございました!!
0015デフォルトの名無しさん
2009/01/22(木) 17:21:160016デフォルトの名無しさん
2009/01/23(金) 18:33:46ttp://booster.x0.to/
0017デフォルトの名無しさん
2009/01/23(金) 21:08:29RSS配信でもしてテンプレにURL貼るとかすりゃいいのに
毎度毎度スパムのように貼るな
と言ったら荒れるのだろうか
0018デフォルトの名無しさん
2009/01/24(土) 08:17:34そうカリカリすんな。お前は本物のスパムにもマジレスするのか?
目障りだと感じたなら黙ってあぼーんするだろ?
0019デフォルトの名無しさん
2009/01/24(土) 12:04:12何が変わったのか楽しみ
0020デフォルトの名無しさん
2009/01/24(土) 15:45:150021デフォルトの名無しさん
2009/01/25(日) 11:03:310022デフォルトの名無しさん
2009/01/25(日) 23:18:011000で割るだけのことなんだけど、1000倍する人がいたりするので、
こういう仕組みを導入する必要もあるかもしれないと思って勉強してるんだが、
思ったより複雑でちょっと挫折しかけてる。
0023デフォルトの名無しさん
2009/01/26(月) 10:54:49>こういう仕組みを導入する必要もあるかもしれないと思って勉強してるんだが、
そういう仕組みを導入するより、1000倍して尚且つテストもしてみない阿呆を切るべき。
0024デフォルトの名無しさん
2009/01/26(月) 11:30:44http://www.codeproject.com/KB/cpp/fastdelegate2.aspx
0025デフォルトの名無しさん
2009/01/26(月) 18:14:43実装は面白いけれどさ。
正直言って速度差は微々たる物だなぁ。
呼び出しにかかる時間は、現実的に問題にならない。
実際のコードでは、桁が何桁も違うくらい遅い処理を、その呼び出された関数の中でするはず。
すると一千万回呼んで500〜1000msぐらいの速度差なんてどうでも良くなってしまう。
劇的に違うのはコピーにかかる時間で、
これはBoost.Functionの実装ではヒープを使っているために目に見える速度差がでるんだろうけど。
一千万回コピーして十秒足らず。
そんなにコピーする?
0026デフォルトの名無しさん
2009/01/26(月) 18:33:180027デフォルトの名無しさん
2009/01/26(月) 22:13:44激しく同意
0028デフォルトの名無しさん
2009/01/26(月) 22:15:05boost禁止だと・・・orz
0029デフォルトの名無しさん
2009/01/26(月) 22:23:060030デフォルトの名無しさん
2009/01/26(月) 23:13:36大人しくC++0xの正式リリースを待て。
0031デフォルトの名無しさん
2009/01/26(月) 23:47:250032デフォルトの名無しさん
2009/01/27(火) 00:00:44お前の書いたコードして使うってのはだめなの?
0033デフォルトの名無しさん
2009/01/27(火) 00:43:46あ,本家のコードに追随して更新していけばいいか…
0034デフォルトの名無しさん
2009/01/27(火) 08:46:32俺は自分がメンテできるとこだけ移植してるな
その過程でソースを詳しく見ることになるので
いろいろと勉強になることも多い
0035デフォルトの名無しさん
2009/01/27(火) 10:45:02別に更新し続けなければいけない理由はないだろ。
もし、自分が「更新されたboostに追加された機能」を使いたいなら必要だけど。
0036デフォルトの名無しさん
2009/01/27(火) 17:11:35std::allocatorや自作のアロケーターをテンプレートレベルで混在させたいですぅ。
0037デフォルトの名無しさん
2009/01/27(火) 17:30:300038デフォルトの名無しさん
2009/01/28(水) 13:21:570039デフォルトの名無しさん
2009/01/29(木) 00:06:48ttp://beta.boost.org/users/news/version_1_38_0
0040デフォルトの名無しさん
2009/01/29(木) 00:54:31もう自前でscope_guard書く必要がなくなるんだろうか
0041デフォルトの名無しさん
2009/01/29(木) 12:04:22を文章の中で言うときは
boost.hoge
って書くことになってるの?
0042デフォルトの名無しさん
2009/01/29(木) 12:43:31いいえ
0043デフォルトの名無しさん
2009/01/30(金) 21:52:32ttp://booster.x0.to/
迷惑という意見が多い様でしたらサイトを閉じます。
0044デフォルトの名無しさん
2009/01/30(金) 22:16:05稀によく落とすからなくなると寂しい。
とは言え更新箇所わからないし最新版欲しかったら自分からチェック入れるからな。
0045デフォルトの名無しさん
2009/01/31(土) 01:29:45気にせず続けてくれ
0046デフォルトの名無しさん
2009/01/31(土) 02:04:040047デフォルトの名無しさん
2009/01/31(土) 07:21:27>>43
のサイトまじで消えてる!!
0048デフォルトの名無しさん
2009/01/31(土) 09:18:590049デフォルトの名無しさん
2009/01/31(土) 10:40:19あるよ。リロードしてごらん
boostの発展のためには、ライブラリを簡単に使えるよに支援してくれるサイトの存在は良いことだと思うよ。
0050デフォルトの名無しさん
2009/01/31(土) 22:45:180051デフォルトの名無しさん
2009/02/01(日) 20:12:06サイトを閉じることで更新の報告がなくなるのなら、ぜひお願いします。
0052デフォルトの名無しさん
2009/02/01(日) 20:37:300053デフォルトの名無しさん
2009/02/01(日) 20:48:11>>51は個人的に恨みでもあるのか
0054デフォルトの名無しさん
2009/02/01(日) 21:28:51むしろお前がなくなればいい
0055デフォルトの名無しさん
2009/02/01(日) 22:21:230056デフォルトの名無しさん
2009/02/01(日) 22:46:27書き込み時に添える様に致します。
0057デフォルトの名無しさん
2009/02/02(月) 13:48:030058デフォルトの名無しさん
2009/02/02(月) 17:32:05コメントつけたことはなかった
0059デフォルトの名無しさん
2009/02/03(火) 10:03:030060デフォルトの名無しさん
2009/02/03(火) 10:34:250061デフォルトの名無しさん
2009/02/03(火) 13:46:370x拡張分の6割だか7割だかはboost発祥だそうだし、
0xとの重複分を廃止した上で新たなクラスを追加構築していくのかな?
0062デフォルトの名無しさん
2009/02/03(火) 16:54:35今だってTR1が出た後にunorderedとかhashとか追加しているくらいだ。
0063デフォルトの名無しさん
2009/02/03(火) 17:50:530xの普及が遅いとboost版から抜けられなくなるかも
0064デフォルトの名無しさん
2009/02/03(火) 18:08:470065デフォルトの名無しさん
2009/02/03(火) 18:32:57ヘッダーが読み込まれていれば頭で何らかのシンボル定義してるだろうから、それで確認?
0066デフォルトの名無しさん
2009/02/03(火) 18:37:09ありがとうございます。やってみます。
0067デフォルトの名無しさん
2009/02/03(火) 21:07:35boost 使えない時にエラーになっちゃうし。
普通そーいうのは configure とかでやる。
0068デフォルトの名無しさん
2009/02/06(金) 11:40:39ショック
0069デフォルトの名無しさん
2009/02/06(金) 12:29:260070デフォルトの名無しさん
2009/02/06(金) 17:22:40boost::wregex
boost::u32regex
好きなほう使え
mingwでicuのstatic作るのにmakefileかなり修正させられた。
0071デフォルトの名無しさん
2009/02/06(金) 18:23:490072デフォルトの名無しさん
2009/02/06(金) 19:53:360073デフォルトの名無しさん
2009/02/07(土) 04:48:31ttp://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
0074デフォルトの名無しさん
2009/02/07(土) 05:47:16長い条件以外では大体そんな感じだと思ってる
ttp://www.boost.org/doc/libs/1_37_0/doc/html/xpressive/appendices.html
0075デフォルトの名無しさん
2009/02/07(土) 11:13:26毎回そのまま張るとまた論議を呼びそうな気が。
張るんなら↓みたいにまとめた方が見やすいんじゃないだろうか。機械的処理も可能だし。
各ファイルの 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
0076デフォルトの名無しさん
2009/02/07(土) 11:26:230077デフォルトの名無しさん
2009/02/07(土) 15:03:26thx
たいていの場合で2倍以上速いんですね
0078デフォルトの名無しさん
2009/02/08(日) 00:18:47すべてクラスの変数にするとかしかないのかな。
いっぱい関数有るんでめんどくさいわ・・・
007978
2009/02/08(日) 00:36:08とりあえずstatic変数にすることにしました。
0080デフォルトの名無しさん
2009/02/09(月) 19:50:240081デフォルトの名無しさん
2009/02/09(月) 22:14:02//型名など一部省略してます
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];
の様に、ルール側でもスペースを飛ばすしか方法がないのでしょうか?
008281
2009/02/09(月) 22:51:59expp = intp >> *(root_node_d[ch_p(L'+')] >> intp);
0083デフォルトの名無しさん
2009/02/13(金) 18:41:55ttp://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
有難うございます、改善致しました。
0084デフォルトの名無しさん
2009/02/13(金) 18:54:59を利用してる奴どれくらいいるの?
手あげて
0085デフォルトの名無しさん
2009/02/13(金) 19:11:380086デフォルトの名無しさん
2009/02/13(金) 19:13:190087デフォルトの名無しさん
2009/02/13(金) 19:35:58前スレから延々つきまとってるだろお前。
0088デフォルトの名無しさん
2009/02/13(金) 23:41:16他所のastのサンプルでほぼ同じようなコード書かれてるけど、
スキップ文字が入るなんて説明ないし自分のミスっぽい気はするんですが。
0089デフォルトの名無しさん
2009/02/14(土) 10:26:380090デフォルトの名無しさん
2009/02/14(土) 10:40:560091デフォルトの名無しさん
2009/02/14(土) 11:23:14> >>81の質問はスルーですか?
お前が答えてやれよ。
0092デフォルトの名無しさん
2009/02/14(土) 12:57:25blank_p ではなく space_p
http://tamachan.club.kyutech.ac.jp/~gridbug/spirit/spirit01.html
0093デフォルトの名無しさん
2009/02/14(土) 13:02:52やっぱ、違うっぽいorz
0094デフォルトの名無しさん
2009/02/14(土) 15:14:53intpいらない。int_pは元々単一ノードとして解析される。
expp = int_p >> *(root_node_d[ch_p(L'+')] >> int_p);
多分、leaf_node_dがint_pの前にスキップされた空白をノードに取り込んでるんだろう。
0095デフォルトの名無しさん
2009/02/14(土) 16:04:06int_pのみだと空白スキップされることはまでは試して
気がついてたのですが、int以外の自作トークンが使いたいときに
どうすれば良いのかで悩んでます。
やはりno_node_dで空白飛ばすのが正答なんでしょうかね。
0096デフォルトの名無しさん
2009/02/14(土) 17:43:19バグかも知れんね。
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));
}
0097統合しました。。。:
2009/02/14(土) 18:08:11真・スレッドリスターター。。。( ̄ー ̄)ニヤリッ
0098デフォルトの名無しさん
2009/02/14(土) 18:08:15なるほど、そうでしたか。
チュートリアルなどでもこの不具合の発生するコードがあるのに
今まで誰も問題にしなかったみたいだし、割と最近の修正で
混入したバグなんでしょうね。
わざわざ調べていただいて、ありがとうございました。
0100デフォルトの名無しさん
2009/02/15(日) 04:17:450101デフォルトの名無しさん
2009/02/16(月) 13:09:530102デフォルトの名無しさん
2009/02/16(月) 14:41:280103デフォルトの名無しさん
2009/02/16(月) 18:17:28辞書引け
0104デフォルトの名無しさん
2009/02/16(月) 20:49:17症状の出る最小のコード書いて、tree.value の結果書いて // bug ?
とでも書いとけば多分汲み取ってくれるだろう。
該当フォーラムのアドが分からんので自分はコミットできませんけど。
0105デフォルトの名無しさん
2009/02/16(月) 21:11:19あとはローマ字で適当に書いておけ。
0106デフォルトの名無しさん
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関数を呼んで
その中でポインタ初期化したい場合とかどうすればいいんだ
0107デフォルトの名無しさん
2009/02/16(月) 22:40:200108デフォルトの名無しさん
2009/02/16(月) 22:40:21s.reset(new string("foo"));
0109デフォルトの名無しさん
2009/02/16(月) 23:18:39ひとつのポインタを別々のshared_ptrに代入してはいけないのでポインタを=で代入できないようにしている。newしたらすぐにスマートポインタにセットさせるのが基本。
スマートポインタをスマートポインタに=を使って代入は可能のでこれを使って共有する。
0110デフォルトの名無しさん
2009/02/17(火) 00:07:42boost::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しない場合は
設計を見直した方がいいのかな
0111デフォルトの名無しさん
2009/02/17(火) 01:03:570112デフォルトの名無しさん
2009/02/17(火) 01:12:040113デフォルトの名無しさん
2009/02/17(火) 03:44:59コンストラクタから例外投げないとか言うアホなコーディング規約に縛られてるんでもなければ
初期化リストで new しとけ。
0114113
2009/02/17(火) 03:46:52そうなると初期化リストで new しない理由がわからん。以下 >111 と同文。
0115デフォルトの名無しさん
2009/02/18(水) 08:31:26func(shared_ptr<Hoge>(new Hoge(),func2( ))
newしてfunc2が評価されて例外投げるとshared_ptrにセットされる前の可能性があるかららしいけど、この評価順は規格上未定義だからって普通にあるの?それとも規格上ありうるってこと?
0116デフォルトの名無しさん
2009/02/18(水) 10:23:47Effective C++にも 「やるな」 って書いてなかったっけ?
0117デフォルトの名無しさん
2009/02/18(水) 11:04:26経験談だけど引数の評価順はかなり簡単に変わるから普通にある
評価順に依存してバグが起こるコードだとマジヤバイ
当然コンパイラ次第なのだけど,デバッグ用の最適化なし,と,最適化あり,にするだけで変わったりする
デバッグで問題見つからなくて泣きそうになったことある
0118デフォルトの名無しさん
2009/02/19(木) 00:53:230119デフォルトの名無しさん
2009/02/19(木) 03:38:54評価順によるバグなんて本能的に避けるだろ。
たまに、新米プログラマで、変数使わないで長い式をグダグダ一気に書くのが
かっこいいと思ってる奴がいるから困る
0120デフォルトの名無しさん
2009/02/19(木) 19:09:250121デフォルトの名無しさん
2009/02/19(木) 19:56:50115の例に表れるカンマは関数呼び出しの一部だよ。
順次演算子としてのカンマなら、たしかに評価順序点になるけど。
0122デフォルトの名無しさん
2009/02/20(金) 21:44:14ttp://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
0123デフォルトの名無しさん
2009/02/21(土) 13:25:35検索を途中でキャンセルするのは例外を使用するしかない?
例:幅優先で検索し、目的のvertexが見つかったらそこで
検索をやめる。
boost.graph自体は基本的な例外安全は確保されているみたい
なので例外の使用自体に問題はないとは思いますが・・・。
0124デフォルトの名無しさん
2009/02/21(土) 13:51:45それは例外ではないから例外で抜けるのは不適当だろう。
0125123
2009/02/21(土) 14:02:45(言葉遊びですな)
0126デフォルトの名無しさん
2009/02/21(土) 17:06:21例外でも何でも使えばいいと思うよ
例外だからってエラー処理以外に使わざるべしという論理的根拠はない
0127デフォルトの名無しさん
2009/02/21(土) 17:11:550128デフォルトの名無しさん
2009/02/21(土) 17:14:170129123
2009/02/21(土) 17:46:38>例外だからってエラー処理以外に使わざるべしという論理的根拠はない
同意です。ただ他の方法があるのかという質問です。
例外使えないときもあるし。
>>127
具体的には? 例外安全に関する話題?
0130デフォルトの名無しさん
2009/02/21(土) 18:05:520131デフォルトの名無しさん
2009/02/21(土) 19:11:130132デフォルトの名無しさん
2009/02/21(土) 19:30:14全部黒にしてvisitorの実行を抑制することならできるけど
それでも走査することには変わりねぇしな
つうことは見付かった時点で全部を辿るって前提が満たされなくなるから例外でいいんじゃないと
0133デフォルトの名無しさん
2009/02/21(土) 23:53:50n回使ったらバグが発生するとかそういうものでもないんだから、
そこまでして忌避したり意味を考えたりとかしなくていいんじゃなかろうか。
0134デフォルトの名無しさん
2009/02/22(日) 00:16:530135デフォルトの名無しさん
2009/02/22(日) 00:51:26そういや中の人は院卒業したんだっけか。
0136デフォルトの名無しさん
2009/02/22(日) 08:04:34>全部黒にしてvisitorの実行を抑制することならできるけど
TerminatorFunc を使うってことでいいですか?
0137デフォルトの名無しさん
2009/02/22(日) 09:48:29名前と写真が出るわ出るわ
0138デフォルトの名無しさん
2009/02/22(日) 10:27:09ガキじゃねーんだからキャーキャー騒ぐなよ
0139デフォルトの名無しさん
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);
}
0140デフォルトの名無しさん
2009/02/22(日) 17:24:130141デフォルトの名無しさん
2009/02/22(日) 17:33:21Boost的には、bind使えば引数一つにまとまられるよと言うくらい。
0142デフォルトの名無しさん
2009/02/22(日) 18:17:25メンバ関数へのポインタをどう使うのかを書かないと。
このスレ的には>>140を使うことを前提にしてるんだろうけど。
0143139
2009/02/22(日) 21:29:21boost.function使ってみました。結構いい感じ。
で、つかぬことをおききしますがboost::functioinを使った場合インライン展開はされるのでしょうか。
速度が必要なもんで気になります。
一応アセンブラをみて見たんですが俺にはよくわからない。(´・ω・`)
関数ポインタならインライン展開されなさそうなきがするんですが。
0144デフォルトの名無しさん
2009/02/22(日) 21:42:000145139
2009/02/22(日) 21:47:28ありがとうございます。
boostってテンプレートだけじゃなくて意外と中でマクロも使われてるんですね。
いっそマクロの併用も検討するか…
0146デフォルトの名無しさん
2009/02/22(日) 21:58:170147141
2009/02/22(日) 21:59:17単にこれでいいだろうというつもりで書いた。やや楽観的期待だが、インライン展開もされるだろう
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);
}
0148デフォルトの名無しさん
2009/02/22(日) 22:02:38速度が必要なら仮想関数や関数ポインタは向かないね。
テンプレートで展開されるようにしたほうがいいかも
0149デフォルトの名無しさん
2009/02/22(日) 23:51:22たぶん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);
}
0150139
2009/02/23(月) 00:15:36うおっ!なんかすごいのきたw
テンプレートの引数にvoid (T::* func)()なんて使えるのかー。
カルチャーショックだぜ。
もっと精進せねば。
どうもありがとうございます。
0151デフォルトの名無しさん
2009/02/23(月) 11:43:44この形式だと inline 化されるというのを昔 Cryolite 氏が実験してたな
0152デフォルトの名無しさん
2009/02/23(月) 12:18:330153デフォルトの名無しさん
2009/02/23(月) 16:41:31boost::pool<> pool(1) にして
(T*)pool.ordered_malloc(sizeof(T)) でひとつのpoolを共有すべきですか?
0154デフォルトの名無しさん
2009/02/23(月) 18:32:23サイズの種類が限られてるなら同時につかえばいいんじゃないか?
0155デフォルトの名無しさん
2009/02/23(月) 18:41:340156デフォルトの名無しさん
2009/02/24(火) 09:25:08以前ordered_mallocを使ってnew []演算子を作ろうと思って試したことがあるが、
普通のnew[]演算子よりむちゃくちゃ重くなった。
おそらくメモリプールに指定のサイズの領域が空いてるかどうかチェックする処理が重いんだと思うけど…
0157デフォルトの名無しさん
2009/02/24(火) 09:45:160158デフォルトの名無しさん
2009/02/24(火) 10:43:02ありがとうございます。参考になりました
今回は型ごとにpoolを作ろうと思います
ordered_mallocが使用される回数を極力抑えられるように書いてみます
0159デフォルトの名無しさん
2009/02/24(火) 20:17:56(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;
}
0160デフォルトの名無しさん
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' の宣言を確認してください。
0161デフォルトの名無しさん
2009/02/24(火) 20:55:08boostのイメージカラーは何色?
0162デフォルトの名無しさん
2009/02/24(火) 21:01:090163デフォルトの名無しさん
2009/02/24(火) 21:03:29失せろクズ
0164デフォルトの名無しさん
2009/02/24(火) 21:48:39二度とくんなカスが
0165デフォルトの名無しさん
2009/02/24(火) 21:49:15VIPでやれ
0166デフォルトの名無しさん
2009/02/24(火) 21:53:550167デフォルトの名無しさん
2009/02/24(火) 22:12:16create_toolの中は?
0168デフォルトの名無しさん
2009/02/24(火) 22:21:11オメーも反応すんなヴォケ
しかも一人で無駄に投稿すんな。
0169デフォルトの名無しさん
2009/02/24(火) 22:23:56>> 167
// create.cpp
class hammer : public tool
{
public:
略...
void hoge()
{
// 実装
}
略...
};
tool* create_tool()
{
return new hammer;
}
といった感じです。
toolの具象クラスのhammerは表に出ないようになっています。
0170デフォルトの名無しさん
2009/02/24(火) 23:17:28とりあえずboost::refをつけたら、こっちではコンパイル通った
la::bind(&human::use, boost::ref(man), t)(); // -----(1)
GCC 4.0.1, boost 1.38.0
0171デフォルトの名無しさん
2009/02/24(火) 23:59:16>>170
確かに
void human::use(tool*);
ならそれで通りますね。ありがとうございます。
私の実際のコードでは
void human::use(tool&);
となっていまして、教えて頂いたようにしても同じコンパイルエラーが発生してしまいます。
0172デフォルトの名無しさん
2009/02/25(水) 07:01:49*と&はまったく違う意味だぞ。
そこで一時オブジェクトを作ろうとしてエラーになってるんじゃないのかconst tool&にしてみろ
0173デフォルトの名無しさん
2009/02/25(水) 09:59:28>>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(); }
0174デフォルトの名無しさん
2009/02/25(水) 10:00:01#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))();
}
0175デフォルトの名無しさん
2009/02/25(水) 11:30:52{
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)と同じことしているんじゃないの?
0176デフォルトの名無しさん
2009/02/25(水) 12:25:21tool*を使うか、ref(t)で渡す。
0177デフォルトの名無しさん
2009/02/25(水) 13:16:26>>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
という理解も間違っているのでしょうか?
0178デフォルトの名無しさん
2009/02/25(水) 14:13:20\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のどっかで抽象クラスをインスタンスかしようとしてるんだろう
0179デフォルトの名無しさん
2009/02/25(水) 14:15:02boost::ref => boost::lambda::var
は間違ってると思う。
boost::ref は参照型だけど、lambda::var は参照じゃない
0181デフォルトの名無しさん
2009/02/25(水) 15:05:380182デフォルトの名無しさん
2009/02/25(水) 17:31:50>>181
そのページは私も読みました。
boost::refはboost::lambda::varに置き換えられると理解しております。
>>178
でしょうね。
しかし、実装上の事情はどうであれ、インタフェースとしては抽象クラスの参照を
bindの引数にすることを可能としていなければいけないように思えます。
何か回避策がlambdaにあるのではと思うのですが直ぐには見つけられませんね。
ご存知の方いないでしょうか?
0183デフォルトの名無しさん
2009/02/25(水) 17:55:58でどうか?
0184デフォルトの名無しさん
2009/02/25(水) 17:57:52抽象クラスはインスタンス化できない。それをしようとしているからエラーになる。
テンプレートの引数に参照で渡したいときはref( )を使えば参照が渡せる。
0185デフォルトの名無しさん
2009/02/25(水) 18:05:31>>159
>bind(&human::use, man, ref(t))();
boost::bind できるんなら、boost::lambda::bindにこだわる必要ないでしょう
0186デフォルトの名無しさん
2009/02/25(水) 18:10:460187デフォルトの名無しさん
2009/02/25(水) 18:25:05>>183
目から鱗ですね。
それでいけました。
ありがとうございます。
>>185
boost::bindとboost::lambda::bindの混在は面倒なトラブルが発生することが
あるので避けています。
皆さんありがとうございました。
他にもスマートな方法があればお教え頂きたいと思います。
0188デフォルトの名無しさん
2009/02/25(水) 18:27:25それでいける理由が知りたい
0189デフォルトの名無しさん
2009/02/25(水) 18:44:07早期の解決によって束縛される値が参照型から値型になってしまうことを防ぐことができるから
かなぁ
0190デフォルトの名無しさん
2009/02/25(水) 21:07:020191デフォルトの名無しさん
2009/02/26(木) 16:50:17できれば最小のサンプルソースが見たいです。
0192デフォルトの名無しさん
2009/02/26(木) 16:51:37「参照型から値型がになってしまう」とは具体的にどんな状況ですか?
できれば最小のサンプルソースが見たいです。
typo があったので再投稿。
0193デフォルトの名無しさん
2009/02/26(木) 18:09:020194189
2009/02/26(木) 19:39:19一言で言えば、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のコード読んでください。
0195デフォルトの名無しさん
2009/02/26(木) 23:28:290196デフォルトの名無しさん
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.
0197デフォルトの名無しさん
2009/02/28(土) 01:30:27マジかよwwwww
0198デフォルトの名無しさん
2009/03/01(日) 10:06:36関数を用意しておいて他のクラスにその関数をメンバとして追加したいです。
Rubyのコードだと以下のようになります。
module MyModule
def extend_function
print "extend_function\n"
end
end
class MyClass
include MyModule
end
object=MyClass.new
object.extend_function
0199デフォルトの名無しさん
2009/03/01(日) 10:10:560200デフォルトの名無しさん
2009/03/02(月) 03:21:34struct 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> {};
0201200
2009/03/02(月) 03:22:29template<typename T>
struct MyPolicy {
MyPolicy& self() { return *(static_cast<T*>(this)); };
void extend_function() {
// ……
};
};
0202デフォルトの名無しさん
2009/03/02(月) 04:05:44selfの戻り値もT&だろ。
0203デフォルトの名無しさん
2009/03/02(月) 09:50:38何か便利な文字列操作メソッドを追加したいとかで使うんだろうけど、
std::string弄るわけにはいかないし。
0204デフォルトの名無しさん
2009/03/02(月) 13:34:460205デフォルトの名無しさん
2009/03/02(月) 13:37:18継承とメソッドのデフォルトがpublicかprivateかの違いだけ
0206デフォルトの名無しさん
2009/03/02(月) 13:42:52デフォルト継承の問題のようだが
0207デフォルトの名無しさん
2009/03/02(月) 20:36:56つ friend class boost::iterator_core_access;
0208デフォルトの名無しさん
2009/03/03(火) 21:25:080209デフォルトの名無しさん
2009/03/06(金) 22:44:20ttp://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.
0210デフォルトの名無しさん
2009/03/06(金) 23:57:23>>209にうpされてるのVC2005では使えないんですか?
0211デフォルトの名無しさん
2009/03/07(土) 00:47:58次回からその旨分かる様に、ファイル名に"VC2008"を追加致します。
0212デフォルトの名無しさん
2009/03/07(土) 00:53:37そうなんですか、同じコンパイラメーカーのでもバージョン違うと駄目なんですか,orz
0213デフォルトの名無しさん
2009/03/07(土) 04:54:22少し古いバージョンで良いならこっから落とせるよ。
2003, 2005, 2008 用をインストール時に選択可能。
ttp://www.boostpro.com/products/free
0214デフォルトの名無しさん
2009/03/07(土) 09:40:220215デフォルトの名無しさん
2009/03/08(日) 14:57:29あとspirit使うとclassicのヘッダファイル使えと警告出るんだけど、classicじゃないspiritの使い方って
どっかに書いてあるんだろうか・・・(公式ドキュメントも前のまんまだった)
0216デフォルトの名無しさん
2009/03/08(日) 15:05:58spiritはV2になるから準備じゃないか?今のマニュアルがclassicに相当するようだ。
俺も最近spirit始めたところで悩んだ。
classicヘッダは名前空間がclassicに変わってるから注意だ
0217デフォルトの名無しさん
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で報告されています。
0218デフォルトの名無しさん
2009/03/13(金) 15:59:34> const uint64_t c2 = UINT64_C(3577643008);
じゃ駄目なの?
0219217
2009/03/13(金) 16:26:19そっちのほうが良さそうですね。(そのマクロは初めて知りました)
私の環境では、マクロ __STDC_CONSTANT_MACROS を自分で定義しないとUINT64_Cが使えませんでしたが、
定義するとうまく行きました。後の人の参考までに。
0220デフォルトの名無しさん
2009/03/13(金) 17:54:45ttp://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.
0221デフォルトの名無しさん
2009/03/16(月) 00:17:110222デフォルトの名無しさん
2009/03/16(月) 00:29:110223デフォルトの名無しさん
2009/03/17(火) 17:05:03lu分解はあるようなんですけど
0224デフォルトの名無しさん
2009/03/17(火) 18:58:20「ublas qr分解」で検索すると、boost.ublasで実装した例が見つかるくらいだから、
直接qr分解するような関数はないんじゃね?
0225デフォルトの名無しさん
2009/03/18(水) 13:45:04boost.pythonは対応してくれるんだろうか
特に日本語文字列を渡せるかあたりが変わるとか
0226デフォルトの名無しさん
2009/03/18(水) 15:24:070227デフォルトの名無しさん
2009/03/18(水) 15:46:02試してみたらかなり楽に使えたんでびっくりした
0228デフォルトの名無しさん
2009/03/18(水) 17:49:16Boost.Luaとか期待しています。
0229デフォルトの名無しさん
2009/03/18(水) 18:07:26だから簡単に他に移行するのは、結構難しいんじゃないかな。
0230デフォルトの名無しさん
2009/03/19(木) 09:20:090231デフォルトの名無しさん
2009/03/20(金) 18:54:29ttp://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
0232デフォルトの名無しさん
2009/03/21(土) 00:16:11#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;
}
0233デフォルトの名無しさん
2009/03/21(土) 09:12:24BOOST_FOREACH(int const& i,C)
とかでだめかな?
0234デフォルトの名無しさん
2009/03/21(土) 09:35:01も
BOOST_FOREACH(int const& i,C)
も同じ意味
0235デフォルトの名無しさん
2009/03/21(土) 09:37:23それでだめならforeachの実装覗くしかないんじゃね。
0236デフォルトの名無しさん
2009/03/21(土) 12:06:26{
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;
};
0237236
2009/03/21(土) 12:07:13int に対する iterator で increment でstepずつ増やす iterator を
作ってみてるのですが、dereference() の箇所で
error C2440: 'return' : 'const int' から 'int &' に変換できません。
とエラーになってしまいます。
メンバーのvalueをintへのポインターにして、dereference()で*valueを
返す様にしたら期待した動作をしてくれます。
また、const_cast しても期待した動作になります・・・
なぜ、int では駄目なのでしょうか?
0238デフォルトの名無しさん
2009/03/21(土) 12:46:15ここのUDP通信のソースで質問なんだけど、
send_to()ではIPとポート指定してるのに、
何故recv_from()では必要無いんですか?
boost::asio::ip::udp::socket がIPとかを記録するんじゃないかと思ったんだけど、
リファレンスマニュアル見ても明確に書いてなかった
0239デフォルトの名無しさん
2009/03/21(土) 14:32:08メンバ関数のconst外す or 戻り値にconst付ける
>>238
郵便を送るには送り先住所が必要ですが、受け取るにはポストを設置しておけばいいだけです。
receive_fromに渡しているendpointは差出人の住所を受け取るためのバッファです。
ちなみにそのページの非同期コードは未定義だね。
0240デフォルトの名無しさん
2009/03/21(土) 15:00:11>>戻り値に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 はずせないです。
0241デフォルトの名無しさん
2009/03/21(土) 15:04:38> 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
でどうでしょう?
0242デフォルトの名無しさん
2009/03/21(土) 15:18:52うまくいきました。
dereference()して値を変えたい場合は、ポインターなどにしてやる必要があるんですね。
>const メンバ関数なので this は const step_iterator*。
>従って、メンバの value も const int になります。
>これは変更不可能なので、変更可能な参照 int& として返すことができません
調べてると、「mutableでないと駄目」とか書いてあったけど、↑のことだったのか・・・
0243デフォルトの名無しさん
2009/03/21(土) 15:58:49recv_fromはbindでポートと結びついてるソケットで読み込んでるからでないの?
0244238
2009/03/21(土) 16:17:09UDPでは(?)どのポートに来たメッセージも受信できちゃうってことですか?
>>243
bind()ではポート番号とか渡してないみたい
0245デフォルトの名無しさん
2009/03/21(土) 18:27:28send_toの時にバインドされてる
0247デフォルトの名無しさん
2009/03/22(日) 18:01:34int 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> &' に変換できません。
0248デフォルトの名無しさん
2009/03/22(日) 18:57:14(x)を(boost::cref(x))にする(refでもおk)
gcc-4.4, boost trunkで動作確認できた
0249デフォルトの名無しさん
2009/03/22(日) 21:42:42多い.
こういうとこ改善しないのかな?
0250デフォルトの名無しさん
2009/03/22(日) 21:59:52具体的にどれのこと?全部挙げなくて良いからさ。
あと、改善しないのか気になるんなら、直接提案してみれば良いよ。
0251デフォルトの名無しさん
2009/03/22(日) 22:22:20これまで書かれたコードがあるから一本化できないんだろ
どっちかが非推奨になることはあるかもしれんが
boostのライブラリは便利だけど、組み合わせようとするとあれ?ってなる感じがする。
lambdaはresult_ofに対応したんだっけ?
0252デフォルトの名無しさん
2009/03/22(日) 22:33:56文字列処理クラスが機能かぶってるとかのことを言ってるのか?
おれは↑と他ちょっとしかboostしないから知らないけどなんかあんの?
0253247
2009/03/22(日) 22:46:02サンプルコード教えてください。
(boost::protectの有無で結果変わるやつ)
0254232
2009/03/24(火) 22:59:56直らなかったので、ソースを調べました。
コンパイラのバージョンチェックがまずかったようです。
boost/foreach.hppの頭のほうの行の
|| BOOST_WORKAROUND(BOOST_INTEL_WIN, <= 810)
を、以下のように変えたらコンパイラが通りました。
|| BOOST_WORKAROUND(BOOST_INTEL_WIN, <= 1100)
とりあえず、これで様子見です。
0255デフォルトの名無しさん
2009/03/27(金) 22:43:50ttp://booster.x0.to/
以下更新内容の一部
[Fusion]
added default implementation for iterator_facade
[Math]
Fix bug in cyl_bessel_i that hits when v=0.5 and x is small.
[Archive]
Throw new exception when program class version is less than file class version.
[Serialization]
moved to type traits
[Smart_ptr]
Move enable_shared_from_this2.hpp to boost/smart_ptr.
[Timer]
Fix spelling boo boo (Shawn Roe)
[Regex]
Patch for ICU on AIX.
[Type_traits]
Added has_new_operator from Robert Ramey.
[Filesystem]
System, Filesystem: remove boost/detail/test_framework.hpp;
use boost/detail/lightweight_test.hpp instead (Thanks to Peter Dimov for pointing this out)
[Units]
Fix return type for division by a constant
[Tr1]
shared_count.hpp has moved.
[Interprocess]
Changes for Boost.1.39
[Intrusive]
Changes for Boost.1.39
[Bind]
Add ref_compare for weak_ptr. Refs #2849.
0256デフォルトの名無しさん
2009/03/28(土) 16:52:31eps_pを使うと括弧を減らせるみたいらしいですが、
俺的にはeps_pを使うよか括弧を使う方が分かりやすいと思うんです。
みさなんはどう思いますか?
0257デフォルトの名無しさん
2009/03/28(土) 19:26:020259デフォルトの名無しさん
2009/03/29(日) 01:38:49パーザーPARがあったとして、PARにマッチしないって言うのを表すにはどう書けばいい?
具体的には
boost::spirit::sign_p
にマッチしないって言うのを表したかったのだが、
~boost::spirit::sign_p
とやったらoperator~はsign_pには定義されていないよっていうエラーがでるんだけど・・・。
0260259
2009/03/29(日) 01:54:34で良かったか。
事故解決した気がするが、これで間違っていたら教えてくれ。
0261デフォルトの名無しさん
2009/03/29(日) 14:41:25手っ取り早い方法だとそれで良いと思う。
ただ、anychar_p sign_pの両方が評価されるので、
-を使った方法は多用しまくると効率悪いかもね。
<この例なら気にならないだろうけど
0262デフォルトの名無しさん
2009/03/29(日) 14:41:39expr=
(
+(boost::spirit::digit_p)//[&the_func]
>>
*(
(boost::spirit::ch_p('!'))//[&the_func]
)
)//[&the_func]
この3カ所にセマンティックアクション
void the_func(const char* const, const char* const)
を入れたかった。しかし実際やってみると
3つ目のthe_funcの場所「以外」入れられずコンパイルエラーになる。
何で?
0264デフォルトの名無しさん
2009/03/29(日) 14:54:09間違ってるかもしれないが、デフォルト定義パーサ(の一部?)には、
セマンティックアクションを組み込めなかったかも?
いったん別なルールに入れれば良かったんじゃなかったっけ?
rule a,b;
a = digit_p;
b = ch_p;
expr = +a[&fnc] >> *b[&fnc] 〜
みたいに。
0265デフォルトの名無しさん
2009/03/29(日) 14:55:22やってみる!
0266デフォルトの名無しさん
2009/03/29(日) 14:55:42a = digit_p[&fnc];
b = ch_p[&fnc];
0267262
2009/03/29(日) 15:05:31num_p=boost::spirit::digit_p;
exclamation_mark_p=boost::spirit::ch_p('!');
expr =
(
+num_p[&the_func]
>>
*(
exclamation_mark_p[&the_func]
)
)
;
これで出来た!動作も今のところ大丈夫っぽい。
ありがとう。
ちなみに
a = digit_p[&fnc];
b = ch_p[&fnc];
は死にました。
やっぱりおっしゃるとおり、プリミティブパーサには直接セマンティックアクションを入れられない場合があるみたい。
0268262
2009/03/29(日) 15:08:45int_p[&PUSH]
とかやる時は直接プリミティブパーサにセマンティックアクションを付けてもおkなのか。
むむぅ。
初めて知った。
0269デフォルトの名無しさん
2009/03/29(日) 15:09:180271デフォルトの名無しさん
2009/03/31(火) 16:11:05ところがよく見ると<boost/algorithm/string>にtrimという目当ての関数(?)があるようで、
それを使おうかなとも思っている。
でも<boost/algorithm/string>をインクルードするとそれ全体の分で結構バイナリってでかくなっちゃう?
それともtrimしか使わないならtrimに相当する分だけがバイナリになって
他の<boost/algorithm/string>の部分は付いてこない?
Boost.Xpressiveは別の用件で使っているから抵抗ないんだが、
<boost/algorithm/string>はこのtrim以外で使う予定がないもんだから、
ちょっと心配なんだけど、教えてくださいませんか?
0272デフォルトの名無しさん
2009/03/31(火) 16:12:540273デフォルトの名無しさん
2009/03/31(火) 16:28:540274デフォルトの名無しさん
2009/03/31(火) 16:35:530275デフォルトの名無しさん
2009/03/31(火) 16:53:41やってみる。
0276デフォルトの名無しさん
2009/04/02(木) 22:43:22だけincludeすれば、少しはマシかも
0277デフォルトの名無しさん
2009/04/03(金) 15:08:33>>274
0278デフォルトの名無しさん
2009/04/03(金) 19:33:45そのプログラムは
#include <boost/spirit/core.hpp>
となっているのだが、これをより広く
#include <boost/spirit.hpp>
にしたプログラムを作ってみると、
(他は全く変更していないのに)ファイルサイズが違うのだが、なんで?
環境は
Windows XP, g++でコンパイルオプションは-O2
なんだが、実際に使われていない関数やクラスもリンクされてバイナリになっているってこと?
0279デフォルトの名無しさん
2009/04/03(金) 20:43:320280デフォルトの名無しさん
2009/04/04(土) 01:21:35ttp://booster.x0.to/
以下更新内容の一部
[Flyweight]
made Boost.Interprocess names shorter to accommodate some filesystems
[Type_traits]
Add missing #includes.
[Graph]
Renamed some functions to work better on some compilers
First batch of merges from Parallel BGL
Merged more changes from Parallel BGL
[Spirit]
Fixes to exception messages.
Fixes to some exception messages.
[Numeric]
storage.hpp: fix #2891, now check new size instead of old one
[Proto]
fix proto::lazy
0282デフォルトの名無しさん
2009/04/04(土) 11:15:31利用させてもらっています
いつも乙です
0283デフォルトの名無しさん
2009/04/04(土) 11:42:04お疲れ様です。
0284デフォルトの名無しさん
2009/04/04(土) 12:46:44日本語がいいです。
0285284
2009/04/04(土) 12:51:11パースツリーを作る
http://homepage3.nifty.com/kaku-chan/boost/spirit/chapter_005.html
がヒットしているんですが、もしみなさんのオススメがあれば是非知りたいです。
0286デフォルトの名無しさん
2009/04/05(日) 17:00:21コマンドプロンプトで
g++ something.cpp -I "C:\BoostC++Libraries"
として使っていますが、毎回インクルードパスを入力するのが面倒で、
環境変数で省略出来るのではないかと思い調べてみました。
その結果、
CPLUS_INCLUDE_PATHにboostのパス(私の場合C:\BoostC++Libraries)
を設定すれば大丈夫という記述を見つけたのですが、
実際に設定してみてもうまくいきません。
(インクルードパスを省略してg++ something.cppだけでコンパイルできません。)
近い環境の方で、出来ている方はいらっしゃいませんか?
0287デフォルトの名無しさん
2009/04/05(日) 17:04:100288デフォルトの名無しさん
2009/04/05(日) 17:07:27alias g++='g++ -I /cygrive/.../boost_1_38_0'
のようにしている。お察しの通り、Cygwinだけど。
0289デフォルトの名無しさん
2009/04/05(日) 17:16:54ちゃんと読みに行ってくれるよ。
まあ、普段はmsys使ってるけど。
0290デフォルトの名無しさん
2009/04/05(日) 17:20:09みんなありがとう。
やっぱみなさん色々やってんのね。
0291デフォルトの名無しさん
2009/04/05(日) 17:25:51>>289さん方式(コマンドプロンプトからCPLUS_INCLUDE_PATHを設定)
でインクルードパスの指定が不要になりました。
愛してる。
0292デフォルトの名無しさん
2009/04/05(日) 18:37:110293デフォルトの名無しさん
2009/04/05(日) 19:05:13それもしてなかったです。
設定→ダメじゃん→設定を削除して元に戻す
しかしてなかったです。
それも試してみます。
0294デフォルトの名無しさん
2009/04/05(日) 19:58:48Windowsはね
0295デフォルトの名無しさん
2009/04/05(日) 20:03:06Linuxなら再起動しなくても反映されますか?
0296デフォルトの名無しさん
2009/04/05(日) 20:14:280297デフォルトの名無しさん
2009/04/05(日) 20:48:55二日掛りでmingw + bjamの罠から未だ抜け出せない。
0298デフォルトの名無しさん
2009/04/05(日) 20:55:33俺はcmd.exeからbjamを使ってコンパイルして、使うときはmsysからmingwを使ってる。
これで Program Options と Thread を使ってるが、一応うまく動いてるぞ。
0299デフォルトの名無しさん
2009/04/06(月) 15:19:320300デフォルトの名無しさん
2009/04/07(火) 13:48:14・RFC1952で記述されてるアルゴリズムを元に作ったgzipという圧縮ツールがGPL
・boostに含まれているgzipライブラリはboostライセンス
って事だよな?
0301デフォルトの名無しさん
2009/04/07(火) 13:59:080302デフォルトの名無しさん
2009/04/07(火) 14:03:15すまん、以下のところ。
http://ja.wikipedia.org/wiki/Gzip
0303デフォルトの名無しさん
2009/04/07(火) 17:55:460304デフォルトの名無しさん
2009/04/07(火) 19:30:15再帰関数内ですぐにスタックオーバーフローになる。
0305インドリ
2009/04/09(木) 10:05:55http://d.hatena.ne.jp/faith_and_brave/20090408
0306デフォルトの名無しさん
2009/04/09(木) 12:13:530307デフォルトの名無しさん
2009/04/09(木) 13:48:24高い!
0308デフォルトの名無しさん
2009/04/09(木) 21:14:12shared_ptrって8バイトしかないんだし、別の問題じゃね?
0309デフォルトの名無しさん
2009/04/09(木) 21:38:380310デフォルトの名無しさん
2009/04/09(木) 21:59:590311デフォルトの名無しさん
2009/04/09(木) 22:17:12本屋で平積みしてたら、上に萌々linux載せてあげてもいい。
0312デフォルトの名無しさん
2009/04/09(木) 22:25:320313デフォルトの名無しさん
2009/04/09(木) 22:51:32のインドリってヤツ、
> ・投稿者は、話題と無関係な広告の投稿に関して、相応の費用を支払うことを承諾します
広告費払ったのかな?
おまけにマルチ野郎か。
http://pc12.2ch.net/test/read.cgi/tech/1231640498/
0314デフォルトの名無しさん
2009/04/09(木) 22:51:57デストラクタが再帰的に呼び出されることじゃねーの
0315デフォルトの名無しさん
2009/04/10(金) 00:47:52第1引数に構造体へのポインタを取って、そのメンバを書き換えているのですが
加算代入をやると変な値になってしまいます。
回避方法はもう分かったのですが、値が壊れてしまう原因が知りたいです。
ttp://bucyou.mydns.jp/up_source2/codeview.php?fn=3
コンパイラはVC2008Express、boostのバージョンは1.38です。
0316デフォルトの名無しさん
2009/04/10(金) 11:25:38も
( (_1->*_x) += constant(0.5))
ってすればいいんでは?
0317316
2009/04/10(金) 11:31:06出力結果
1, 1
10, 1
10, 20
10.5, 20
10.5, 20.5
0318デフォルトの名無しさん
2009/04/10(金) 14:44:28> 回避方法はもう分かったのですが
ってことだと思う。なんで0.5の場合はconstantつけないとおかしくなるの?って質問では。
0319デフォルトの名無しさん
2009/04/10(金) 16:11:25constantを付けることで、ラムダ式にして評価を遅延させる。
constantを付けないと(_1->*_x)なラムダ式に0.5を加算して
おかしなことになる。
0320デフォルトの名無しさん
2009/04/10(金) 17:51:10ttp://booster.x0.to/
以下更新内容の一部
[Graph]
Merged headers and source files (but not examples, tests, or docs) from Parallel BGL
[Spirit]
New lexer guts struct: note detail namespace!
[Wave]
Use data() accessor on state_machine.
[Mpl]
add mpl::char_ and mpl::string, fixes #2905
[Program_options]
Merge from release:
[Detail]
Avoid an unnecessary copy in 'operator[]'
[Exeption]
added functions: current_exception_diagnostic_information, current_exception_cast
[Graph,Mpi,Pending,Property_map,Python,Signals]
Moved property map library into property_map/ directory;
made old files into stubs with #warnings;
converted uses and docs of property map library to use new names
[Flyweight]
fixed a thread safety bug in refcounted
[Math]
signbit can return either zero or not, rather than true/false.
[Format]
Fixed unused parameter - bug #2455
[Config]
As of STLport 5.2, unordered_set and unordered_map have been moved
from the std:: namespace to the std::tr1:: namespace
[Asio]
Prevent locales from affecting the formatting of endpoints. Fixes #2682.
0321315
2009/04/10(金) 20:58:38ありがとうございます。
警告レベルを/W3から/W4へ引き上げたら、「代入演算子が生成できない」という警告が出ました。
警告の内容はよく分からないんですが、やっぱり型がおかしかったみたいです。
// Release設定でコンパイルしたら何故か正常に計算されて笑いましたけど。
0322デフォルトの名無しさん
2009/04/10(金) 21:22:27ReleaseとDebugどちらか片方でのみ正常に動作する場合、
参照先が「初期化されていない」か「既に解体されている」ことが多い。
315は「+=」で生成されるオブジェクトが0.5をconst参照で保持しているのが問題。
0.5は一時変数なので、funcの初期化が完了した時点で解体される。
「=」が正常に動作するのは、10.0をコピーして保持しているため。
constant(0.5)も同様。
0323デフォルトの名無しさん
2009/04/12(日) 16:25:57typedef boost::mpl::if_c<boost::is_pod<boost::mpl::_1>::type::value,
boost::add_pointer<boost::mpl::_1>::type,
boost::mpl::_1,
> operate;
typedef boost::mpl::transform<vector, operate>::type result;
mpl::transform の Op に mpl::if_c は使えないの?
0324デフォルトの名無しさん
2009/04/12(日) 19:59:480325デフォルトの名無しさん
2009/04/12(日) 20:22:51typedef boost::mpl::if_<boost::is_pod<boost::mpl::_>, boost::add_pointer<boost::mpl::_> ,boost::mpl::_> operate;
typedef boost::mpl::transform<vector, operate>::type result;
を、if_cに書き換えたんだけど・・・
typedef boost::mpl::vector<int, char, std::string> vector;
typedef boost::mpl::if_c<boost::is_pod<boost::mpl::_>::type::value, boost::add_pointer<boost::mpl::_>::type, boost::mpl::_> operate;
typedef boost::mpl::transform<vector, operate>::type result;
typedef boost::mpl::transform・・・の行をコメントアウトすればコンパイルは通る。
めちゃくちゃってどこが?
0326デフォルトの名無しさん
2009/04/12(日) 20:53:39typedef boost::mpl::if_< boost::is_pod< _1 >, boost::add_pointer< _1 >, _1 > operate ;
これで通るはず。
そもそもな、lambda expressionは、その時に評価してもしょうがないだろ。
add_pointer<_1>::type とした時点で、メタ関数は評価されているんだ。
transformの中で評価させたいんだから、早漏はコンパイラに嫌われるぞ。
>>325
そりゃ当たり前だ。transformに通さなきゃコンパイルは通るだろ。
こんどはunaryですらなくなってるぞ。
0327デフォルトの名無しさん
2009/04/12(日) 20:56:32{
template < typename T >
void operator () (T) const
{
std::cout << typeid(T).name() << std::endl ;
}
} ;
int main()
{
using namespace boost::mpl::placeholders ;
typedef boost::mpl::vector< int, char, std::string > vector;
typedef boost::mpl::if_< boost::is_pod< _1 >, boost::add_pointer< _1 >, _1 > operate ;
typedef boost::mpl::transform< vector, operate >::type result ;
boost::mpl::for_each< result >( print_type() ) ;
}
動いてるみたいだな。
0328325
2009/04/12(日) 21:11:53>typedef boost::mpl::if_< boost::is_pod< _1 >, boost::add_pointer< _1 >, _1 > operate ;
なら期待した動作することは確認済みです。
if_c でやりたい。
0330デフォルトの名無しさん
2009/04/12(日) 21:19:32なぜなら、if_cは、メタ関数ではなく、boolを要求するんだから。
lambda expressionにしようがない。すぐに評価されては困るんだよ。
boost::is_pod< _1 >::type:value と、ネストされた型や定数を見た時点で、すでにinstantiateされる、つまり評価されているんだ。
0331デフォルトの名無しさん
2009/04/15(水) 15:21:460332デフォルトの名無しさん
2009/04/15(水) 16:57:44Scalaのどの機能が欲しいの?おせーてプリーズ。
0333デフォルトの名無しさん
2009/04/16(木) 17:57:49今、std::wstring ToWide(std::string& rhs) という関数があり
この関数をテストするために
std::wstring ans = L"テスト";
std::string str = "テスト";
BOOST_CHECK_EQUAL( ToWide(str), ans );
というケースを書きましたが、コンパイルエラーになってしまいます。
BOOST_CHECK( ToWide(str) == ans );
とは書けましたのでwchar_tが出力されるときはこっちにすればいいのですが
wstringを出力できるようにするにはどうすればいいのでしょうか。
最近boostを使い始めたので変なこといってたらごめんなさい。
0334デフォルトの名無しさん
2009/04/16(木) 18:53:18とんでもないタイプ量必要なのなんとかなんないの
0335デフォルトの名無しさん
2009/04/16(木) 18:54:320336デフォルトの名無しさん
2009/04/17(金) 22:17:38亦、boost_pythonのビルドをPython2.6.2ベースに移行しました。
ttp://booster.x0.to/
以下更新内容の一部
[Graph]
Merged in changes from Nick to distributed betweenness centrality
Merged in code and docs from Parallel BGL; CMake-based build system for tests and examples and docs is not working; src and doc can be built with bjam
[Mpl]
mpl::string is a bidirectional sequence, not random access; c_str is a separate metafunction, not a class static
fix off-by-1 errors
add and document BOOST_MPL_LIMIT_STRING_SIZE and mpl/limits/string.hpp
saving some additional template instantiations
[Math]
Add more instrumentation code, along with some AMD64/Linux fixes.
[Exeption]
fixing an error that caused warnings in diagnostic_information.hpp
[Signals2]
signals2/signal.hpp does not need to include signals2/shared_connection_block.hpp.
Fixed compile errors in c++0x mode.
[Interprocess]
Modified examples so that they can be run in parallel.
[Unordered]
Add stream output to the count test helper for unordered.
[Filesystem]
Fix #2948 - Path typedef moved to namespace boost::filesystem
Fix incompatibility between asio and ncurses.h due to the latter defining
a macro called "timeout". Fixes #2156.
[Program_options]
Sync trunk&release branches
0337デフォルトの名無しさん
2009/04/17(金) 22:41:50乙!
0338デフォルトの名無しさん
2009/04/18(土) 15:35:43しかしコンテナとしての扱いをしたい。
こんな場合にはboost::arrayがあるらしいですが、
これはstd::vectorよりも効率(速度やバイナリのサイズなど)
が良いのでしょうか?
std::vectorは標準ですからboost::arrayよりも
最適化の研究が(VC++やg++など有名どころで)なされているとか
そういったことは普通ないですよね?
0339デフォルトの名無しさん
2009/04/18(土) 15:41:09当然ながらarrayでも生配列に比べるとかなり効率悪かった。
0340デフォルトの名無しさん
2009/04/18(土) 15:46:080341338
2009/04/18(土) 15:55:59ありがとうございます。
ご教示に従い、コンパイル時に数が決まっている状況では
生配列にすることも考えてみます。
>>340
やっぱそうですよね。
そもそも本当にそれがボトルネックになっているのかから考えないといけませんしね。。。
0342デフォルトの名無しさん
2009/04/18(土) 17:03:54最適化したのか?
vectorをreserveせずに増やしまくりとかじゃなければ、
配列だろうとarrayだろうと大した差はないと思うけど
0343デフォルトの名無しさん
2009/04/18(土) 19:25:06たしかに大差ないんだが、indexでのアクセスはやっぱ生より遅い。
0344デフォルトの名無しさん
2009/04/18(土) 19:42:39つまりは
実行スピードは
std::vector > boost::array >> 生の配列
か。
0345デフォルトの名無しさん
2009/04/18(土) 19:44:310346デフォルトの名無しさん
2009/04/18(土) 19:54:37アウチ!
間違ったw
0347デフォルトの名無しさん
2009/04/18(土) 21:29:19vectorだと多く確保できるけど、HDDに移される可能性がありそれが速度低下の原因では
0348デフォルトの名無しさん
2009/04/18(土) 21:37:16理論的には O(1) で同じと考えられる。
0350デフォルトの名無しさん
2009/04/18(土) 21:44:05ハッシュだって理屈の上ではO(1)だぜ?
0351デフォルトの名無しさん
2009/04/18(土) 21:51:090352デフォルトの名無しさん
2009/04/19(日) 01:58:00固定長配列は、(自動変数なら)スタックポインタを減算するだけで確保できる。
それと比べれば、ヒープから空きメモリを探してくるvectorというかnew[]は確保に時間がかかる。
その点ではboost::arrayが組込の配列と比べて遅くなる要素は無いはずなんだけど。
(もちろん最適化がしっかりしていて、アサート全OFFという前提のもと)
0353デフォルトの名無しさん
2009/04/19(日) 03:27:48なんか激しく疑わしいので比べてみた。@i386 gcc 4.1.2 -O2
for (size_t i = 0; i < size; ++i) cout << v[i] << endl;
生配列
.L21:
movl (%edi,%ebx,4), %eax
addl $1, %ebx
movl $_ZSt4cout, (%esp)
movl %eax, 4(%esp)
call _ZNSolsEi
movl %eax, (%esp)
call _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
cmpl %esi, %ebx
jne .L21
vector
.L15:
movl (%edi), %eax
movl (%eax,%ebx,4), %eax
addl $1, %ebx
movl $_ZSt4cout, (%esp)
movl %eax, 4(%esp)
call _ZNSolsEi
movl %eax, (%esp)
call _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
cmpl %esi, %ebx
jne .L15
まあ、確かに遅くはなると思うが・・・
0354デフォルトの名無しさん
2009/04/19(日) 12:48:080355デフォルトの名無しさん
2009/04/19(日) 13:06:42movl (%eax,%ebx,4), %eax
すごく無意味なことしてる気がするんだけど気のせい?
なんでこんなことしてるんだろ?
0356デフォルトの名無しさん
2009/04/19(日) 13:25:25普通はそうじゃないよな。
うちのPCで国家予算分のジャリ銭を数え上げたら数分差が出るかもしれないけどさ。
(それでも分岐予測ミスによる揺らぎよりは小さそう・・・)
結局ありきたりの結論だけど
vectorが遅いかもしれないから生配列を使うことを検討するのに時間を使う方が
よっぽどコスト高だな。
int* vv = &v[0];
for (size_t i = 0; i < size; ++i) { cout << vv[i] << endl; }
とかすれば生配列と全く同じ速度になるわけだし。
0357デフォルトの名無しさん
2009/04/19(日) 13:33:27スタック上ではHDDにはうつりにくいけど
動的確保したらうつりやすい
0358デフォルトの名無しさん
2009/04/19(日) 13:52:46vector から先頭アドレスをロード。
要素の内容をロード。
だから無意味だとは思わないが、なんで?
毎回先頭アドレスをロードするのが無駄ってこと?
0359デフォルトの名無しさん
2009/04/19(日) 14:39:29それは生配列かどうかとは違う問題では?
そもそも速度の変化を検知できるほど大きな配列をスタックに配置したら
数ページまるまる配列データだけになったりして、
そのページにアクセスする確率(≒スワップされない確率)は
ヒープ領域と変わらなくなってしまうんじゃないか?
ていうかメモリ増やせ。
0360デフォルトの名無しさん
2009/04/19(日) 17:51:13メモリの再配列以外では無いのは確かなんだ。
でも1.5倍以上の差がでる可能性があるのも間違いないからね。
どちらにするか悩むのは無駄だが、知識として抑えておくのは
悪いことではないでしょう。
0361デフォルトの名無しさん
2009/04/19(日) 18:39:44生配列みたく
movl (%edi,%ebx,4), %eax
の1行でいいんじゃないの?ってことじゃないかと。
0362デフォルトの名無しさん
2009/04/19(日) 18:41:40まぁそうだとしたら
>>355
は、レジスタの値とレジスタの値が指す先を混同してるってことか
0363338
2009/04/19(日) 22:55:36アセンブラは全然理解出来ていないのですが、
頑張ってよく読ませていただきます。
0364デフォルトの名無しさん
2009/04/20(月) 00:21:29どこからそんな結論が
0365デフォルトの名無しさん
2009/04/20(月) 00:57:25まず、お前がもっと深い知識を蓄えてから発言しろ
0366デフォルトの名無しさん
2009/04/20(月) 06:23:450367デフォルトの名無しさん
2009/04/20(月) 09:28:05shared_ptr<int> pn(new int(0));
とか書くと、intはnewできてコンストラクタ内でnewが例外投げるとintのポインタが行方不明になる?
うん、なるな。
0368デフォルトの名無しさん
2009/04/20(月) 09:35:15なんでドキュメントを読まずに「行方不明」とか意味のわからない結論で納得するの?
http://www.boost.org/libs/smart_ptr/shared_ptr.htm#constructors
> Exception safety: If an exception is thrown, delete p is called.
0369367
2009/04/20(月) 09:46:130370デフォルトの名無しさん
2009/04/20(月) 11:15:45352も言ってるけど、何で生配列とboost::arrayで差が出るんだよ
353のループ部を gcc 4.3.3 -O2 で試したけど、まったく同じアセンブラコードになったぞ
0371デフォルトの名無しさん
2009/04/20(月) 11:38:090372デフォルトの名無しさん
2009/04/20(月) 11:50:440373デフォルトの名無しさん
2009/04/20(月) 11:51:38> boost::array<array_type::index,3> idx = {{0,0,0}};
> A(idx) = 3.14;
>この方法は次元非依存のコードを書くのに役立ち,
>いくつかのコンパイラの下では operator[] よりも高いパフォーマンスをもたらす。
とboost.cppll.jpに解説があるくらいなので、オーバーライドされた[]が最適化
されないケースは間違いなくあるんだろう。
0374デフォルトの名無しさん
2009/04/20(月) 11:57:180375デフォルトの名無しさん
2009/04/20(月) 12:02:560376デフォルトの名無しさん
2009/04/20(月) 13:43:59速度が問題になることはないだろう。
つまりgcc使えば良いんだよ。
ターゲット環境にgccが無いのなら、移植しろってことなんだろう。
0377デフォルトの名無しさん
2009/04/20(月) 21:04:20multiarrayのoperator []が遅くなる要因は一時オブジェクトを作らないといけないからだと思う。
ところで、VC++ 9でも試してみたけど、やっぱりboost::arrayと生配列で出て来るコードは同じだった。
NDEBUGを定義して/O2で。
まあ普通のコンパイラならこれくらいGCCでなくても当然だと思う。
0378デフォルトの名無しさん
2009/04/20(月) 21:12:30g++やVC++の最適化機能ってすんげーんだな
と思う。
だって俺、最適化機能のあるコンパイラを作れって
言われても絶対無理だと思う。
そんな「boost::arrayと生配列で出て来るコードは同じ」みたいな
ところまで気を回せるコンパイラの作者陣って
ホントに尊敬するわ。
0379デフォルトの名無しさん
2009/04/20(月) 21:26:02ごく当たり前のことなんだけどな
0380デフォルトの名無しさん
2009/04/20(月) 21:51:470381デフォルトの名無しさん
2009/04/21(火) 03:43:590382デフォルトの名無しさん
2009/04/21(火) 22:39:48これを関数に渡す場合、const参照渡しにした方が望ましいの?
それとも
STLのイテレータや組み込み型変数のようにconst参照渡しよりコピー渡しの方が望ましいの?
0383デフォルトの名無しさん
2009/04/21(火) 23:01:47どうせそこまで速度稼ぎたいわけじゃないだろうし、ポインタと同じように扱うためのスマートポインタだし。
0384デフォルトの名無しさん
2009/04/21(火) 23:25:380385デフォルトの名無しさん
2009/04/22(水) 00:19:58関数内で、別の変数に代入するなどすれば、そのとき増えるので無問題。
それとは別の話で、もしptrの参照先を見るだけだったら、
ただのMyClass&/MyClass const&にすればいいな。
0386デフォルトの名無しさん
2009/04/22(水) 00:42:04使ってる場所が多いと、値だと結構クルよ。
0387デフォルトの名無しさん
2009/04/22(水) 01:19:29const参照だと、実際に使うときに実体が存在しない危険がある。
0388デフォルトの名無しさん
2009/04/22(水) 06:13:57呼び出し元にはshared_ptrがあるのだから、関数実行中に実体が消えることはないと思うんだけど。
0389デフォルトの名無しさん
2009/04/22(水) 13:11:54その理屈だとshared_ptr自体いらなくね?
0390デフォルトの名無しさん
2009/04/22(水) 16:12:070391デフォルトの名無しさん
2009/04/22(水) 20:51:14なんで?そんな理屈にはならんよ。
0392デフォルトの名無しさん
2009/04/22(水) 20:53:38auto_ptrで充分じゃね?
0393デフォルトの名無しさん
2009/04/22(水) 20:57:57だからなんでそんなことになるの?
0394デフォルトの名無しさん
2009/04/22(水) 21:01:08auto_ptrは使用禁止でもおかしくない。
0395デフォルトの名無しさん
2009/04/22(水) 21:12:120396デフォルトの名無しさん
2009/04/22(水) 21:37:41おいおい素人にも程があるだろ・・・
0397382
2009/04/22(水) 22:19:38そういったことを考えて決定するのが正しいのね。
ありがとう。
0398デフォルトの名無しさん
2009/04/22(水) 22:46:440399デフォルトの名無しさん
2009/04/22(水) 23:10:090400デフォルトの名無しさん
2009/04/22(水) 23:43:04組み込み型とイテレータは値渡しが望ましいとEffective C++で書かれていた気がするんだが。
0401デフォルトの名無しさん
2009/04/23(木) 00:11:100402デフォルトの名無しさん
2009/04/23(木) 00:40:38それはshared_ptrのオーナー次第。関数自体はオーナーじゃ無いことに注意する必要がある。
下記はかなり恣意的な例だけど、マルチスレッドプログラムだとすぐ嵌りそうですな。
struct A {
A() : s(new std::string) {};
boost::shared_ptr<string> s;
}
void doom(std::auto_ptr<A> body, boost::shared_ptr<string>& str) {
*str; // boo!!
};
int main() {
std::auto_ptr<A> a(new A);
doom(a, a->s);
}
0403デフォルトの名無しさん
2009/04/23(木) 01:04:44この例が一体何を示しているというのか。
boo!とか書いてるところで何か起きるわけでもなし。
0404デフォルトの名無しさん
2009/04/23(木) 01:26:28それ問題ないです…
マルチスレッドについてはconst参照でなく値渡ししたとしても、
コピー操作がアトミックじゃない以上は嵌る可能性があるよ。
shared_ptrの実装自体がconst参照使ってるわけだし、基本はconst参照でいいと思う。
0405402
2009/04/23(木) 02:11:38死んでるshared_ptrの参照剥しをしているんだけど?
まあ、マルチスレッドについてはアトミックなカウンタじゃないと死ぬっつうのは確かですな。
C++0xでマルチスレッド対応するらしいけど……
0406デフォルトの名無しさん
2009/04/23(木) 02:14:31お前、実行してみろ。本当?じゃねーよ。
0407デフォルトの名無しさん
2009/04/23(木) 02:19:37doom() を抜けるまでは最初の new A で生成したインスタンスは生きてるように見えるが?
0408402
2009/04/23(木) 02:53:07まあ、マルチスレッドでもなきゃやらんだろうけど。
struct A {
A() : s(new std::string) {};
boost::shared_ptr<string> s;
}
void doom(std::auto_ptr<A> body, boost::shared_ptr<string>& str) {
{
std::auto_ptr<A> b(body);
}
*str; // boo!!
};
int main() {
std::auto_ptr<A> a(new A);
doom(a, a->s);
}
0409デフォルトの名無しさん
2009/04/23(木) 02:59:58なんかもう shared_ptr も何も関係ないな。
0410デフォルトの名無しさん
2009/04/23(木) 03:06:30>>402がまずいコードなのは確かだけど、*strの問題じゃないよ。
bodyが先に生成されればa->sの時点で死ぬ。
strが先に生成されれば問題なし。
そして引数の評価順は不定であり、評価順依存のコードの実行結果は未定義なので、
コード自体が間違っている。
0411デフォルトの名無しさん
2009/04/23(木) 03:23:24a による body の初期化って、順番が不定な「引数の評価」に含まれるの?
5.2.2 Function call の p4 より
> When a function is called, each parameter shall be initialized with its corresponding argument.
同じく p8 より
> All side effects of argument expression evaluations take effect before the function is entered.
とか、読んでみたけどはっきりしない。
0412デフォルトの名無しさん
2009/04/23(木) 07:40:170413デフォルトの名無しさん
2009/04/23(木) 12:36:085.2.2 p4のこれがそうなんじゃないかなあ。
>The initialization and destruction of each parameter occurs within the context of the calling function.
0414382
2009/04/23(木) 19:20:17試しに
void foo(const boost::shared_ptr<MyClass> &p)
{
p->m_func();
}
と
void foo(boost::shared_ptr<MyClass> p)
{
p->m_func();
}
とだけが異なった2種のソースをg++に渡して-O2でコンパイルさせてみたら、
後者の方が大きかったんだが。
とりあえずこのソースに限り、ファイルサイズはconst参照じゃない方が小さく済むみたい。
実行時間は・・・どうやって調べればいいの?
0415デフォルトの名無しさん
2009/04/23(木) 20:17:170416デフォルトの名無しさん
2009/04/23(木) 20:29:06とりあえずcodepadかどこかにソースうpしてもらえないとなんとも
0417414
2009/04/23(木) 20:41:45すまなかった
C++ code - 38 lines - codepad
ttp://codepad.org/xAdtSWJO
コピーバージョン。
C++ code - 38 lines - codepad
ttp://codepad.org/nNuvdFvf
const参照バージョン
このソースをg++に渡してコンパイラオプション-O2で
コンパイルさせてみたら、後者の方が大きかった。
となると、後者の方が効率が悪いってことかなぁ
→でも効率を論ずるならやっぱり速度を測定しないとなぁ
→速度の実測ってどうすればいいのか分からない
ってことです。m(_ _)m
0418デフォルトの名無しさん
2009/04/23(木) 21:45:070420デフォルトの名無しさん
2009/04/23(木) 23:28:560421デフォルトの名無しさん
2009/04/24(金) 10:10:050422414
2009/04/24(金) 14:56:00結局const参照verの方が遅かった。
サンプルソースでだけど。
0423デフォルトの名無しさん
2009/04/24(金) 15:30:220424414
2009/04/24(金) 15:53:05C++ code - 45 lines - codepad
ttp://codepad.org/NiHfAcx4
これの
void the_function(boost::shared_ptr<MyClass> p)
を
void the_function(const boost::shared_ptr<MyClass> &p)
にしてみたバージョンとで比較してみて。
俺はconst参照verの方が遅くなったよ。
0425デフォルトの名無しさん
2009/04/24(金) 16:27:09#include <iostream>
#include <boost/progress.hpp>
#include <boost/shared_ptr.hpp>
class MyClass {
public:
virtual void f(){std::cerr << "MyClass f!" << std::endl;};
MyClass(){std::cerr << "MyClass Constructor!" << std::endl;};
virtual ~MyClass(){std::cerr << "MyClass Destructor!" << std::endl;}; };
void the_function(boost::shared_ptr<MyClass> p){ p->f(); }
void the_function_cr(boost::shared_ptr<MyClass> const& p){ p->f(); }
int main(){
const int M=0xffff, N=0xf;
#define FOO(f) { \
boost::progress_timer t; \
boost::shared_ptr<MyClass> po(new MyClass); \
for( unsigned long i=0; i<M; ++i ) \
for( unsigned long j=0; j<N; ++j ) \
(f)(po); \
}
FOO(the_function);
FOO(the_function_cr); }
$g++ foo.cxx
$./a.out 2>/dev/null
0.85 s
0.81 s
誤差じゃね?
0427デフォルトの名無しさん
2009/04/24(金) 18:01:08iostreamが重そうだと思ったから、
ダミーの関数呼出(GetCurrentProcess)にしてやってみた。
ただし、N = 0xfffに変更。共に-O2使用。
Cygwin g++ 3.4.4
5.87 s
1.79 s
VC++ 2008 SP1
7.70 s
1.12 s
やっぱり参照カウンタの操作が重いんだと思う。
ちなみに、BOOST_SP_DISABLE_THREADS(参照カウンタの操作にアトミックなやつを使わない)
を指定すると、値渡し版の所要時間が4割くらい減る。
0428デフォルトの名無しさん
2009/04/24(金) 18:25:280429デフォルトの名無しさん
2009/04/24(金) 19:51:49なんだかおかしな気がするわな
0430デフォルトの名無しさん
2009/04/24(金) 22:24:06手元ではコピーコンストラクタのほうが実行コードが大きくなったぞ?
0431414
2009/04/24(金) 22:30:17・・・もしかして参照渡しになっているところの数によって変化する要因があるとか?
あとは最適化か??
0432デフォルトの名無しさん
2009/04/24(金) 22:34:34一時オブジェクトが作られてないか?
0433414
2009/04/24(金) 22:42:48ちゃんとconst参照渡しだから大丈夫なはずなんだが。。。
う〜ん?
まあ速度は・・・誤差かもしれない。
相当回数トライして結果をt検定してみないと有意に早いとは証明できない程度。
でもサイズは誤差じゃなくcopy_verの方が小さいです。
0434デフォルトの名無しさん
2009/04/24(金) 22:45:23つまり、>>414は間違いだったってことでいいの?
0435デフォルトの名無しさん
2009/04/24(金) 22:48:23ttp://booster.x0.to/
以下更新内容の一部
[Graph]
Applied performance patch from Jongsoo Park.
Importing null (no-op) property map from SOC/2007.
[Math]
Add some macro-expansion-suppression code to test_sign.cpp.
Fix for no long double math functions.
[Smart_ptr]
Bring back "explicit" on the auto_ptr rvalue constructor. Refs #2951.
0436414
2009/04/24(金) 22:49:09いや、const参照渡し版よりcopy版の方がこちらの環境ではわずかながら早い。
ただそれが有意な差であると言い切れるかは検定してない。
あと、コンパイラのバージョンがg++ 3.4.5(MinGW)であることを追記し忘れたm(_ _)m
>とりあえずこのソースに限り、ファイルサイズはconst参照じゃない方が小さく済むみたい
これは確か。
0437デフォルトの名無しさん
2009/04/24(金) 22:49:25Don't include termios.h unless BOOST_ASIO_HAS_SERIAL_PORT is defined.
[Property_map]
Approximated non-ASCII character by ASCII one
[Pending]
Fixed tab
[Signals2]
Fix c++0x perfect forwarding for deconstruct.
[Functional]
Fix float support on vxWorks.
[Connfig]
Added support for vxworks.hpp.
Fixes #2959.
[Fsion]
Trying to fix ambiguities of operator<<() for unused_type.
[Regex]
Added possessive modifiers ++ *+ ?+ {}+.
Added support for \v and \h as character classes as per Perl-5.10.
[Serialization]
Add missing 'inline'. Don't include <exception> when excepetions are disabled.
0438デフォルトの名無しさん
2009/04/24(金) 22:53:49いや、だからさあ、
>>414と>>417であなたが言ってることは逆でしょう?
どこかでファイルを取り違えていたりしない?
0439414
2009/04/24(金) 22:57:07ごめん
既に>>414の段階でおかしかった。
吊ってくる。
>つまり、>>414は間違いだったってことでいいの?
おっしゃるとおり逆だ。
>とりあえずこのソースに限り、ファイルサイズはconst参照じゃない方が小さく済むみたい
これは正しい。
そして>>435様に挟む形でレスして申し訳ございません。
0440デフォルトの名無しさん
2009/04/24(金) 22:59:44gccのバージョンと環境を教えて。
0441414
2009/04/24(金) 23:01:51Windows XP Home Edition SP2
C:\>g++ --version
g++ (GCC) 3.4.5 (mingw special)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
BoostはRelease 1.37.0
0442デフォルトの名無しさん
2009/04/24(金) 23:05:51うちの会社は未だに2.9系使ってるけど。
0443デフォルトの名無しさん
2009/04/24(金) 23:07:49MinGWが未だ3.4.5しか対応してくれていないんだ。
正式版じゃなければ4.x.x系列のもあるらしいんだが。。。
0444デフォルトの名無しさん
2009/04/24(金) 23:20:210446デフォルトの名無しさん
2009/04/24(金) 23:55:500447デフォルトの名無しさん
2009/04/25(土) 13:59:353.4.5でwstringが未対応なので、野良の4.3.3使ってる。
まあ普通に動くよ。Dwarf2でVC近い速度が出るし。
0448デフォルトの名無しさん
2009/04/26(日) 03:00:54色々テストしてみたいんだけど
0449デフォルトの名無しさん
2009/04/26(日) 03:36:540450デフォルトの名無しさん
2009/04/27(月) 16:43:09今度そのhoge.cppにboost::lambdaも使うことにしようと思っている。
なお、このhoge.cpp以外でboost::bindおよびboost::lambdaは使用していない。
このような時は
1.boost::lambdaをただ追加する
(=<boost/bind.hpp>と<boost/lambda/lambda.hpp>をインクルードする。)
2.boost::bindを使っている箇所も全てboost::lambdaに置き換える
(=<boost/lambda/lambda.hpp>だけインクルードする。)
このどちらが良いのかい?
0451デフォルトの名無しさん
2009/04/27(月) 16:59:240452450
2009/04/27(月) 17:05:52> boost::bindはグローバルに_1とか置く割と行儀が悪いライブラリだったりするんで俺なら2を選ぶ
そうだったんか。
そういえばboost:lambdaの_1とかとバッティングすることがあると聞いた気がするなぁ。
まあbindは古株だからかな?
0453デフォルトの名無しさん
2009/04/27(月) 17:46:19・・・でもPC向けだしこのくらいいいかな、利便性を考えれば。
0454デフォルトの名無しさん
2009/04/27(月) 23:09:28boostのbind.hでerror C2825: 'F': '::' が後に続くときは、クラスまたは名前空間でなければなりません
c:\includefiles\boost\bind.hppと出ます。
いかがその部分です
template<class F> struct result_traits<unspecified, F>
{
typedef typename F::result_type type;
};
色々サイトで調べてみたのですが、#include <boost/bind.h>の前に
#define BOOST_BIND_ENABLE_STDCALL
#define BOOST_MEM_FN_ENABLE_STDCALLを書くと良いと記載されていたのですが、
エラーが取れません。原因がわかりませんでしょうか?
0455デフォルトの名無しさん
2009/04/27(月) 23:27:35result_traitsの後に<は書けなくね?
0456デフォルトの名無しさん
2009/04/27(月) 23:50:15ご返事ありがとうございます。
エラーの箇所を確認したのですが、bind.hの中からエラーを出力しているようです。
boostの中のバグということでしょうか?
0457デフォルトの名無しさん
2009/04/28(火) 00:10:18エラーの発生する自分で書いた側のコードをupして。
0458デフォルトの名無しさん
2009/04/28(火) 00:38:20確認したのですが bind.hppのエラーしか出力されていないようです。
ちなみにエラー箇所はbind.hppの68行目で
template<class F> struct result_traits<unspecified, F>
{
typedef typename F::result_type type;
};
から出力されておりエラー内容は
error C2825: 'F': '::' が後に続くときは、クラスまたは名前空間でなければなりません c:\includefiles\boost\bind.hpp
error C2039: 'result_type' : '`global namespace'' のメンバではありません。c:\includefiles\boost\bind.hpp
error C2146: 構文エラー : ';' が、識別子 'type' の前に必要です。c:\includefiles\boost\bind.hpp
error C2208: 'boost::_bi::type' : メンバのない列挙型、構造体、共用体が定義されました。c:\includefiles\boost\bind.hpp
error C1903: 直前のエラーを修復できません。コンパイルを中止します。c:\includefiles\boost\bind.hpp
error C2039: 'result_type' : '`global namespace'' のメンバではありません。c:\includefiles\boost\bind.hpp
error C2208: 'boost::_bi::type' : メンバのない列挙型、構造体、共用体が定義されました。c:\includefiles\boost\bind.hpp
と記述されています。お手数ですがアドバイスお願いいたします。
0459デフォルトの名無しさん
2009/04/28(火) 00:57:36boost::bind()を呼ぶところの第3引数が間違っている可能性が高い。
だから>>457
0460デフォルトの名無しさん
2009/04/28(火) 00:59:54第3は余計だった。なんでこんなこと書いたんだ
とにかく引数の指定を間違えてる
0461デフォルトの名無しさん
2009/04/28(火) 01:38:35最近のVisual C++なら、
「foo.cpp(7) : コンパイルされたクラスの テンプレート のインスタンス化 'HogeHoge' の参照を確認してください」
ってのがエラーメッセージの随所に挟まっている。
(IDEからビルドしているなら、エラー一覧ではなく出力ウィンドウのほうに)
このメッセージだけを見ていくと、その中に必ず自分のソースコードを指しているものがあるはず。
0462デフォルトの名無しさん
2009/04/28(火) 02:01:59返事が遅くなってしまい申し訳ございませんでした。
ご親切なご回答ありがとうございます。
自分のソースを確認した所、
1>c:\includefiles\boost\bind.hpp(67) : error C2825: 'F': '::' が後に続くときは、クラスまたは名前空間でなければなりません
1> c:\includefiles\boost\bind\bind_template.hpp(15) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::_bi::result_traits<R,F>' の参照を確認してください
1> with
1> [
1> R=boost::_bi::unspecified,
1> F=void (__thiscall Servent::* )(const boost::system::error_code &,size_t) throw()
1> ]
1> c:\work_data\gg\src\network\servent.cpp(54) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::_bi::bind_t<R,F,L>' の参照を確認してください
1> with
1> [
1> R=boost::_bi::unspecified,
1> F=void (__thiscall Servent::* )(const boost::system::error_code &,size_t) throw(),
1> L=boost::_bi::list3<boost::_bi::value<Servent *>,boost::arg<1>,boost::arg<2>>
1> ]
0463デフォルトの名無しさん
2009/04/28(火) 02:13:39ソースとしては、
typedef typename result_traits<R, F>::type result_type;
boost::bind(&Servent::read, this,boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
あと質問なのですが、boostのバージョンによる不具合の可能性はあるのでしょうか?
現在boostの1.35を使用して実行しております。
度々ご質問して申し訳ございません。
0464デフォルトの名無しさん
2009/04/28(火) 06:06:36> 初心者ですが
これいらない
0465デフォルトの名無しさん
2009/04/28(火) 14:21:590466デフォルトの名無しさん
2009/04/28(火) 14:50:26コンパイルしてそのエラーの出る最低限のソースが必要。
0467デフォルトの名無しさん
2009/04/29(水) 01:27:447.0以下だと該当コードは利用できず、別のコードに置換されるみたいだけど。
0468デフォルトの名無しさん
2009/04/30(木) 11:13:140469デフォルトの名無しさん
2009/04/30(木) 19:11:05ホントすげぇよBoost。
C++が大好きなんだろうなぁと思わせられるよね(笑)
Boost.Lambda(functionも。)やBoost.Spirit、Boost.MPLあたりが変態級の名を冠するにふさわしいか。
利便性で言えばshared_ptrもヤヴァイけど。
0470デフォルトの名無しさん
2009/04/30(木) 22:49:380471デフォルトの名無しさん
2009/04/30(木) 23:11:00http://codepad.org/6fhFzzye
このコードにて、エラーになる原因が分かりません。
私の考えでは
boost::lambda::bind(func_i, boost::lambda::protect(boost::lambda::bind(my_name, boost::lambda::_1)))
でconst char* constを受け取りintを返す関数が得られるので、
それをlambda_test_funcの引数として渡せるのではないかと思ったのですが。
どこを修正すればよろしいでしょうか?
0472デフォルトの名無しさん
2009/04/30(木) 23:17:13lambda で生成される関数は、関数オブジェクトの一種。
関数へのポインタは C++ 言語上の「関数」を指すことができるけど、
言語上はクラスオブジェクトとなる関数オブジェクトを指すことはできない。
関数と関数オブジェクトを同等に扱うためのものとして boost::function がある。
- void lambda_test_func(int (*func_ptr)(const char* const char_ptr))
+ void lambda_test_func(boost::function<int (const char*)> f)
0473472
2009/04/30(木) 23:38:58あと、関数合成に boost::lambda::protect 要らない。
http://www.boost.org/doc/html/lambda/le_in_details.html#id3704796
0474デフォルトの名無しさん
2009/05/01(金) 02:59:05検索するとCLapack使ってるのしかでないけど、みんな自前で書いてるの?
0476デフォルトの名無しさん
2009/05/01(金) 19:03:13ttp://booster.x0.to/
以下更新内容の一部
[Mpl]
portability patch for sunpro on little-endian platforms
[Regex]
Added support for \g \K and \R.
[Spirit]
Merging Spirit V2.1
Spirit: Added missing files, deleted old files, cleaned up empty directories
Spirit: Started to add repository of reusable Spirit components, added
repository::karma::confix and some related tests
Spirit: Fixed assertion in multi_pass iterator
[Statechart]
Updated VC project files to 1.39.
Fixed a bug that prevented the use of boost::ref()
with fifo_scheduler<>::create_processor<>, reported by Steve Hawkes.
This should fix the non-standard code used in changeset 52616.
[Signals2]
Trying to fix compile problems on msvc 9 in release mode.
[Serialization]
Correct logic for enabling THROW_EXCEPTION
Add support for std::bitset.hpp
0477デフォルトの名無しさん
2009/05/01(金) 19:10:05ほほうspiritがV2になったのか
0478デフォルトの名無しさん
2009/05/02(土) 01:00:050479デフォルトの名無しさん
2009/05/02(土) 22:45:06Signals2って何かな?と思って調べたらスレッドセーフのSignalらしい。これは欲しい。
0480デフォルトの名無しさん
2009/05/03(日) 12:01:480481デフォルトの名無しさん
2009/05/03(日) 13:32:00Boostって結構こまめに更新した方が良いの?
俺のBoostは1.37なんだけど。。。
0482デフォルトの名無しさん
2009/05/03(日) 13:50:15最近一定期間ごとにリリースする方針に変えたらしいね。
更新内容を見て、興味のない更新ばかりだったら放置しても可だと思うけど。
特に最近は後方互換性を平気で破壊するような更新が多いから悩む。
exceptionとかexceptionとかexceptionとか。
0483481
2009/05/03(日) 13:57:14ありがとう。exceptionって使ったこと無いなぁ。便利?
その仕様変更はBoostだから出来ることか。
まあC++に正式に乗っちゃったら迂闊に仕様変更できないから
今のうちに満足行くまで更新して欲しい。
0484481
2009/05/03(日) 14:01:33ホントだ、1.36以降、3ヶ月刻みになっているね。
Version 1.39.0
May 2nd, 2009 12:00 GMT
Version 1.38.0
February 8th, 2009 12:00 GMT
Version 1.37.0
November 3rd, 2008 12:00 GMT
Version 1.36.0
August 14th, 2008 12:00 GMT
Version 1.35.0
March 29th, 2008 12:00 GMT
0485471
2009/05/03(日) 14:36:17ご教示の通り
boost::lambda::protectを外した上で boost::function を利用したところ、
問題無くコンパイル通りました。
ありがとうございました。
0486デフォルトの名無しさん
2009/05/03(日) 17:29:29必要に応じてあげていけばいいと思うよ。
でもバージョン上げたら、コンパイルできなくなったりすることがあるから一気にバージョン上げるとつらいかも。
0487471
2009/05/03(日) 17:55:45今度はBoost.Spiritのセマンティックアクションにラムダ式を入れる時にまた困っております。
//以下はMyClass.hの中身
class MyClass
{
MyClass();
virtual ~MyClass()=0;
public:
static const int get_10(const char * const);
};
//以下はMyClass.cppの中身
#include "MyClass.h"
const int MyClass::get_10(const char * const)
{return 10;}
//mainは以下です。
C++ code - 112 lines - codepad
http://codepad.org/K35wYWBz
このソース中の質問箇所というコメントのところ
('/' >> fctr)[
boost::lambda::bind(func_geti_reti,
boost::lambda::bind(MyClass::get_10, boost::lambda::_1)
)
]
が問題点なのですが、
0488471
2009/05/03(日) 17:58:47�@Boost.Spiritのセマンティックアクションに
�Aラムダのbindで関数を結合し
�BMyClass::get_10の部分ががクラスのstaticメンバ関数である
この�@〜�Bの時に
x_error.cpp:82: error: invalid initialization of non-const reference of type 'co
nst int (&)(const char*)' from a temporary of type 'const int ()(const char*)'
C:/BoostC++Libraries/boost/lambda/detail/bind_functions.hpp:256: error: in passi
ng argument 1 of `const boost::lambda::lambda_functor<boost::lambda::lambda_func
tor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambd
a::detail::unspecified> >, typename boost::lambda::detail::bind_tuple_mapper<typ
ename boost::lambda::detail::constify_non_funcs<T>::type, const Arg2, boost::tup
les::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuple
s::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples:
:null_type, boost::tuples::null_type>::type> > boost::lambda::bind(const Arg1&,
const Arg2&) [with Arg1 = const int ()(const char*), Arg2 = boost::lambda::place
holder1_type]'
というエラーが出てしまいます。
環境はg++です。
0489471
2009/05/03(日) 18:03:35× MyClass::get_10(const char * const)
○ MyClass::get_10(const char * const, const char * const)
× boost::lambda::bind(MyClass::get_10, boost::lambda::_1)
○ boost::lambda::bind(MyClass::get_10, boost::lambda::_1, boost::lambda::_2)
とすべきでした。失礼致しました。
それでもなお
x_error.cpp:81: error: invalid initialization of non-const reference of type 'co
nst int (&)(const char*, const char*)' from a temporary of type 'const int ()(co
nst char*, const char*)'
というエラーが出てしまいます。
非constな参照でテンポラリな何物かを捉えているという旨のようですが、
どうすれば回避できるのか分かりません。
どうかお知恵をお貸しください。
0490471
2009/05/03(日) 18:31:34をboost::bindに書き換えたら問題無く動作しました。
個人的にはboost::bindライブラリとboost::lambdaライブラリを混在させるのは気持ち悪いので
出来ればboost::bindの箇所は無くして全てboost::lambda::bindにしたいのですが、
どうすれば良いでしょうか?
0491デフォルトの名無しさん
2009/05/03(日) 20:36:470492471
2009/05/03(日) 21:01:43SpiritのSemantic Actionにlambda::bindで関数を結合して渡すとエラーになりますが、boost::bindならOKです。lambda::bindでも大丈夫にする方法を教えていただけないでしょうか?
0493デフォルトの名無しさん
2009/05/03(日) 21:17:04func_geti_retiの引数の&が余分じゃないか?
0494471
2009/05/03(日) 21:36:52int func_geti_reti(const int& num)
を
int func_geti_reti(const int num)
や
int func_geti_reti(int num)
にしてみましたが、
error: invalid initialization of non-const reference of type 'const int (&)(const char*)' from a temporary of type 'const int ()(const char*)'
と言われます。
私の見解では
関数の戻り値などのテンポラリオブジェクト(この場合はint)を
constな参照で束縛できるというC++の仕様がありますから、
このあたりが問題な訳ではなさそうだと思っております。
0495デフォルトの名無しさん
2009/05/04(月) 20:23:45ttp://www.kmonos.net/alang/boost/classes/operators.html
ここで紹介されているoperatorsって、いちいち定義が面倒なのを自動化してくれるらしいから
便利そうだと思っているんだが、使うと遅くなったりするのかい?
0496デフォルトの名無しさん
2009/05/04(月) 23:18:04ただし、クラス/構造体のサイズを余計に増やしたくなければ、ちょっとだけ特殊な記法が必要。
0497デフォルトの名無しさん
2009/05/04(月) 23:52:23ほう、そうなんか。そのちょっとだけ特殊な記法とはEBOに関連する?
0498デフォルトの名無しさん
2009/05/05(火) 00:17:240499デフォルトの名無しさん
2009/05/05(火) 00:21:31EBOはEmpty Base Optimizationのつもりで書いた。
みんなに通じる略称かと思っていたが甘かったかな。
0500デフォルトの名無しさん
2009/05/05(火) 00:33:29ちなみにその直感は超正しい。 俺はDirect3Dを使ったソフトでベクトル型をboost::operatorから継承したせいで
半日謎のバグと戦う羽目になった。
0501デフォルトの名無しさん
2009/05/05(火) 01:05:170502デフォルトの名無しさん
2009/05/05(火) 08:58:41何はともあれ皆さんありがとう。
0503デフォルトの名無しさん
2009/05/05(火) 11:29:54p202にEBOがEmpty Base Optimizationの略称で使われているのを発見した。
原著ではどうなっているのかな?
0504デフォルトの名無しさん
2009/05/05(火) 12:29:050505デフォルトの名無しさん
2009/05/05(火) 12:42:430506デフォルトの名無しさん
2009/05/05(火) 12:47:20あんまりにも乱発するのは感心しないぞ。
0507デフォルトの名無しさん
2009/05/05(火) 13:11:240508デフォルトの名無しさん
2009/05/05(火) 13:14:46ADLやSFINAEはバグの原因になるから
勝手に使えるようになる。
CRTPやEBOはどうなんだろ。
趣味でやってると手を出したくなるけど。
0509デフォルトの名無しさん
2009/05/05(火) 13:41:36いや、略語乱発は感心しないという話では?
0510デフォルトの名無しさん
2009/05/05(火) 14:48:23つうかそこいらの女子高生の略語に比べればカワイイもんだ
0511デフォルトの名無しさん
2009/05/05(火) 18:38:34./booststrap.sh してできた project-config.jam の
option.set libdir の行が PREFIX/lib じゃなくて /lib になるのは
何かやんごとなき事情でもあるの?
0512デフォルトの名無しさん
2009/05/07(木) 11:06:591.38.0の時にやってた、
bjam --toolset=msvc-8.0 -sBZIP2_SOURCE=〜 -sZLIB_SOURCE=〜 --stagedir=. stage release debug link=static,shared runtime-link=static,shared
でビルドしようとすると何か途中で止まるんだが…
0513デフォルトの名無しさん
2009/05/07(木) 11:22:31あとシングルスレッドライブラリも使わないから、threading=multiも指定した方が良いな。
0514デフォルトの名無しさん
2009/05/07(木) 11:26:39�d
おかげでビルド進みました。
0515デフォルトの名無しさん
2009/05/07(木) 11:36:46なんかmathがビルドできないな。
しかも、なぜか自分でファイルを消しておいて、そのファイルが見つからないからskipとかいうヘンなメッセージが。
もう一度試したらうまくいっているようだが。
0516デフォルトの名無しさん
2009/05/07(木) 12:30:11link=staticとruntime-link=staticがどうたらこうたらっていうエラーメッセージが出て止まってた。
やっぱりバッチファイル直接実行じゃなくてコマンドプロンプトから実行しないとダメだな…
0517デフォルトの名無しさん
2009/05/07(木) 20:35:09チェックしてくる
0518デフォルトの名無しさん
2009/05/07(木) 21:19:561.37->1.39にした俺はspiritの名前空間が変わってて驚いた。
0519デフォルトの名無しさん
2009/05/07(木) 22:52:30再ビルドに時間がかかり面倒なので見なかったことにした
0520デフォルトの名無しさん
2009/05/07(木) 23:31:100521デフォルトの名無しさん
2009/05/07(木) 23:40:39みんな積極的に使ってる?
0522デフォルトの名無しさん
2009/05/07(木) 23:46:32必要なら使う、当たり前のこと。
0523デフォルトの名無しさん
2009/05/08(金) 01:13:490524デフォルトの名無しさん
2009/05/08(金) 01:59:580525デフォルトの名無しさん
2009/05/08(金) 07:46:02もうちょっとシンプルなら使うのに…
0526デフォルトの名無しさん
2009/05/08(金) 09:16:23boost初期からあるってだけで、今新規に投稿しようとしたら満場一致で拒否られるレベル。
0527デフォルトの名無しさん
2009/05/08(金) 09:29:490528デフォルトの名無しさん
2009/05/08(金) 11:37:470529デフォルトの名無しさん
2009/05/08(金) 21:48:141.38でビルド時に警告が出てた。
0531デフォルトの名無しさん
2009/05/09(土) 09:36:58マルチスレッドデバッグ(/MTdオプション)やマルチスレッド(/MTオプション)を
指定している場合用のライブラリのビルドできなくなってるのかな?
0532デフォルトの名無しさん
2009/05/09(土) 09:55:480533デフォルトの名無しさん
2009/05/09(土) 11:30:32確かにビルドの挙動が変わっていますね・・・。
少なくとも3週間以上、sharedライブラリがビルドされていない事に気付かないままアップロードしていましたので全て取り下げました。
申し訳ございません。
ところでお詫び代わりという訳でもありませんが、Windows+VC環境では導入が面倒なライブラリ群(bzip2,Expat,ICU,zlib 32/64bit)の
ビルド済みパッケージを用意しました。(libs_for_build_boost.rar)
残りのMPICH2とPythonのインストーラを公式からダウンロードしてインストールすれば、32/64bitBoostのフルビルドが簡単に行える様になります。
それから、build.txtを改訂序にhow_to_build.txtに名称変更しました。
そういえば今週のsvnスナップショットは今夜辺りにでもビルドしてアップロードする予定ですが、64bit版svnスナップショットの需要はありますでしょうか。
32bit版と同梱にすると圧縮しても250MB程度まで膨れ上がる可能性がありますし、
ファイルを分けるにしてもサイト容量と作業時間を食いますので需要が無ければ今迄通り32bit版のみにします。
若しくは、1.39等のリリース版ソースを使った64bitビルドが欲しいといったリクエストでも構いません。こちらも一時の手間で済みますので楽です。
>>531
staticもsharedも、特に今迄と変わり無くビルド可能です。
0534デフォルトの名無しさん
2009/05/09(土) 11:38:33シングルスレッドなプログラムなら、かえって Signals のままのほうが
排他制御なくて性能いいとかあるんかな。
0535デフォルトの名無しさん
2009/05/09(土) 12:38:51ライブラリビルド不要とも書いてあったな。
0536デフォルトの名無しさん
2009/05/09(土) 15:34:23dummy_mutexなんてもんもあるでな。
0537デフォルトの名無しさん
2009/05/10(日) 00:46:30計12ファイルが欠損しておりますが追々改善していきます。毎度人柱仕様で申し訳ございません。
ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit.Support: Renamed policy namespace for iterators
Spirit: fixed member initialization sequence
Spirit: added some parenthesis' avoiding macro expansion of certain names
[Archive]
fix for error in handling compilers which don't handle has_new_operator
[Config]
Add __GXX_EXPERIMENTAL_CXX0X__
[Units]
Allow specifing the default conversion using either base units or units.
[wave]
Update Wave to cope with some namespace reshuffling in Spirit
Wave: Pending fix after namespace change in Spirit2 iterators
[Type_traits]
new test of empty aligned_storage
[mpi]
Fixes for bugs 2586 and 2594
↓
[Regex]
Add support for named sub-expressions.
[Utility]
eliminate noisy warning on msvc, fixes #2993
それと>>531の件ですが、確かにmt-s,mt-sgdがビルド出来なくなっていました。
ただ、bjamのオプションを弄ったりすると一部ビルドが出来たり
ビルドログを取ってみるとエラーメッセージがおかしかったりとbjamの挙動が良く分かりませんのでこちらも検証していきます。
0538デフォルトの名無しさん
2009/05/10(日) 01:32:26--build-type=completeやlink=static runtime-link=staticとすると何故か
error: link=shared together with runtime-link=static is not allowed
error: such property combination is either impossible
error: or too dangerious to be of any use
と表示されますが、--build-type=complete --with-mpiやlink=static runtime-link=static --with-mpi(--with-pythonでも可)とすると
ビルドが通ります(但しmpiやpython関連ライブラリのみですが)。
0539デフォルトの名無しさん
2009/05/10(日) 07:39:46というのも、例えばVCの場合、CRTのライブラリには、いくつものバージョンがある。
それこそ、SPごとにバージョンが変わる。
CRTをスタティックリンクするが、Boostをダイナミックリンクするということは、
CRTのバージョンが異なる可能性があり、危険だと思う。
そしてそもそもCRTのスタティックリンク自体が、VCでは推奨されていない。
確か、Boostの連中の検証した所によると、スタティックリンクのCRTを使うと、
スレッド周りで、たとえ正しいコードを書いたとしても、メモリリークする場合があるらしいとかいうMLを、
どっかで見た気がする。
0540デフォルトの名無しさん
2009/05/10(日) 13:14:221.38以前からビルドは不可能でした。ただ、1.39のbjamビルドでは
link=shared runtime-link=staticではなく
link=static runtime-link=staticや--build-type=completeでも
error: link=shared together with runtime-link=static is not allowed
と表示されてしまい、
link=static runtime-link=static --with-python(or mpi)としたり
--build-type=complete --with-python(or mpi)とすると
ビルドが通ってしまう点がよく分かりません。
1.38と1.39のdebugビルド時のbjamの動作の違いは
Boost 1.38
static static: libboost_...-vc90-mt-sgd-1_38.lib
static shared: libboost_...-vc90-mt-gd-1_38.lib
shared static: error: link=shared together with runtime-link=static is not allowed
shared shared: boost_...-vc90-mt-gd-1_38.lib + boost_...-vc90-mt-gd-1_38.dll
(続く)
0541デフォルトの名無しさん
2009/05/10(日) 13:15:30Boost 1.39
static static: error: link=shared together with runtime-link=static is not allowed
(--with-python(or mpi)時のみlibboost_...-vc90-mt-sgd-1_39.lib)
static shared: libboost_...-vc90-mt-gd-1_39.lib
shared static: error: link=shared together with runtime-link=static is not allowed
shared shared: boost_...-vc90-mt-gd-1_39.lib + boost_...-vc90-mt-gd-1_39.dll
です。そのCRTスタティックリンク非推奨の件でstatic staticが封印されたのかとも思いましたが、
CMakeでVC用のプロジェクトファイルを作成してビルドするとmt-s(release static static)やmt-sgd(debug static static)が作成されましたので、
--build-type=completeがエラー扱いになってしまう事と併せるとbjam(の設定ファイル)の不具合ではないかと考えています。
上記とはあまり関係ありませんが、libs_for_build_boost.rarをアップデートしました。ttp://booster.x0.to/
zlibに似た何かをzlibと勘違いしてビルドしてしまっておりましたので正しい物に差し替えました。申し訳ございません。
これで、ビルド不可能なBoostライブラリはboost_graph_parallelのlibとdllのみ(mpi絡みのエラー)となります。
boost_graph_parallelはログを見ると32bit版がリンクエラーなのに対して
64bit版ではコンパイルエラーで引っ掛かっているのでソースが怪しい気がしなくもないですが・・・。
只、readmeやhow_to_build.txt内のbjamビルドコマンドについては上記の件もあり私自身混乱気味ですので、参考程度にして下さい。
0542デフォルトの名無しさん
2009/05/10(日) 15:31:21date_time
program_option
serialization
thread
filesystem
(system)
要ビルドのライブラリで使うのはこれぐらいかなぁー
0543デフォルトの名無しさん
2009/05/10(日) 16:53:36十分つかってるな。
0544デフォルトの名無しさん
2009/05/10(日) 17:14:490545デフォルトの名無しさん
2009/05/10(日) 18:07:22svn rev.52330(April 11,2009)での\Jamrootの更新で、160行目周辺の
if <link>shared in $(properties) && <runtime-link>static in $(properties) &&
! ( <toolset>cw in $(properties) )
{
return <build>no ;
}
が
if <link>shared in $(properties) && <runtime-link>static in $(properties) &&
! ( <toolset>cw in $(properties) )
{
ECHO "error: link=static together with runtime=link is not allowed" ;
ECHO "error: such property combination is either impossible " ;
ECHO "error: or too dangerious to be of any use" ;
EXIT ;
}
に変更されています。EXIT ;をreturn <build>no ;にすれば旧来通りの動作(上記エラーメッセージが2度表示されますが)になりstatic-staticがビルドされます。
0546デフォルトの名無しさん
2009/05/10(日) 18:08:02Skipping build of: libs/regex/build/icucore <build>no in common properties ...
と表示され、ビルドされたlibboost_regex-vc90-mt-sgd.libは
EXIT ;をreturn ;(唯戻るだけ)にして上記Skippingメッセージが表示されない状態でビルドした同libとファイルサイズもMD5も一致しません。
ログ(return <build>no ;:ttp://booster.x0.to/test86bak.txt return ;:ttp://booster.x0.to/test86.txt)を見ると
作業フォルダこそ違え同じ様な動作をしている様に見えるのですが、return ;でビルドした方が僅かにファイルサイズが大きくなります。
しかしそもそもstatic-staticでは実行されない筈のルーチンが実行されたり
エラーメッセージが2度表示されしまっている(エラー処理ルーチンを2度通っている)時点で何かがおかしいのですが、
今迄エラーメッセージを発せずICU絡みでしか実害が無い(と思われる)仕様でしたので問題が隠蔽されていた様です。
bjamとJamrootをそれぞれrev.38329(August 1,2007)とrev.38534(August 9,2007)迄戻してもstatic-staticがこのルーチンに引っ掛かっていましたので、
相当昔からのバグの様です。おかしいのは設定ファイルではなく恐らくbjamのソースの方でしょうか。
EXIT ;をreturn ;にしてエラーを完全に無かった事にしてしまうのが対症療法としては現状での最善と思われますが、
この場合、禁止されているshared-staticでも52回エラーメッセージを繰り返した後ビルドを始めてしまいますのでご注意下さい。
0547デフォルトの名無しさん
2009/05/10(日) 22:18:43早速使わせてもらいます。
ゲームの場合はstatic-staticじゃないとサポート面倒なんで…
0548デフォルトの名無しさん
2009/05/10(日) 23:24:580549デフォルトの名無しさん
2009/05/11(月) 00:13:20そのままBuid出来た事なんて一度もないよ
いつもJamファイルと格闘する羽目になる
Windowsはそうでもないのか、うらやましいのぅ
0550デフォルトの名無しさん
2009/05/11(月) 02:00:46だいたい何で必要なんだ。
ランタイムのインストーラーの他に、
DLLをEXEと同梱することもライセンス的に認められているというのに。
0551デフォルトの名無しさん
2009/05/11(月) 11:07:34ぜひ最後の
make instal
コマンドlを
checkinstall
に変えて
で同時にできたdebパッケージを配布してほしい
0552デフォルトの名無しさん
2009/05/11(月) 17:34:47DLLの検索に失敗して起動できなかったりすることがあるんだよな
調べるのも面倒だからスタティックリンクする
side-by-sideとか意味わかんね
0553デフォルトの名無しさん
2009/05/11(月) 21:51:08亀レスだが
http://boost-sandbox.cvs.sourceforge.net/viewvc/boost-sandbox/boost-sandbox/boost/numeric/bindings/lapack
を使ってます。
ただ、ublas は LAPACK と要素の格納方法が違うので、
hermitian_matrix とかに対して heev が使えないとか、けっこう不便な所がある。
0554デフォルトの名無しさん
2009/05/11(月) 22:07:13VCだといつも問題なくライブラリビルドできるね。
0555デフォルトの名無しさん
2009/05/11(月) 22:20:51そういやそれなんで起こるんだろうな。
対処法があればいいんだが。
0556デフォルトの名無しさん
2009/05/11(月) 23:30:35_BIND_TO_CURRENT_VCLIBS_VERSIONがらみくらいしか知らんがどうなんだろ
そういやhttp://booster.x0.to/さんのビルドDLLは、埋め込みマニフェストのCRTバージョンが
9.0.21022.8になってるから、SP1のmsvcr90.dllを配置すると死ぬかもね
0557デフォルトの名無しさん
2009/05/12(火) 00:10:17SP1版ランタイムが存在する環境では、バージョンリダイレクトの指定によって、
マニフェストで無印版msvcr90.dllを指定したアプリでも、SP1版ランタイムが読み込まれる。
(たしか無印版CRTをプライベート配置している場合でも)
蛇足だけど、そのことを知ってから自分は
_BIND_TO_CURRENT_VCLIBS_VERSION使うのやめた。
0558デフォルトの名無しさん
2009/05/12(火) 12:52:07scoped_ptrはコピーが禁止されてるから普段はshared_ptrを使ってるんだけど、
コピー禁止+暗黙の型変換でscoped_ptrにできるオブジェクトを作って
それを返してやればいいんじゃね?ってことを思いついた。
今実行できる環境にないからアレだけど……
0559デフォルトの名無しさん
2009/05/12(火) 13:32:27それは auto_ptr の仕事じゃないか?
0560デフォルトの名無しさん
2009/05/12(火) 14:39:24Pythonのwith文やC#でusingを使うように
ファクトリ関数の戻り値をスコープ管理したい時に、
生のポインタを返してscoped_ptrで包んでもいいんだけど、
忘れたら嫌なのでスマートポインタで返したい、というイメージ。
auto_ptrだとコピー可能だし、所有権がどうのとか考えるのがめんどくさい。
あくまで戻り値を返す瞬間、一回だけコピーできるようにしたい。
0561デフォルトの名無しさん
2009/05/12(火) 14:43:35だからまさにそれauto_ptrだって。
0562デフォルトの名無しさん
2009/05/12(火) 15:41:56みたいなかんじ?んなわけねえか?w
0563デフォルトの名無しさん
2009/05/12(火) 18:59:19558, 560だけど、const auto_ptrが駄目な理由が分かんなくなってきた……
どこに問題があるか教えてくれるとありがたいんだけど
0564デフォルトの名無しさん
2009/05/12(火) 19:10:11const auto_ptrはscoped_ptrのようなものだ。少し違うけど。
0565デフォルトの名無しさん
2009/05/12(火) 19:20:20const じゃ破壊的代入できないだろ?constでないメンバ関数呼べないんだから
そういうこと?
0566デフォルトの名無しさん
2009/05/12(火) 19:27:320567558, 560
2009/05/12(火) 19:27:43constで受けることを強制できるわけじゃないのか。
受ける時に気をつけるんだったら別にscoped_ptrでもいいし、
なんだかなあって感じだ
0568558, 560
2009/05/12(火) 19:47:37暗黙の型変換演算子も一応関数なので、
scoped_ptr型を返す関数を定義してやんなきゃいけないが、
戻り値を返す時にコピーが発生するので無理だ。
ざんねん!! わたしの ぼうけんは これで おわってしまった!!
C++0xのunique_ptrとかは右辺値参照とか使ってこれを回避してるのかな?
0569デフォルトの名無しさん
2009/05/12(火) 20:25:21なぜかドキュメントに載ってないが
0570デフォルトの名無しさん
2009/05/13(水) 04:17:00559 の時点でゴールが示されてるのに、なぜかたどり着けない 558 が哀れだ。
0571デフォルトの名無しさん
2009/05/13(水) 08:32:52C++03 の unique_ptr 実装はなかなかうまい方法で右辺値から(のみ)の初期化を実現してる。
それを真似することで、所有権移動禁止だが右辺値初期化だけ可能な scoped_ptr を
作ることはできる…が、それはもはや scoped じゃないという気も
0572デフォルトの名無しさん
2009/05/13(水) 10:37:34std::auto_ptr<int> f();
boost::scoped_ptr<int> p(f());
>>571
「C++03 の unique_ptr 実装」って何? auto_ptr の間違い?
0573デフォルトの名無しさん
2009/05/13(水) 22:43:40ggrks
ttp://home.roadrunner.com/~hinnant/unique_ptr03.html
0574デフォルトの名無しさん
2009/05/14(木) 14:40:30http://groups.google.com/group/boost-list/browse_thread/thread/4edfc6bfb1548094?pli=1
いつのまにかAcceptされてたんだね。これでやっとRange-Base Algorithmsが大手を振って使える
0575デフォルトの名無しさん
2009/05/14(木) 21:40:39そいや Egg ってなんで蹴られたんだっけ? ドキュメント?
0576デフォルトの名無しさん
2009/05/14(木) 22:42:56Range-Base Algorithmsって何だい?
0578デフォルトの名無しさん
2009/05/14(木) 23:13:29誰もレビューしてくれなかったんじゃなかったっけ?
>>576
STLアルゴリズム、std::hoge(c.begin(), c.end(), foo)をboost::hoge(c, foo)と書けるようになるラッパ。
今までBoost Vaultにくすぶっていた部分。
>>576
hoge | foo | barのようなやつのことだな。それはレンジアダプタ。
同類のOvenスレより
http://pc12.2ch.net/test/read.cgi/tech/1231080841/
> ようするに、| 演算子でパイプ(Unix的なあれ)を作ったC++テンプレートライブラリ。
0579デフォルトの名無しさん
2009/05/15(金) 00:21:570580デフォルトの名無しさん
2009/05/15(金) 00:37:16ModernのAndrei Alexandrescuのこれでも読むといい
ttp://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/9b74808d7d869060
今が旬だ
0581デフォルトの名無しさん
2009/05/15(金) 19:49:24亦、今回からビルドログを添付する様に致しました。
ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: Fixing ADL problem in example karma/calc2_ast_vm.cpp
Spirit: Boost.Endian will be used starting Boost V1.41 only
Spirit: Fixed a problem in static lexer generator
[Dynamic_bitset]
Minor comment edit
[Unorderwd]
Cherrypick some unordered container changes from sandbox.
Merge emplace support for sandbox - but without move support.
[Graph_parallel]
Fixed uninitialized variable warning
[Regex]
Add support for named and/or subexpressions with indexes > 99 in conditional format expressions.
[Graph]
Added boost:: qualifications to next, using patch from bug 3013, fixing #3013
Added a new labeled graph adaptor that maps vertices to user-defined key types.
Added missing labeled graph file.
[Pending]
Added a specialization of retag_property_list that will correctly retag
Added a metafunction to determine if a property is no_property.
[Filesystem]
Filesystem: fix #3008, improving namespace discipline to avoid naming conflicts with the C++0x std library.
[Smart_ptr]
Merged in smart_ptr changes from the sandbox/boost0x branch created for
BoostCon '09. This adds move semantics to weak_ptr and intrusive_ptr.
[Exeption]
exception_ptr improvements, documentation update.
0582デフォルトの名無しさん
2009/05/16(土) 21:41:28お疲れ様です!
0583デフォルトの名無しさん
2009/05/16(土) 21:42:54less_than_comparable < rational<IntType>,
equality_comparable < rational<IntType>,
less_than_comparable2 < rational<IntType>, IntType,
equality_comparable2 < rational<IntType>, IntType,
addable < rational<IntType>,
subtractable < rational<IntType>,
multipliable < rational<IntType>,
dividable < rational<IntType>,
addable2 < rational<IntType>, IntType,
subtractable2 < rational<IntType>, IntType,
subtractable2_left < rational<IntType>, IntType,
multipliable2 < rational<IntType>, IntType,
dividable2 < rational<IntType>, IntType,
dividable2_left < rational<IntType>, IntType,
incrementable < rational<IntType>,
decrementable < rational<IntType>
> > > > > > > > > > > > > > > >
ってrationalの定義にあるんだが、これは何??
もしかしてこうするとEmpty Base Optimizationが働くとか!?
0584デフォルトの名無しさん
2009/05/16(土) 21:49:22Boost::operatorで自明な演算子定義を省略してるんだろ
こうしとけば+=があれば+は勝手に実装される
0585デフォルトの名無しさん
2009/05/16(土) 21:57:53どちらかというとmixinに近いことになってる。
0586583
2009/05/16(土) 22:05:31ああ、Boost.Operatorsライブラリはしってるんだけど、
このテンプレートにテンプレートを重ねる変態的記法に驚いたのだ。
で、「Empty Base Optimizationが働くとか!?」と思った。
0587583
2009/05/16(土) 22:06:53それを使わず、テンプレートにテンプレートを食わせてるじゃん。
0588デフォルトの名無しさん
2009/05/16(土) 22:27:44ドキュメントにかいてあるぞ
0589583
2009/05/16(土) 22:30:46やっぱEmpty Base Optimizationね。
0590デフォルトの名無しさん
2009/05/16(土) 22:39:29デバッグできる自信ない・・・
0591デフォルトの名無しさん
2009/05/16(土) 22:50:33boostの実装と微妙にかぶっちゃうところがあるんですけど
それってライセンス違反になるんでしょうかね?
spiritとかlambdaとかのアイディアの根幹に関わる部分じゃなく
全然一般的な実装なんですけど。
例えばユークリッドの互除法とか。
0592デフォルトの名無しさん
2009/05/16(土) 23:39:11はい→ライセンス見ろ。改変おk、ソースコードからクレジットを外すなとかその程度でライセンスはクリアだ。
いいえ→結果的に同じものでも別々に作れば違う著作物。それぞれに著作権がある。堂々としろ。
0593591
2009/05/16(土) 23:49:16ありがとうございます。別にぱくったわけではなく、結果的に若干(気にしすぎなのかもしれませんが)似てしまいました。
あと、まだはっきりとライセンスを熟読したこと無いのですが
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
これは短いですが、全文ですよね。
熟読してきます。
0594デフォルトの名無しさん
2009/05/16(土) 23:58:48自分も作ってみたら似てしまったというのなら、
GNUの中の人的にはアウトだな。
パクリ元がNDA結んだ仕事相手じゃなくてboostでよかったな。
0595591
2009/05/17(日) 00:00:26二段落目
The copyright notices in the 〜
ですね。
要するに
…………………………
1.流用対象のライブラリの著作権表記
2.Boost Software License の全文
流用して作ったソースコードを開示する場合、これらを全て記載すること。
ただし実行ファイルの形ならば無制限。
…………………………
ってことですね。
ありがとうございました。
0596デフォルトの名無しさん
2009/05/17(日) 00:27:29例えばBoost.Functionのあるソースを流用して自作ライブラリMy_Libを作り、
My_LibのソースコードをBSDライセンスで公開したい場合はどうすればいいってことになるの?
1.My_Libのソースコードに
Boost.Functionの著作権表記と
Boost Software Licenseの全文を記載する。
2.My_Libのソースコードに
BSDライセンスの全文を記載する。
3.「2.」のBSDライセンスの文言にはBoost.Functionの著作権表記は関わらない。
かい?でもこれだとMy_Libを流用する第三者がMy_LibのBSDライセンスの通りに作ると
Boost.Functionの著作権表記が引き継がれなくなっちゃうよね?
だれか分かるお方、お知恵をお貸しくだされ
0597596
2009/05/17(日) 10:03:01Boost.Functionの著作権表示を一緒に表示させればいいのか。
0598デフォルトの名無しさん
2009/05/23(土) 21:43:14ttp://booster.x0.to/
以下更新内容の一部
[Fusion]
Fusion: added explicit disambiguation for fusion::at
[Exeption]
support for exception_ptr and nesting in boost::diagnostic_information
[Dynamic_bitset]
Merge dynamic bitset from release.
[Lambda]
Avoid using namespace std; to prevent ambiguity between boost and std components. Fixes #3025
[Algorithm]
Qualify minmax with boost:: to avoid ambiguity with std::minmax. Fixes #3023
[Filesystem]
Fix Filesystem #2925, copy_file atomiticity
[Serialization]
change number of bits from unsigned int to std::size_t
[Spirit]
Spirit: Added thread safety precaution
[Regex]
Qualify lower_bound with std:: to allow regex to work with Sun CC
[Signals2]
Added ability to create a shared_connection_block which is initially not blocking.
[Graph]
Added new Graphviz parser (recursive descent); does not support subgraphs in edges yet
Fixing bug in labeled graph.
[Mpl]
Fixed a bogus preprocessor directive
[Wave]
Wave: fixed race condition
亦、libs_for_build_boost.rarもICUを4.2d04から4.2に更新しました。
0599デフォルトの名無しさん
2009/05/24(日) 11:29:42奥がふかいのかなあ
0600デフォルトの名無しさん
2009/05/26(火) 18:16:28・boost1.37.0のuBLAS
http://www.page.sannet.ne.jp/d_takahashi/boost/ublas/index.html#SEC15
の連立方程式をとくサンプルプログラムをコピペして動かしたところ
lu_factorize(A,pm);
で、例外が投げられます。
lu.hppの153行目で引っかかっているようです。
#if BOOST_UBLAS_TYPE_CHECK
swap_rows (pm, cm);
BOOST_UBLAS_CHECK (singular != 0 ||
detail::expression_type_check (prod (triangular_adaptor<matrix_type, unit_lower> (m),
triangular_adaptor<matrix_type, upper> (m)), cm), internal_logic ());
#endif
なぜだかわかりますか?
0601デフォルトの名無しさん
2009/05/26(火) 18:34:11・boost1.37.0のuBLAS
で試してみたけど、コンパイル通ったよ。
[]演算子に関してぶーたら言われたから初期化してる場所は書き換えたけど。
0602デフォルトの名無しさん
2009/05/26(火) 18:37:200603デフォルトの名無しさん
2009/05/26(火) 18:44:13とか並んでる場所を全部
A(0,0) = 1.0;
みたいに書き換えただけなんだけど。
ちなみにublas使ったこと無いからこれが正しい書式なのかは知らない。
というか、こっちだとそこ書き換えないとまずコンパイルされなかったよ。
0604デフォルトの名無しさん
2009/05/26(火) 19:17:57ご対応ありがとうございます。
>>603の処置はやっております。
関係ないと思って省いてしまいました。
すみません。
確かに、空のプロジェクトで作り直したところ
今度は正常に動作しました。
問題のある方は、既存のコードに埋め込んだのですが
なぜ、同じコードなのにこちらではNGなのか、まだわかっていません。
一応、FPまわりのコンパイルオプションも確認したのですが、同じでした。。
どうやら、cm(2,2)が双方で違う値を返しているみたいですが、なぞです。
0605デフォルトの名無しさん
2009/05/27(水) 04:38:090606デフォルトの名無しさん
2009/05/28(木) 21:06:02があるとチェックに失敗するらしい。
DirectXのCreateDeviceとかがそうなんだと。ググったら出てきた。
0607デフォルトの名無しさん
2009/05/30(土) 18:47:31ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: added tokenize_and_parse functions taking multiple attributes
Spirit: added #pragma once to headers in include directory
[Wave]
Wave: Incorporated the changes from latest version of the flex_string class (fixes #2946)
[Graph]
Reduced graph sizes to decrease test run time; fixes #2308
Changed GraphML writer to escape strings; added test of this; fixes #2567
Added graph properties to adjacency_matrix; fixed constructors to match documentation; fixes #875
[Format]
Fix order of initialization warning. Fixes #1699
[Type_traits]
Test for: enum UIntEnum { value = UINT_MAX } is promoted to int
[Lambda]
Avoid ambiguities between boost::lambda::bind and std::bind with VC10. Fixes #3075
[Multi_index]
fixed #3076
[Graph_parallel]
Added "edges_are_sorted" to CSR test case
[Signals2]
Added a little test of a signal taking a reference argument.
Use BOOST_NO_VARIADIC_TEMPLATES instead of BOOST_HAS_VARIADIC_TMPL, etc.
[Proto]
saner default evaluation behavior for member (object|function) pointers
[Math]
Added a couple of static assertions to prevent misuse.
[Thread]
Attempts to improve the boost::thread move semantics; separated tests to give clearer ID; incorporated patch to fix issue #2062
Changed thread_specific_ptr to use a map for faster lookup, and erase empty nodes
0608デフォルトの名無しさん
2009/05/31(日) 10:58:06Win32API で言う所の GetModuleFileName(NULL) ですけど、
OS を問わず使えるようなのがあればな、と。
0609デフォルトの名無しさん
2009/05/31(日) 11:12:430610デフォルトの名無しさん
2009/05/31(日) 12:07:14std::cout << argv[0] << std::endl;
return 0;
}
0611デフォルトの名無しさん
2009/05/31(日) 13:27:41遅くなりすみません。
まさにそれでした!!ありがとうございます。
boostとDirectXでFP精度を合わせるようにして
対応します。
0612デフォルトの名無しさん
2009/06/01(月) 10:54:37spirit使ってるプログラムをビルドすると、
Warning: This header is deprecated. Please use: boost/spirit/include/〜
…というwarningがいっぱい出るんだ。
どこかに変更点まとめてるところないかな。
0613デフォルトの名無しさん
2009/06/01(月) 12:39:43ちょっと前にv1からv2になったよ
v2用のドキュメントがどっかにあったはず
0614518
2009/06/01(月) 20:57:05#include <boost/spirit/core.hpp>
が
#include <boost/spirit/include/classic_core.hpp>
みたいに変更になった。
・・・ような記憶がある。
試してごらん。
0615デフォルトの名無しさん
2009/06/02(火) 04:44:33書こうと思っているのですが、boost::gilを使うと簡単にかけますか?
0616デフォルトの名無しさん
2009/06/02(火) 05:02:350617デフォルトの名無しさん
2009/06/02(火) 09:33:12情報�d
新しくなってたのね。
0618デフォルトの名無しさん
2009/06/02(火) 12:43:16GDI+を使ったほうがいい
0619デフォルトの名無しさん
2009/06/02(火) 20:10:34保存/復元されないようなんだが、これってどうにかならないだろうか。
0620デフォルトの名無しさん
2009/06/05(金) 23:34:25ttp://booster.x0.to/
以下更新内容の一部
[Detail]
detail/utf8_codecvt_facet.cpp: apply patch from ticket #2986 to quiet warnings when wchar_t is 16-bits.
[Program_options]
Qualify usage of 'exeception', now that boost also has such name
[Signals2]
Fixed bug in test.
Fixing some reference-to-reference problems with some compilers.
Added test for and fixed compile errors in signal::set_combiner()
and combiner() methods. Refs #3125.
[Random]
Fix the distribution of uniform_int.
[Property_map]
Added shared_array_property_map
[Graph]
Changed new-style named parameter code for BGL to use shared_array_property_map, greatly simplifying interface
Re-added the exterior property labeling framework under a different name
[Date_time]
Fixed a possible reading overflow in the var_string_to_int function.
The std::tm instances are zero initialized before usage in to_tm functions. Related to #1859.
[Spirit]
build_tree now has less parameters and limit lines to 80 chars.
Added a param to add() taking a rules object.
Spirit: fixed problem in lexertl library
[Expressive]
prefer mpl::if_c over mpl::if_ for better compile times
[Fusion]
reduce number of template instantiations
[Lambda]
Add result_type to lambda::ret. Fixes #1222
0621デフォルトの名無しさん
2009/06/06(土) 02:18:210622デフォルトの名無しさん
2009/06/06(土) 02:48:390623デフォルトの名無しさん
2009/06/06(土) 03:14:270624デフォルトの名無しさん
2009/06/06(土) 03:34:300625デフォルトの名無しさん
2009/06/06(土) 13:37:11フォン・ブラウン乙。
0626デフォルトの名無しさん
2009/06/06(土) 23:56:41ptr_vector は
ptr_vector<A> v;
v.push_back(new A());
A a = v.front();
こういう使い方ができるけど、
vector_ptr<A> v;
v.push_back(A());
A* a = v.front();
こういう使い方をしたい。
内部構造としては std::vector と同じように連続的に持ってほしい。
無いと思ってコンテナ作成してるんだが、無いよな?
0627デフォルトの名無しさん
2009/06/07(日) 00:36:44そういうのがつまりイテレータの仕事だし。
vector<A>::iterator i = v.begin();
0628デフォルトの名無しさん
2009/06/07(日) 00:45:46だとまずいのか?
0629デフォルトの名無しさん
2009/06/07(日) 00:46:29ありがと。自作するわ。
BOOST_FOREACH でイテレータ使えるようにならないかな。
BOOST_FOREACH ( std::vector<A>::iterator it, v )
{
...
}
こんなかんじで。
0630デフォルトの名無しさん
2009/06/07(日) 00:53:31std::vector<A*> を使って実装したソースがあって、
あんまりコードを変えたくないんだ。
・・・と思ったがそんなに手間じゃない気もしてきたw
0631デフォルトの名無しさん
2009/06/07(日) 00:54:26BOOST_FOREACHを参照で受けるとかじゃだめなのか?
イテレータじゃないとだめ?
0632デフォルトの名無しさん
2009/06/07(日) 00:55:530633デフォルトの名無しさん
2009/06/07(日) 01:01:05なんだかこれで解決できるような気がしてきた。
既存のコード読んでやってみる。
ありがと。
0634デフォルトの名無しさん
2009/06/07(日) 01:02:41まだ lambda 使ったこと無いんだがそんなこともできるのか!
調べてくる
0635デフォルトの名無しさん
2009/06/07(日) 01:04:14ごめん、勘違い
0636デフォルトの名無しさん
2009/06/07(日) 14:45:37http://124.45.27.25:12086/stream.mp3.m3u
IRCNET #CRYBUTSU
0637デフォルトの名無しさん
2009/06/07(日) 17:35:000638デフォルトの名無しさん
2009/06/09(火) 12:38:54ttp://www.page.sannet.ne.jp/d_takahashi/boost/ublas/index.html#SEC17
をコンパイルしたのですが、
以下のようなエラーが出ます。
test.cpp:33
は上記ページの lu_factorize(A,pm); になります。
/usr/include/boost/numeric/ublas/lu.hpp: In function
‘typename M::size_type boost::numeric::ublas::lu_factorize(M&, PM&)
[with M = main()::dmatrix, PM = boost::numeric::ublas::permutation_matrix<unsigned int, boost::numeric::ublas::unbounded_array<unsigned int, std::allocator<unsigned int> > >]’:
test.cpp:33: instantiated from here
/usr/include/boost/numeric/ublas/lu.hpp:137: error: no matching function for call to
‘project(boost::numeric::ublas::matrix_column<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::basic_range<unsigned int, int>)’
何かboostの設定が間違っているのでしょうか?
0639デフォルトの名無しさん
2009/06/09(火) 14:31:59>g++ test.cpp -Wall
>ls
a.out test.cpp
>gcc --ver
gcc (GCC) 3.4.6 以下略
>./a.out
A = [3以下略
問題なし
[別環境]
gcc 4.1.2 + BOOST_VERSION 103301
>scp ほげほげ:./test/test.cpp .
ほげほげ's password:(はげはげ)
>ls
test.cpp
>g++ test.cpp
/usr/include/以下略。同じエラー
>gcc --ver
gcc (GCC) 4.1.2 以下略
[さらに別環境]
VC2008EE + BOOST_VERSION 103700
<memory>で警告食らったけどとりあえずコンパイル成功して動いた
boostのバージョン依存の問題かもしれません。
ひょっとしてもしかしたら、gccのバージョン依存の問題かもしれません。
0640デフォルトの名無しさん
2009/06/09(火) 19:55:03簡単なものなら正規表現で十分だから、俺にとっては永遠に出番のなさそうなライブラリーなんだけどなぁー
0641デフォルトの名無しさん
2009/06/09(火) 20:13:25ちょっと複雑な設定ファイルの文法を簡単に定義できるのが便利。
bison/flexといった外部ツールを使わずにC++ですべて完結するのが良い。
0642デフォルトの名無しさん
2009/06/09(火) 20:16:10それでいて柔軟性もあるし
0643デフォルトの名無しさん
2009/06/09(火) 20:34:080644デフォルトの名無しさん
2009/06/09(火) 20:38:28まずは使ってみて便利さとコンパイル時間を天秤にかければ良いだろうな。
0645デフォルトの名無しさん
2009/06/09(火) 21:33:44まぁ一度コンパイルしてしまえば(文法規則が変わらない限り)関係ない話だし
0646デフォルトの名無しさん
2009/06/09(火) 21:36:27>>643
Boost.Spiritは、ぜひとも一度使ってみて、
Boost.Lambdaと同様のあまりの変態さにおののいてみてください。
すげーよまじで。
0647デフォルトの名無しさん
2009/06/10(水) 01:21:08spirit で何度か C 風文法を解析するプログラムを作ったのですが
パース時に後戻りが多いような気がするのですが。
0648デフォルトの名無しさん
2009/06/10(水) 03:36:23実際に同じ文法を定義してベンチマーク取ったわけではないけど、spiritは
再帰下降パーサだからバックトラックが遅いんだろうな。
効率が気になる程に長いファイルをパースするなら、やっぱりLALRパーサの
bison(yacc)を使った方が良いと思う。
0649デフォルトの名無しさん
2009/06/10(水) 09:00:32ちょっとした文法でも1GB普通に超える
0650デフォルトの名無しさん
2009/06/12(金) 19:34:55ttp://booster.x0.to/
以下更新内容の一部
[Graph]
Reverted old version of CSR graph for compatibility, with a #define to switch between the modes; cleaned up interface of new CSR graph; fixed tests and docs accordingly
Changed to shared_array_property_map
Sped up out_degree() and related functions for new interface
[Python]
Allow duplicate enum values. Fixes #2744
[Example]
examples of external main usage
typo
[Regex]
Simplify and fix PP logic.
[Impl,Exeption,Mpl,Detail,Smart_ptr]
avoid C style casts
[Numeric]
Fix a couple of typos in the ublas documentation. Fixes #3056, #3057.
[Variant]
Support BOOST_NO_TYPEID and BOOST_NO_IOSTREAM in Boost.Variant. Fixes #3051.
[Spirit]
Spirit: added placeholders for lexer semantic actions
Spirit: Lot of work done in Lexer, fixed bugs, added support functions, refactored code
[Proto]
virtual_members get proto_arity_c
[Serialization]
Update include from boost/pfto.hpp to boost/serialization/pfto.hpp. Refs #3062.
[Signals2]
Added a copy of Thorsten Ottosen's auto_buffer into signals2/detail
and used it to replace stack_allocator/stack_vector (which worked
on popular compilers but were not strictly standards conforming).
0651デフォルトの名無しさん
2009/06/12(金) 20:02:43{
...
}
でコンパイルエラーが出るんだが、こういうのは無理?
e:\boost\boost\assign\list_of.hpp(163) : error C2661: 'boost::foreach_detail_::rvalue_probe<T>::rvalue_probe' : 2 個の引数を伴うオーバーロードされた関数はありません。
0652デフォルトの名無しさん
2009/06/12(金) 21:05:22std::cout << &fw1.get() << "\n";
boost::flyweight<std::string, boost::flyweights::set_factory<std::less<std::string> > > fw2("1");
std::cout << &fw2.get() << "\n"
以下の4つソースは全て同じ結果になることを期待していたのですが、同じ結果になりません。
(1)
boost::flyweight<std::string> fw1("1");
std::cout << &fw1.get() << "\n";
(2)
boost::flyweight<std::string, boost::flyweights::hashed_factory<> > fw2("1");
std::cout << &fw2.get() << "\n";
(3)
boost::flyweight<std::string, boost::flyweights::hashed_factory<boost::hash<boost::mpl::_2>, std::equal_to<boost::mpl::_2> > > fw3("1");
std::cout << &fw3.get() << "\n";
(4)
boost::flyweight<std::string, boost::flyweights::hashed_factory<boost::hash<std::string>, std::equal_to<std::string> > > fw4("1");
std::cout << &fw4.get() << "\n";
(1)と(2)は同じ結果になりますが、(3)と(4)が(1)や(2)と同じ結果にならないのは、どうしてでしょうか?
(1)と(2)に関してここにも書いてるので、当然な結果・・・
http://www.boost.org/doc/libs/1_38_0/libs/flyweight/doc/tutorial/configuration.html#hashed_factory
0653652
2009/06/12(金) 21:06:41以下の4つソースは全て同じ結果になることを期待していたのですが、同じ結果になりません。
(1)
boost::flyweight<std::string> fw1("1");
std::cout << &fw1.get() << "\n";
(2)
boost::flyweight<std::string, boost::flyweights::hashed_factory<> > fw2("1");
std::cout << &fw2.get() << "\n";
(3)
boost::flyweight<std::string, boost::flyweights::hashed_factory<boost::hash<boost::mpl::_2>, std::equal_to<boost::mpl::_2> > > fw3("1");
std::cout << &fw3.get() << "\n";
(4)
boost::flyweight<std::string, boost::flyweights::hashed_factory<boost::hash<std::string>, std::equal_to<std::string> > > fw4("1");
std::cout << &fw4.get() << "\n";
(1)と(2)は同じ結果になりますが、(3)と(4)が(1)や(2)と同じ結果にならないのは、どうしてでしょうか?
(1)と(2)に関してここにも書いてるので、当然な結果・・・
http://www.boost.org/doc/libs/1_38_0/libs/flyweight/doc/tutorial/configuration.html#hashed_factory
0654デフォルトの名無しさん
2009/06/14(日) 13:13:18適当な引数として
boost::type<t>* = 0
のように使っているようだが、意図がよく分からん。
0655デフォルトの名無しさん
2009/06/14(日) 15:17:09C++は関数テンプレートの部分的特殊化ができないが、オーバーロードを使って同じような事ができる。
boost::type<Hoge>とかboost::type<Fuga>とか引数を変えてオーバーロードし、
Function(x, boost::type<Hoge>());みたいな感じで呼び出す。
boost::type<Hoge>はコンパイラの最適化で消えるため、実行時のコスト0で実現できる。
0656654
2009/06/14(日) 16:06:02ふーむ。。。
template <typename TIPE>
void Function(int x){〜};
とでも定義しておいて
Function<TYPE>(x);
と呼び出すんじゃだめなのかい?
0657デフォルトの名無しさん
2009/06/14(日) 18:02:25>>655 はこういうことだと思う
template<class T>
void f(T, ...)
{
std::cout << "T";
}
template<class T>
void f(T*, boost::type<T>)
{
std::cout << "T*";
}
int main()
{
double d = 0;
int i = 0;
f(d);
f(&i, boost::type<int>());
f(&d, boost::type<double>());
}
0658656
2009/06/14(日) 21:10:20悩んだ末、何となく意味が分かった気がする。
部分特殊化で
template<class TYPE *>
void f<TYPE *>(TYPE *, ...)
としたくても出来ないから、
普通の型用とポインタ型用の2つを多重定義するオーバーロードで
似たようなことをしている訳か。
二人ともありがとう!
0659655
2009/06/14(日) 22:31:03言いたかったのは、
Modern C++ Design 30ページより
> ・クラス・テンプレートのメンバ関数については完全な特殊化ができるものの、メンバ関数の部分的な特殊化はできません。
> ・ネームスペース・レベルにおける関数(非メンバ関数)の部分的な特殊化はできません。
> ネームスペースレベルにおけるテンプレート関数に対して許されている機能のうち、部分的な特殊化に最も近いものはオーバーロードです。
> つまり実用上は、関数パラメータに対してのみ(戻り値や内部的に使用される型は適用できません)細かい粒度の特殊化能力を与えることができるわけです。例えば:
> template <class T, class U> T Fun(U obj);// 一次テンプレート
> template <class U> void Fun<void, U>(U obj);// 部分的な特殊化(不正)
> template <class T> T Fun(Windows obj);// オーバーロード(正当)
そして
template <class T> void Function(T x, Hoge/*ダミー*/);
ではなく
template <class T> void Function(T x, boost::type<Hoge>/*ダミー*/);
とすることによって実行速度に影響を与えずオーバーロードを解決できる(boost::type<T>のサイズが0のため)。
0660655
2009/06/14(日) 22:33:31template <class T> void Function(T x, boost::type<Hoge>/*ダミー*/);
template <class T> void Function(T x, boost::type<Fuga>/*ダミー*/);
っていうこと。
0662デフォルトの名無しさん
2009/06/15(月) 21:47:30shared_ptrやscoped_ptrには下記のオペレータがあります。
T& operator*() const;
T* operator->() const;
実装から考えれば全くその通りだと思います。
でも生ポインタを抽象化するという役割を考えると、
下記の方が理にかなっているように思えてなりません。
const T& operator*() const;
const T* operator->() const;
T& operator*();
T* operator->();
後者がNGで、前者でなければならない理由とかがあるのでしょうか?
0663デフォルトの名無しさん
2009/06/15(月) 21:50:020664デフォルトの名無しさん
2009/06/15(月) 22:15:29なるほど!
確かにポインタ自身のconstを考えると納得です。
すっきりしました。
ありがとうございました。
0665デフォルトの名無しさん
2009/06/16(火) 15:07:430666デフォルトの名無しさん
2009/06/20(土) 22:21:29ttp://booster.x0.to/
以下更新内容の一部
[Graph]
Changed function types to enums and removed include of iostream; refs #3134
Added constructors from multi-pass unsorted, filtered edge lists; refs #3134
Added extra named parameters for McGregor maximal common subgraph algorithm; contributed by Michael Hansen; refs #3134
[Functional]
Try to avoid float to int warning when a float function doesn't exist. Refs #3171.
[Spirit]
Spirit: Added operator safe_bool to lexer token type
Spirit: Simplified multi_pass iterator
Spirit: Fixing bogus assertions
Fixup to add() again for Hartmut.
Spirit: Made dummy token constructor explicit
[Random]
Supress warnings from narrowing conversions.
[Fusion]
introduces unfused adapter
fix trac issue #1608
[Proto]
accomodate fusion:vector0 interface change
[Graph_parallel]
Fixed bugs in test case; refs #3134
Fixed warnings; refs #3134
[Python]
Use appropriate default values for global and local dicts.
[Impl]
Fixed support for CRT hooks, it was not working properly with catch_system_errors=no
0667デフォルトの名無しさん
2009/06/20(土) 22:38:490668デフォルトの名無しさん
2009/06/27(土) 05:07:54OSに依存することやってるわけでもなさそうなのに何故なんだぜ?
0669デフォルトの名無しさん
2009/06/27(土) 10:26:240670デフォルトの名無しさん
2009/06/27(土) 19:08:43テンプレートやインライン関数でないものを含んでいるんじゃないの
0671デフォルトの名無しさん
2009/06/27(土) 20:44:52シリアライズの方が手っ取り早いし、ちゃんとやるならspirit使うし
0672デフォルトの名無しさん
2009/06/27(土) 21:53:00出来が良くない気がする。
まあライセンスが緩いBoostだから、いっぱいあるのは俺は歓迎だけどさ。
0673progress_display
2009/06/27(土) 22:16:050674program_options
2009/06/27(土) 22:36:10お前にだけは言われたくない
#include <stdio.h>
#include <stdlib.h>
struct seiseki {
char name[20];
int order[6];
} seito[] =
{{"太郎",80,90,75,70,70}, {"次郎",70,85,80,80,85}, {"三郎",75,95,65,90,95}, {"四郎",65,70,80,75,80},
{"春子",90,100,85,90,85},{"夏子",100,95,80,85,80}, {"秋子",60,75,90,70,85}, {"冬子",85,80,85,90,95}};
int kamoku;
int cmp(const struct seiseki *a, const struct seiseki *b) {
int t = a->order[kamoku] - b->order[kamoku];
return (t==0)?0:(t>0?1:-1);
}
int main() {
int i, array_size = sizeof(seito)/sizeof(*seito);
char s_kamoku[6][10] = {"国語","算数","理科","社会","英語","合計"};
for(i=0; i<array_size; i++) {
seito[i].order[5] = seito[i].order[0] + seito[i].order[1] +
seito[i].order[2] + seito[i].order[3] + seito[i].order[4];
printf("%s,%3d,%3d,%3d,%3d,%3d,%4d\n", seito[i].name, seito[i].order[0], seito[i].order[1],
seito[i].order[2], seito[i].order[3], seito[i].order[4], seito[i].order[5]);
}
for(kamoku=5; kamoku>=0; kamoku--) {
printf("\n%sの点数で並び替え\n", s_kamoku[kamoku]);
qsort(seito, array_size, sizeof(*seito), (int (*)(const void*, const void*))cmp );
for(i=0; i<array_size; i++) {
printf("%s,%3d,%3d,%3d,%3d,%3d,%4d\n", seito[i].name, seito[i].order[0], seito[i].order[1],
seito[i].order[2], seito[i].order[3], seito[i].order[4], seito[i].order[5]);
}
} return 0;
}
0677デフォルトの名無しさん
2009/06/28(日) 01:42:340678shared_ptr
2009/06/28(日) 08:25:16本当使えないなモマイラは
0680spirit
2009/06/28(日) 15:46:580681デフォルトの名無しさん
2009/06/28(日) 16:10:570682noncopyable
2009/06/28(日) 17:27:03おまえら、俺様の前に跪けよな。
0683xpressive
2009/06/28(日) 20:32:190684デフォルトの名無しさん
2009/06/28(日) 20:38:010685デフォルトの名無しさん
2009/06/28(日) 20:41:15俺は
「Boost.Regexは動的正規表現だから、
ユーザーに正規表現文字列を入力してもらって
動的な検索を提供できるのでは」
と思っているのだが。
そんな機会が無くて試したこと無いけど。
Boost.Xpressiveもいる子
0686デフォルトの名無しさん
2009/06/28(日) 20:51:010687デフォルトの名無しさん
2009/06/28(日) 20:54:31マジか!
じゃあもうBoost.Regexは…
…いや、なんでもない。
0688デフォルトの名無しさん
2009/06/28(日) 21:04:410689parameter
2009/06/28(日) 21:17:070690boost::tuple
2009/06/28(日) 21:28:290691687
2009/06/28(日) 21:29:53歴史的な理由?
つまりある程度枯れているから信頼性があるとか?
0692デフォルトの名無しさん
2009/06/28(日) 23:23:05今まで標準に入ってないのが不思議なくらい
0693boost::tuple
2009/06/29(月) 00:20:38そうですよね。よかった!
0694compressed_pair
2009/06/29(月) 01:04:300695boost::compose
2009/06/29(月) 01:24:450696boost::tuple
2009/06/29(月) 01:41:03非標準ざまあwww
0697boost::fusion
2009/06/29(月) 04:41:260698デフォルトの名無しさん
2009/06/29(月) 06:16:49そうなん?
C++0xの標準の言語仕様で出来るようになるって事?
まあ別にそうだとしても
どうせC++0xがまともに動くようになるまでは
慣れたC++でコーディングすることになるんだろうな。
0699698
2009/06/29(月) 06:18:20失礼したぜ。
0700デフォルトの名無しさん
2009/06/29(月) 06:31:430701デフォルトの名無しさん
2009/06/29(月) 14:50:290702デフォルトの名無しさん
2009/06/29(月) 21:01:59スレッドまわりとか結構変わったのか?
0703デフォルトの名無しさん
2009/06/29(月) 21:52:11そうなのか紛らわしいなあ。
他にもboost発祥で他にも紛らわしい変更ってあるの?
0704boost::tuple
2009/06/29(月) 23:09:110705scoped_ptr
2009/06/30(火) 01:14:11落ち込みすぎw
まあ、google推奨のスマートポインタであるオレ様なら将来も安泰だぜ!
shared_ptr(笑)なんざ、オレ様のおこぼれにでもあずかってろな!
ttp://www.textdrop.net/google-styleguide-ja/cppguide.xml#%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF
0706unique_ptr
2009/06/30(火) 05:32:410708vector<bool>
2009/06/30(火) 14:36:28まぁ待てよ。
いっぺん標準に入っちまったら deprecated だろうがなんだろうが、消えるこたねえんだよ。
静かに現行プログラムの面倒見ようぜ。
0709boost::mpi
2009/06/30(火) 14:42:35久々にboost使おうかと思ったら萎えた。
やはり自分でビルドすべきなのか。
0710デフォルトの名無しさん
2009/06/30(火) 19:06:38>>666
0711デフォルトの名無しさん
2009/06/30(火) 19:07:15画像ファイルを読み込んだ2次元配列を作るときに32x32ピクセルごとに
メモリが並らぶようなメモリレイアウトにできないでしょうか?
0712デフォルトの名無しさん
2009/06/30(火) 20:40:13結局自分でビルドしてしまった。
そのサイトに置いてあるバイナリは信用できるの?
sourceforgeとかに置いてもらえると良いのだが。
0713デフォルトの名無しさん
2009/06/30(火) 21:12:22>>666のURLでスレ内検索してみれ。
まぁ少し前にビルドが高速化されたから自分でやってもそんなに手間じゃないしな。
0714デフォルトの名無しさん
2009/06/30(火) 21:19:140715デフォルトの名無しさん
2009/06/30(火) 22:34:540716デフォルトの名無しさん
2009/07/04(土) 21:28:33ttp://booster.x0.to/
以下更新内容の一部
[Functional]
Move includes to the header which they're used in.
Get <boost/functional/hash/extensions.hpp> to work.
[Graph]
Added test case for McGregor algorithm from Michael; refs #3134
[Spirit]
Spirit: adjusted for latest API change sin lexertl code
Spirit repository: Fixed include path
Made chr() public for use by parsertl.
[Wave]
Wave: adjustments for recent multi_pass changes
[Interprocess]
Boost 1.40 changes
[Asio]
Fix bug in hash resize. Ref #3095.
Fix custom memory allocation for timers. Ref #3107.
[Ptr_container]
added support for statefull clone_allocators
亦、libs_for_build_boost.rarもICUを4.2から4.2.1に更新しました。
0717デフォルトの名無しさん
2009/07/07(火) 18:54:18poolについて質問です。
boost::poolで計測してみた所、C++標準のnew delete よりかなり速いことがわかったんですが、
boost::object_poolで計測した所、ループが大きくなるにつれてどんどん遅くなり、
標準より100倍以上も時間がかかってしまいました。
記述的にobject_poolを使いたいなぁと思ってたんですが、
そもそもpoolとobject_poolとは何が異なるんでしょうか?
0718デフォルトの名無しさん
2009/07/08(水) 05:37:390719デフォルトの名無しさん
2009/07/09(木) 19:55:45乙!"
0720デフォルトの名無しさん
2009/07/10(金) 19:59:14ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: fixed broken BOOST_SPIRIT_ASSERT_MATCH
Spirit: Added support for accessing the token value from a lexer semantic action
Spirit: More work on lexer placeholder _value
Spirit: Minor fix to simple_trace debug handler
Spirit: added missing using directive for _pass
[Graph]
Added add_edges() function with edge properties; refs #3134
Made add_vertex and add_vertices work with new CSR interface; fixed add_edges stuff to work with edge properties; refs #3134
Removed x87 floating point hack as its in relax() now
[Graph_parallel]
switched to tagged ctor
[Serialization]
Fixed misc bugs
Fix invalid pointer in unregister cast in void_cast.cpp - Again !!
[Ptr_container]
initial support for const elements in containers
0721デフォルトの名無しさん
2009/07/10(金) 20:27:25おつ
このさいインストーラーつけて配布してアフィリエイトしたらどうか?
インストーラあったらboostが簡単に導入できるってなり雑誌とかでも紹介され集客あるとおもう。
0722デフォルトの名無しさん
2009/07/10(金) 21:09:32デバック無しで軽量化とか、DLLだけとか選択できた方が良いな できたらやり方書き込むよ
・・・\Local Settings\Application Data\Microsoft\VisualStudio\9.0\VCComponents.dat
0723デフォルトの名無しさん
2009/07/18(土) 17:17:55boostで書いてた部分の書き直しが・・・
0724653
2009/07/18(土) 18:13:03それよりもconceptに対応したときの方が既存のfunction_requiresとの混在の混乱が怖い気がする。
0726デフォルトの名無しさん
2009/07/18(土) 18:23:300727デフォルトの名無しさん
2009/07/18(土) 18:51:02C++0xスレを見る限り、コンセプトはC++0xに入らない方向で話が進んでいるみたいだよ。
0728デフォルトの名無しさん
2009/07/18(土) 19:20:04ttp://booster.x0.to/
以下更新内容の一部
Spirit: massive speedup fix for karma real generators (for built in floating point types)
Spirit: adding flush_multi_pass to the repository
Spirit: adding flush_multi_pass to the repository
Spirit: fixing bogus include statement
Spirit: integrated multi_pass iterator with expectation points and error handling
[Serialization]
Serialization: added missing header file #include
Simplification for pointer serialization
Correct error in exported pointers for polymorphic archives
[Asio]
Spirit: adding flush_multi_pass to the repository
[Python]
boost_python_unsigned_converter_fix_no_ctypes.patch by Anderson Lizardo
Exclude default_toolset.py
[Mpl]
Fix default implementation of has_push_back and has_push_front
[Regex]
Added initial support for recursive expressions.
Updated docs and tests accordingly.
[Graph]
Integrated new implementation of howard's cycle ratio algorithm. It's an
optimization and cleanup from the older version. Note that this breaks
source compatability in one instance.
0729デフォルトの名無しさん
2009/07/18(土) 20:42:49boostの部分はそのままでいいんじゃない?
わざわざ書き直さなくてもねぇ。
>>728
乙!
0730デフォルトの名無しさん
2009/07/18(土) 20:51:10あと、using宣言してbindやrefを使っているところをTR1にしたら
ADLでboostのが見付かって曖昧だというエラーになることもあった。
そういうわけで、結局boostに戻りつつある。
でも、標準に入るのは否定しないよ。この調子でthread/filesystem/asioも是非。
0731デフォルトの名無しさん
2009/07/18(土) 21:23:39thread/filesystem/asioは皆ハードル高そうじゃないか?
でももし標準に入れば便利すぎて感動。
0732デフォルトの名無しさん
2009/07/18(土) 21:38:48|← 標準 | boostの中の人 display ユーザー
. ̄.|| ̄ ̄ ┗(^o^ )┳(^o^ )┳(^o^ )┛≡=-
|| ┏┗ ┗┗ ┏┗ ≡=-
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0733デフォルトの名無しさん
2009/07/18(土) 22:53:35|← 標準 | boostの中の人 pair ユーザー
. ̄.|| ̄ ̄ ┗(^o^ )┳(^o^ )┳(^o^ )┛≡=-
|| ┏┗ ┗┗ ┏┗ ≡=-
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0734デフォルトの名無しさん
2009/07/18(土) 23:05:28気付いた時には既に標準に…gkbr
0735デフォルトの名無しさん
2009/07/18(土) 23:11:32あれ?標準にthreadが入らずにshared_ptrが入るって事は・・・・
標準のshared_ptrってスレッドセーフではないってことを意味してるのか?
これではboostを使い続けてしまいそうだな。enable_ifも微妙に違うらしいし。
0736デフォルトの名無しさん
2009/07/19(日) 07:03:01boostの方が圧倒的に枯れているし信頼できる。
標準のtr1を使えるようになるのはまだ先だな。
0737質問者09087
2009/07/19(日) 16:08:20下記ソースコードをg++ test.cpp -lboost_serialization-mtによって
コンパイル、実行可能でした。
------------test.cpp中身------------------
#include <boost/serialization/serialization.hpp>
using namespace std;
struct MyData
{
int num;
double pi;
private: // ここがシリアライズ処理の実装
friend class boost::serialization::access;
template<class Archive>
void serialize( Archive& ar, unsigned int ver )
{
ar & num;
ar & pi;
}
};
0738質問者09087
2009/07/19(日) 16:10:26#include <boost/archive/text_oarchive.hpp> // テキスト形式アーカイブに書き込み
#include <boost/archive/text_iarchive.hpp> // テキスト形式アーカイブから読み込み
int main()
{
// 保存
{
MyData data;
data.num = 100;
data.pi = 3.14;
ofstream file("save.dat");
boost::archive::text_oarchive oa(file);
oa << (const MyData&) data;
}
// 復元
{
MyData data;
ifstream file("save.dat");
boost::archive::text_iarchive ia(file);
ia >> data;
}
}
------------------------------
0739質問者09087
2009/07/19(日) 16:12:38今、Jamfileは下記のようになっており、当然、-lboost_serialization-mtに
相当する記述がないので、referenceエラーを起こします。
---------Jamfileの中身---------------
project test : : ;
exe test : test.cpp
;
install test.exe : test
: <location>. ;
------------------------
ちなみに、web上には下記コードを先頭に記述することででできるような
記述がありましたが、私の条件ではできませんでした。
(勘違いの可能性が高いですが。)
----------------------------
#define BOOST_LIB_NAME boost_serialization
#include <boost/config/auto_link.hpp>
----------------------------
どなたか、ご教示お願いします。
0740デフォルトの名無しさん
2009/07/19(日) 20:44:58auto_link.hppはgccでは効かないんだな。 残念。
lib boost_serialization-mt ;
exe test : test.cpp boost_serialization-mt ;
でなんとかならない?
0741質問者09087
2009/07/19(日) 22:34:58ご回答、ありがとうございます。
やってみたけれど、referenceエラーでした。
-------------------
project test : : ;
lib boost_serialization-mt ;
exe test : test.cpp boost_serialization-mt ;
install test.exe : test
: <location>. ;
------------------------
0742デフォルトの名無しさん
2009/07/21(火) 21:15:31具体的には、特定のruleが置換対象になっていてそのセマンティックアクションが走った時に、外部のイテレータ(置換対象の文字列が入っている)に処理を移し、
これが終わったら本イテレータに処理を戻すと言う形です。
不可能でしょうか?
0743デフォルトの名無しさん
2009/07/21(火) 21:55:190744デフォルトの名無しさん
2009/07/21(火) 22:01:41とりあえずboost.spiritは使ったことあるの?
0745デフォルトの名無しさん
2009/07/21(火) 22:10:36もっと具体的に
0746デフォルトの名無しさん
2009/07/21(火) 22:14:21お前意味もわからんと雰囲気だけで喋ってるだろ
0747デフォルトの名無しさん
2009/07/21(火) 22:22:08> 本イテレータ
この言い回しが出てきたのは
今回が俺の人生の中で初めてなんだが。
もうちっと分かりやすくしてくれ。。。
0748デフォルトの名無しさん
2009/07/21(火) 22:32:160749デフォルトの名無しさん
2009/07/21(火) 22:33:39>>326 不可能でしょうか、って大体自分でどこまで試してダメだったんだよ
333 名前:以下、名無しにかわりましてVIPがお送りします[sage] 投稿日:2009/07/21(火) 22:03:56.44 ID:d0uZjI6t0
>>330
インターフェイスが分からないから試す事ができぬのだ
336 名前:以下、名無しにかわりましてVIPがお送りします[] 投稿日:2009/07/21(火) 22:12:27.44 ID:CPhXdpj80
>>333 置換対象のイテレータが何故本イテレータ(処理目的のイテレータ)でなく外部なのかって点と、
置換対象以外の物って一体なんだ。
てかインタフェースがわからないのに何をしたいのだ。 ちなみに簡単なサンプルならすぐ見つかるが
337 名前:以下、名無しにかわりましてVIPがお送りします[sage] 投稿日:2009/07/21(火) 22:17:48.59 ID:d0uZjI6t0
>>336
外部なのは別ファイルを展開した時にそれが出てくるからで、インターフェイスが分からないから試す事ができないっていうのは
トートロジーながらもその目的を果たすためのインターフェイスが分からないから実行できないと言う事。
それ以外のインターフェイスなら分かる。
ただの馬鹿だと思う
0750デフォルトの名無しさん
2009/07/21(火) 22:47:55普通に再帰的に解析させればいいんでないの?
0751デフォルトの名無しさん
2009/07/22(水) 13:43:08え?だめ?
0752デフォルトの名無しさん
2009/07/23(木) 00:15:180753デフォルトの名無しさん
2009/07/23(木) 00:15:570754デフォルトの名無しさん
2009/07/23(木) 10:29:42#defineや#includeの部分をどうするかで悩んでます。
自分の思いついた方法だと、1パスで処理するのは諦めて
まずプリプロセッサを展開してソースの置換を行い、それから
spiritでパースするという物なのですが、これだとパース時に元のソースでの
エラー行が分からなくなるので、何か良い方法はないかなーと、思ったしだいです。
プリプロセス字に変換後行番号から変換前行番号を調べられる変換配列を
作るくらいしか、対処法が思いつきません。
0755デフォルトの名無しさん
2009/07/23(木) 10:33:280756デフォルトの名無しさん
2009/07/23(木) 10:33:49#defineや#includeは2パスでやるのが当たり前だよ。
行数カウントは#lineディレクティブだけCパーサでも読むようにしておいて、
プリプロセッサが#includeしたところでいちいち#lineを出力するようにしておけばいい。
いっぺんgccやVCでプリプロセスだけやって(そういうオプションがあるから)、
どういう出力か見てみるといいよ。
0757デフォルトの名無しさん
2009/07/23(木) 11:05:28あーなるほど。
プリプロセス済みのソースに行番号のデクリメントを埋め込むような方法なんですね。
後で既存のコンパイラの中間出力も見てみます。
0758デフォルトの名無しさん
2009/07/24(金) 10:05:21boost::waveを使えば#includeや#defineを展開してiteratorで返してくれるらしい。
spiritが前提なら、waveはspiritで書かれてるそうだからソースも参考になるかも。
0759デフォルトの名無しさん
2009/07/24(金) 13:16:25typedef boost::variant<V,std::vector<Var>> Var;
とまぁこんな感じで、おてがるに値を階層のあるもにできないかなぁ・・・
0760デフォルトの名無しさん
2009/07/24(金) 14:51:23こんなかんじ
typedef boost::mpl::list<bool,int,float> V0;
typedef boost::make_variant_over<V0> V;
元の型リストがあるとvisitorなんかが自動的に作れて便利だよ。
0761760
2009/07/24(金) 14:58:26X typedef boost::make_variant_over<V0> V;
O typedef boost::make_variant_over<V0>::type V;
0762デフォルトの名無しさん
2009/07/24(金) 16:55:29そんな方法もあるのか。
それなら1パスでできそうですね。
0763デフォルトの名無しさん
2009/07/25(土) 15:33:32boost::arithmetic
と
boost::field_operators
って
両者とも
+=
*=
-=
/=
の4つから、+-*/を作るということで
全く同じに思えるのですが、同じですよね?
0764デフォルトの名無しさん
2009/07/25(土) 16:57:04{
boost::shared_array<MyClass> s( new MyClass[BUGNUMBER] );
}
もしこのnew MyClass[BUGNUMBER]の部分で
std::bad_alloc例外が投げられたら、
いったいどういった挙動になりますか?
0765デフォルトの名無しさん
2009/07/25(土) 17:34:01field_operators1とarithmetic1は同じ。しかしarithmetic2は除算と減算で
引数型(T, U)しか定義しないが、field_operators2は逆も定義する。
つまり、arithmetic2<A, B>はA::operator/=(B)だけで良いが、
field_operators2<A, B>はA::operator/=(B)だけでなくB::operator/=(A)も必要となる。
operator-=についても同様。
0767デフォルトの名無しさん
2009/07/25(土) 23:54:03catchされるまでfooの外にstd::bad_allocが飛んでいく
0768764
2009/07/26(日) 00:06:57ということは作りかけの
boost::shared_array<MyClass> s
は気にしなくて大丈夫に作られているってことですね。
ありがとうございます。
0769デフォルトの名無しさん
2009/07/26(日) 14:54:10make_recursive_variant
これはつかわんの?
0770デフォルトの名無しさん
2009/07/26(日) 18:56:40よく見たら再帰になってたのね。見逃してた。
0771デフォルトの名無しさん
2009/07/26(日) 23:44:35ttp://booster.x0.to/
以下更新内容の一部
[Serialization]
Fix void_cast unregister - again!
[Spirit]
Spirit: performance optimization of karma::output_iterator
Spirit: Moved buffering from sequences to alternatives, which makes more sense...
Spirit: improving overall performance
Spirit: added karma::omit[] directive
Spirit: Added output iterator composition
Spirit: lists, kleene, plus, etc. now support any STL container (except map)
Spirit: added qi::distinct to repository
[Accumulators]
eliminate shadow warnings and unused variable warnings, fixes #3262, fixed #3276, fixes #3031
[Units]
Loosen requirements on signbit to 0/nonzero instead of 0/1
[Unordered]
Adjust the unordered defaults so that emplace takes more parameters and less buckets are created by default.
[Mpi]
Made Boost.MPI work with the new pointer serialization
亦、libs_for_build_boost.rarもICUを4.2.1から4.3.1に、64bit版bjam.exeをrev.55042に更新しました。
0772デフォルトの名無しさん
2009/07/27(月) 20:52:48rangeExはまだ入らないのかの〜
0773デフォルトの名無しさん
2009/07/28(火) 20:59:38っていうマクロはどういった用途で使う(or使われている)のでしょうか?
そもそも定義されている部分すら見つけられません。。。
0774デフォルトの名無しさん
2009/07/28(火) 22:14:070775デフォルトの名無しさん
2009/07/28(火) 22:15:44prefix.hppで定義されてる
使い方は,たとえば某MSのヘッダファイルのように
#define min(a,b) ...
#define max(a,b) ...
と定義されてあった場合,
std::min(lhs, rhs) や std::max(lhs, rhs) や std::numeric::limits<hoge>::max()
などの min, max がマクロで置換されてしまうけど,
std::min BOOST_PREVENT_MACRO_SUBSTITUTION (lhs, rhs)
と呼び出せばこれを防げる.
つっても,冗長すぎるから普通は(std::min)(lhs, rhs)ってやるけどNE
0776773
2009/07/28(火) 22:25:46理解出来ました!
0777デフォルトの名無しさん
2009/07/29(水) 20:52:12変なライブラリ使うとソースが読めないから保守性に問題あると却下されました
0778デフォルトの名無しさん
2009/07/29(水) 20:56:450779デフォルトの名無しさん
2009/07/29(水) 21:01:100780デフォルトの名無しさん
2009/07/29(水) 21:05:08boostは次期C++の標準ライブラリの候補だと主張するんだ。shared_ptrとかfunctionとか
間違っても自信満々でspiritとかlambdaを解説したりしないよーに
0781デフォルトの名無しさん
2009/07/29(水) 21:08:04とか、
(CMでおなじみの) boost
とか言えば説得できたかもしれない。
0782デフォルトの名無しさん
2009/07/29(水) 21:10:550783デフォルトの名無しさん
2009/07/29(水) 21:18:01{
namespace tr1 = ::boost;
}
こうやってboostのすべてがTR1に含まれると偽装する。
0784デフォルトの名無しさん
2009/07/29(水) 21:21:180785デフォルトの名無しさん
2009/07/29(水) 21:33:53もしコーディング規約などでboost使用禁止などと決められていたら、まだ説得する余地はあるが
それすらも無ければ、勝手に使って面倒見るか、あきらめるしか無いな
0786デフォルトの名無しさん
2009/07/29(水) 21:36:30むしろ何も知らない方が説得しやすいかも試練。
0787デフォルトの名無しさん
2009/07/29(水) 22:06:02そこでprogress_displayを使ってれば所帯染みた感じがいい塩梅に部長の心を揺らしたわけだよ
0788デフォルトの名無しさん
2009/07/29(水) 22:34:01→ g++ x.x.xやVC++ x.xでビルドしてください。
それ以外
→ 名前空間などを変えて「自作しました」。
0789デフォルトの名無しさん
2009/07/29(水) 22:41:11原因が見つけられず、boost側をいじるしか無い状況になったら、
自分でメンテできる自信がある?俺は無いw
0790デフォルトの名無しさん
2009/07/29(水) 22:43:08昔の会社の社長が似たようなことやってたわ
やねうらのライブラリのyaneがxxx(社長の名前)にwww
わかりにくくなるだけだから正直やめてほしかった
0791デフォルトの名無しさん
2009/07/29(水) 22:47:23100%自分(自社で)でプログラム書いてるならともかく、
STLやらMFCやらなんらかのライブラリ使ってるだろ?
あの辺にもしバグ見つけたとしてメンテできる自信ある?
無いなら一緒だよ
0792デフォルトの名無しさん
2009/07/29(水) 22:48:33MFCは使わない
0793デフォルトの名無しさん
2009/07/29(水) 23:40:370794デフォルトの名無しさん
2009/07/30(木) 00:47:520795デフォルトの名無しさん
2009/07/30(木) 07:11:280796デフォルトの名無しさん
2009/07/30(木) 08:45:29C++スレでC/C++言うなってばよ。
で、何でC++にnamespaceは事実上無いの?
0797デフォルトの名無しさん
2009/07/30(木) 08:53:470798デフォルトの名無しさん
2009/07/30(木) 09:37:20そういうアホな話は他でやれ
0799デフォルトの名無しさん
2009/07/30(木) 09:53:090800デフォルトの名無しさん
2009/07/30(木) 10:18:530801デフォルトの名無しさん
2009/07/30(木) 11:27:30ああ、namespaceの無い大昔のC++しか知らない爺さんか
10年も前に標準化された仕様にすらついていけないなら、引退した方がいいよw
0802デフォルトの名無しさん
2009/07/30(木) 11:41:05を boost::archive::xml_woarchive でシリアライズすると
<hoge>
<count>5</count>
<item>104</item>
<item>111</item>
<item>103</item>
<item>101</item>
<item>0</item>
</hoge>
と,一要素ずつが出力されてしまいます.
これは boost が意図した動作なのでしょうか?
できれば
<hoge>
<count>1</count>
<item>hoge</item>
</hoge>
こういう感じで出力してほしいのですが
0803デフォルトの名無しさん
2009/07/30(木) 20:46:58コンパイラは何?
typedef unsigned short wchar_t;って実装されているんじゃないの?
そのコンパイラでは、VC++みたいにwchar_tを独立した型にするオプションが使えたりしないか?
0804デフォルトの名無しさん
2009/07/30(木) 21:16:34namespace内でusing namespceしているnamespaceをusing namespaceすると、その中のusing namespaceまですべてぞろぞろusingされるのが不便だ。
0805デフォルトの名無しさん
2009/07/30(木) 21:30:25知らなかった。だって、普通そんなことやらないでしょ。
0806デフォルトの名無しさん
2009/07/31(金) 02:08:05それが「namespaceが事実上無い」の理由?
全然つながらないよ。
0807デフォルトの名無しさん
2009/07/31(金) 04:45:39そうならないと困る。
using namespaceしたかどうかで表記を変えるとかご勘弁願いたい。
0808デフォルトの名無しさん
2009/07/31(金) 05:51:33Pythonでいえばfrom A import *はusing namespace A;と同じだよな
0809デフォルトの名無しさん
2009/07/31(金) 08:10:00from B import *してもそんな状態にはならないだろ
0810デフォルトの名無しさん
2009/07/31(金) 08:26:29ヘッダに書かなければいいだけじゃなくて?
0811デフォルトの名無しさん
2009/07/31(金) 08:27:110812デフォルトの名無しさん
2009/07/31(金) 09:27:59すいません std::wstring ではなく誤って wchar_t* をシリアライズしていたのが
原因でした。
ところで、もう一つ質問があります。
template <class Archive>
void load(Archive& ar, const unsigned int)
{
ar & boost::serialization::make_nvp("URL", url_);
}
現在このようにしてURLを読み込んでいるのですが、クラスの不変条件として
メンバ変数 url_ が PathIsURL() を満たすようにしています。
そこで、上記関数 load 中で url_ の値をチェックして(不正なURLなら)例外を
投げるようにしたのですが、どうにもうまくいきません(不正なURLを与えても例
外自体が生じません)。
上記のような目的を達成するにはどうすればよいのでしょうか?
0813デフォルトの名無しさん
2009/07/31(金) 10:26:250814デフォルトの名無しさん
2009/07/31(金) 10:34:550815デフォルトの名無しさん
2009/07/31(金) 10:59:32すいません。
template <class Archive>
void load(Archive& ar, const unsigned int)
{
std::wstring url;
ar & boost::serialization::make_nvp("URL", url);
if (PathIsURL(url.c_str()) {
url_ = url;
}
else {
throw hoge;
}
}
としました。
0816デフォルトの名無しさん
2009/07/31(金) 11:38:030817デフォルトの名無しさん
2009/07/31(金) 12:29:130818デフォルトの名無しさん
2009/07/31(金) 13:05:160819デフォルトの名無しさん
2009/07/31(金) 22:01:150820デフォルトの名無しさん
2009/08/02(日) 13:07:490821Regex
2009/08/02(日) 16:17:59ひょっとしてぼくはもういらないこなんですか・・・?ぶわっ
0822デフォルトの名無しさん
2009/08/02(日) 17:07:310823デフォルトの名無しさん
2009/08/02(日) 17:31:380825デフォルトの名無しさん
2009/08/02(日) 20:54:43boost::pool<> p(sizeof(int));
この行を、グローバルやローカル変数にすると問題がないのですが。
class AA
{
boost::pool<> p(sizeof(int));
}
クラス内に入れるとコンパイルエラーになってしまいます。対処方法がないでしょうか
0826デフォルトの名無しさん
2009/08/02(日) 20:57:270828デフォルトの名無しさん
2009/08/02(日) 22:18:010829デフォルトの名無しさん
2009/08/02(日) 22:39:030830デフォルトの名無しさん
2009/08/02(日) 22:55:02手元にないし、具体的な中身までは思い出せないけど。
0831デフォルトの名無しさん
2009/08/03(月) 07:17:24そっちを使うと思う。
ただxpressiveなら文法の相互参照とかの拡張機能があるので使いでが無いわけでもない。
0832デフォルトの名無しさん
2009/08/03(月) 08:27:02ごめんねregexくん・・・
0833デフォルトの名無しさん
2009/08/03(月) 11:19:490834デフォルトの名無しさん
2009/08/03(月) 15:13:510835デフォルトの名無しさん
2009/08/03(月) 15:30:10xpressiveの静的正規表現部分はまとめて別ファイルにしてる
でもそれを変更するとコンパイルの時間が凄い事になる orz
0836デフォルトの名無しさん
2009/08/04(火) 12:59:09boost::algorithm::split(data, boost::algorithm::is_any_of("-+"));
では「-」あるいは「+」区切りのデータとしてsplitしてしまいます
やりたいことは,
hoge-+foo-+bar
というデータを,「hoge」「foo」「bar」にsplitすることです
0837デフォルトの名無しさん
2009/08/04(火) 13:11:55何か大げさな気がするね。
0838デフォルトの名無しさん
2009/08/04(火) 13:18:000839デフォルトの名無しさん
2009/08/04(火) 13:29:41それだと +- でも分割されちゃうでしょ。 836 がそれでいいのかどうか、ってところだけど。
0840デフォルトの名無しさん
2009/08/04(火) 14:02:200841デフォルトの名無しさん
2009/08/04(火) 14:08:39>>839
ありがとうございます
token_compress_onを試してみましたが,これだと
hoge-+-+foo-+bar
のときに「hoge」「」「foo」「bar」とならず「hoge」「foo」「bar」となってしまいます(空要素が無視される).
空の項目も含めてsplitしてほしいので,ダメでした.
0842デフォルトの名無しさん
2009/08/04(火) 14:24:080843デフォルトの名無しさん
2009/08/04(火) 14:32:350844デフォルトの名無しさん
2009/08/04(火) 17:04:310845デフォルトの名無しさん
2009/08/04(火) 17:41:19正規表現にヒントを得て,xpressiveの
「Split a string using a regex as a delimiter」
(http://www.boost.org/doc/libs/1_39_0/doc/html/xpressive/user_s_guide.html#id4109898)
を用いてsplitすることにしました.
0846Regex
2009/08/04(火) 17:53:390847progress_display
2009/08/04(火) 19:59:09ドンマイ
俺は好きだぜ?お前のこと
元気出して頑張れよ!
0848Preprocessor
2009/08/04(火) 20:05:51テンプレートなんてもう古いぜ。
これからは俺様の時代だ。
0849デフォルトの名無しさん
2009/08/04(火) 20:16:26bool split(const char * const str, vector<string>& result) {
using namespace boost::spirit::classic;
rule<> item = (*(anychar_p - "-+"))[push_back_a(result)];
return parse(str, item >> *("-+" >> item).full;
}
0850compressed_pair
2009/08/05(水) 00:03:230851デフォルトの名無しさん
2009/08/05(水) 08:00:26プギャーm9
0852デフォルトの名無しさん
2009/08/05(水) 12:36:420853デフォルトの名無しさん
2009/08/05(水) 15:49:330854デフォルトの名無しさん
2009/08/05(水) 19:50:30頼りに調べて来ます。
0855デフォルトの名無しさん
2009/08/05(水) 20:44:04将来的にはサポートされる予定ありますか?
0856デフォルトの名無しさん
2009/08/05(水) 20:51:300857デフォルトの名無しさん
2009/08/05(水) 20:56:13何を訳のわからないことを言っているのですか?
0858rational
2009/08/05(水) 20:58:340859デフォルトの名無しさん
2009/08/05(水) 23:15:540860rational
2009/08/05(水) 23:52:270861デフォルトの名無しさん
2009/08/06(木) 20:12:52class Hoge {
public:
int getHoge() const { return hoge_; }
private:
int hoge_;
};
std::vector<Hoge> hoges;
// hoge が -1 の値をもつものを検索したい
std::find_if(hoges.begin(), hoges.end(), _1.getHoge() == -1);
上記のプログラムで find_if で _1 に getHoge() がないと怒られてしまいます。
どうのように書けばよいのでしょうか?
0862デフォルトの名無しさん
2009/08/06(木) 20:28:46多倍長はsandboxにboost.bigintがあるよ
0863うちラムだっちゃ
2009/08/06(木) 21:09:18std::find_if(hoges.begin(), hoges.end(), boost::lambda::bind(&Hoge::getHoge,boost::lambda::_1) == -1);
0865デフォルトの名無しさん
2009/08/06(木) 22:15:42そのうちこんな風になるのかな…
0866デフォルトの名無しさん
2009/08/06(木) 22:47:150867デフォルトの名無しさん
2009/08/06(木) 23:18:03ちょっと見やすくしてみた。
using boost::lambda::_1;
std::find_if(hoges.begin(), hoges.end(), bind(&Hoge::getHoge, _1) == -1);
0869デフォルトの名無しさん
2009/08/06(木) 23:48:240870デフォルトの名無しさん
2009/08/06(木) 23:56:31bindもusingしなきゃ
0871デフォルトの名無しさん
2009/08/07(金) 00:03:060872デフォルトの名無しさん
2009/08/07(金) 01:18:41おぉほんとだw
0873デフォルトの名無しさん
2009/08/07(金) 07:13:240874デフォルトの名無しさん
2009/08/07(金) 10:14:05lambdaの方が良いらしい。
0875デフォルトの名無しさん
2009/08/07(金) 11:13:460876デフォルトの名無しさん
2009/08/07(金) 11:26:130877471
2009/08/07(金) 11:40:23>>471
>>492
この辺で
boost::lambda::bindでは出来ないがboost::bindでは出来る例が
書かれているようだぞ。
0878デフォルトの名無しさん
2009/08/07(金) 11:46:280879デフォルトの名無しさん
2009/08/07(金) 12:57:38MyClass::get_10 を &MyClass::get_10 にしたら lambda:::bind で通ったぜ。
0880デフォルトの名無しさん
2009/08/07(金) 14:02:450882デフォルトの名無しさん
2009/08/07(金) 17:29:420883デフォルトの名無しさん
2009/08/07(金) 18:25:24実行ファイルに色んな関数をエクスポートしてlibファイルを
出力するのですが、これを防止する方法はないでしょうか?
0884デフォルトの名無しさん
2009/08/07(金) 18:30:370885デフォルトの名無しさん
2009/08/07(金) 18:50:44ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: unified #pragma once directive in all header files
Spirit: added rule constructors allowing to directly initialize rules: rule<> r = ... (yay!)
Spirit: fixed return type for traits::deref(Iterator)
Spirit: add qi>>confix to repository, added missing headers files,
restructured repository include directories
Spirit: added typedef for iterator_type to qi::rule and larma::rule
Spirit: renamed traits::properties to traits::properties_of, added missing files
[Graph]
Moved included .cpp files to .ipp so that they will be installed
Added missing property iterator update
[Regex]
Added support for (?(DEFINE) blocks and updated the docs accordingly.
[Archive]
Fix test_no_rtti test
extended_type_info system not based on type_id
Collection sizes are now seriallized as std::size_t
[Serialization]
add register archive
[Type_traits]
Fix is_base_of and is_base_and_derived to conform to C++0x.
[Algorithm]
Merged ADL protection patch from Neil Groves
[Mpi]
Added missing declspec
0886デフォルトの名無しさん
2009/08/07(金) 23:18:03コンパイル時間が嫌がらせかと思うほど長くなる
0887デフォルトの名無しさん
2009/08/08(土) 00:00:020888デフォルトの名無しさん
2009/08/08(土) 08:17:570889デフォルトの名無しさん
2009/08/08(土) 08:29:000890デフォルトの名無しさん
2009/08/08(土) 08:46:510891デフォルトの名無しさん
2009/08/08(土) 10:08:530892デフォルトの名無しさん
2009/08/08(土) 10:47:23http://d.hatena.ne.jp/faith_and_brave/20090428
0893デフォルトの名無しさん
2009/08/08(土) 13:12:493KBのソースをコンパイルするのにメモリが1GB必要になる
0894デフォルトの名無しさん
2009/08/08(土) 15:58:05そのページにある iterator must go にあるrangeの pop_frontとかすごく
期待したいけど、vaultのrangeExにはまだはいってないのか
早くboostに入るとうれしいな。
0895デフォルトの名無しさん
2009/08/14(金) 19:16:36ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: changed semantics of karma::char_(), karma::string(), karma::int_() et.al.,
karma::double_() et.al. Fixed attribute handling all over the place.
Spirit: added Karma character class generators
Spirit: added character range and character set generators
Spirit: allow use of a derived context
Spirit: add subject_type typedef to reference
Spirit: added the Karma example classify_char
Spirit: adding Qi subrules to repository
Spirit: minor adjustment to output_iterator
[Graph]
Added grid graph from Michael Hansen
Added extra space to work around buggy preprocessors
[Interprocess]
Fixed deadlock problem
lseek is undefined with shared memory descriptors, use fstat instead.
[Asio]
Add missing returns for failure cases in write_some_at and read_some_at.
[Mpi]
Added missing includes to Boost.MPI archives
[Units]
Fix bug in the code for finding a basis for a set of base units.
亦、libs_for_build_boost.rarも、Windows SDKのfor 7 RCからfor 7正式版への更新に合わせて
全てのライブラリとbjam.exeをリビルドしました。
0896デフォルトの名無しさん
2009/08/16(日) 21:35:05いいことだ
0897デフォルトの名無しさん
2009/08/17(月) 22:32:19おつっす。お世話になっております。
SDK for Windows7 いれただけじゃ、それリンクしてくれないよね
bjamがかってに認識してくれるの?
how_to_build.txtには書かれてないのかな
0898デフォルトの名無しさん
2009/08/18(火) 01:17:50としている他は全て自作のライブラリMyLibがあります。
MyLibをソースコードの形で配布する場合、hoge.hの著作権表示をMyLibのソースコードに記す必要はありますでしょうか?
0899デフォルトの名無しさん
2009/08/18(火) 01:32:21っCMAKE
しかし約20万戸のWarningがでるのはなんとかならんかな
0900デフォルトの名無しさん
2009/08/18(火) 01:38:240901898
2009/08/18(火) 10:04:11もしhoge.hをインクルードしただけで
MyLibに著作権表記が必要なら、
Boostのライブラリ達は皆 インクルードしまくっているわけですから
著作権表記だらけになってしまいますよね。
ということは著作権表記はインクルードだけでは
必要ないと考えてよろしいでしょうか?
0902デフォルトの名無しさん
2009/08/18(火) 11:24:480903デフォルトの名無しさん
2009/08/18(火) 12:55:35ここで教わったことが正しいという保証はどこにもない。
0904デフォルトの名無しさん
2009/08/18(火) 13:21:33まさにそれです。
自分を信じて自分で考えてみます。
0905デフォルトの名無しさん
2009/08/18(火) 14:37:320906デフォルトの名無しさん
2009/08/18(火) 14:44:530907デフォルトの名無しさん
2009/08/18(火) 14:59:07ソースコードの時点ではまだ取り込んだわけじゃないから派生物にならない。
改変ではない自分で書いたものに他人の著作権表記をつけられない。
最終的な成果物はincludeしたものを含んでいるので
ライセンスに定められた方法でその部分の著作権表記をしなければならない。
と自分は解釈してる。法務関係の仕事してるわけじゃないので
あくまで素人の見解ということで。
0908898
2009/08/18(火) 15:14:00ありがとうございます。
私の見解では、
includeしたライブラリはBoostのライセンスで言うところのソフトウェア(の全体あるいはその一部)のコピーにはあてはまらないが、派生成果物にはあてはまる
です。
なのでライセンスに従い著作権表示が必要になると思っています。
0909デフォルトの名無しさん
2009/08/18(火) 15:32:26ソフトウェアのソースコードの全てのコピーにライセンス表記するように要求し
なさい。
>Must not require that the license appear with executables or other binary uses of the library.
かといって、実行ファイルとかバイナリとかにはライセンス表記を求めるな。
とあるので、むしろソースに表記が必要なのでは
0910デフォルトの名無しさん
2009/08/18(火) 16:45:05そこは最初から全員了解してるんじゃね?
0911898
2009/08/18(火) 17:07:04最終的には裁判してみないと分からないんですよね。
判例があるなら別ですが。
0912デフォルトの名無しさん
2009/08/18(火) 17:19:09それは自分のコードをBoostに含めてもらう場合の要件。
自分のコードでboostを使った場合については、以下が短くまとまっている。
How is the Boost license different from the GNU General Public License (GPL)?
The Boost license permits the creation of derivative works for commercial or
non-commercial use with no legal requirement to release your source
code. Other differences include Boost not requiring reproduction of copyright
messages for object code redistribution, and the fact that the Boost license
is not "viral": if you distribute your own code along with some Boost code,
the Boost license applies only to the Boost code (and modified versions
thereof); you are free to license your own code under any terms you like. The
GPL is also much longer, and thus may be harder to understand.
0913898
2009/08/18(火) 18:01:38Boostのコードの部分だけBoostライセンスが強制されます。
自分で書いた部分についてはお好きにどうぞ。
GPLは長すぎて理解する気がおきませんね。
って書いてありますね。
ありがとうございます。
0914デフォルトの名無しさん
2009/08/18(火) 20:46:59実際に著作物を配布しているわけじゃないし
要は公開するものに他の著作物が混じらなければ問題ないのでは
0915913
2009/08/18(火) 22:51:30all derivative works
を拡張解釈すると#include しただけでも
そのおかげで動作しているプログラムと言うことになり
派生成果物と見なされたりしませんかねぇ。
うーん。。
0916デフォルトの名無しさん
2009/08/18(火) 22:53:45アホか?ファイル名を書いただけで何で派生物になるんだ?
0917913
2009/08/18(火) 22:56:37ファイル名書いたからではなく
利用しているからです。
all derivative works
の意味をどこまで拡張して捉えるべきか・・・。
0918デフォルトの名無しさん
2009/08/18(火) 23:00:33常識的に判断しろよ。derivative worksをそんなふざけた定義で運用
しているライセンスがどこにある?ほとんどのライセンスにおける定義は
コンパイラが生成したバイナリのことを指す。
0920デフォルトの名無しさん
2009/08/18(火) 23:56:36GPLライセンスされたライブラリは
ファイル名すらGPLなんだろうかw
0921デフォルトの名無しさん
2009/08/19(水) 00:09:46「助けてくれッ!GPLが、GPLが俺のプログラムに!!」
「どうして…どうしてこんなことになってしまったの…」
「俺たちは…絶対に諦めない!絶対に、絶対にGPLウイルスを滅ぼすんだ!」
リチャード・ストールマン主演昨
劇場版「ライセンス」今冬初ロードショー
0922デフォルトの名無しさん
2009/08/19(水) 00:17:34実は私、GPLだったの。
0923デフォルトの名無しさん
2009/08/19(水) 00:19:50なんて怖そうなホラー映画だ
0924デフォルトの名無しさん
2009/08/19(水) 00:32:490925デフォルトの名無しさん
2009/08/19(水) 00:45:290926デフォルトの名無しさん
2009/08/19(水) 01:03:17このライセンスが適用されたライブラリの一部または全部
またはその派生成果物の一部または全部を含むファイルが
保存された建物内においては、その建物内の全てのファイルに
このライセンスを適用しなければならない。
ファイルとはインターネット等の一時ファイルも含まれる。
0927デフォルトの名無しさん
2009/08/19(水) 02:00:26必ず不幸が訪れるでしょう。改悪した人は車に轢かれて亡くなりました。。。。
0928デフォルトの名無しさん
2009/08/19(水) 05:18:300929デフォルトの名無しさん
2009/08/19(水) 08:01:40自作ソフト配布の際、参考にさせてもらう
0930デフォルトの名無しさん
2009/08/19(水) 08:31:28振込口座番号忘れちゃ遺憾だろ
0931デフォルトの名無しさん
2009/08/19(水) 09:46:15このライセンスが適用されたコードによる生成物は、すべてこのライセンスを継承しなければならない。
例、コンパイラが生成するファイル、テキストエディタが生成するファイル、ルーターが中継するパケットなどなど。
0932デフォルトの名無しさん
2009/08/19(水) 13:17:300933デフォルトの名無しさん
2009/08/19(水) 13:38:35コンパイルしてはならないし、
静的にも動的にもリンクしてはならないし、
実行してもならない。
0934デフォルトの名無しさん
2009/08/19(水) 13:39:530935デフォルトの名無しさん
2009/08/19(水) 13:43:01リンク先の内容が更新される度にライセンスの規定も変わるものとする。
0936デフォルトの名無しさん
2009/08/19(水) 14:48:430937デフォルトの名無しさん
2009/08/19(水) 17:45:020938デフォルトの名無しさん
2009/08/19(水) 17:52:440939デフォルトの名無しさん
2009/08/19(水) 20:14:56http://www.boost.org/doc/libs/1_39_0/doc/html/xpressive/user_s_guide.html#id4049605
を参考に以下のコードを書いてテストしてみたのですが,まったく置換されず困っています.
#include <map>
#include <string>
#include <iostream>
#include <boost/xpressive/xpressive.hpp>
#include <boost/xpressive/regex_actions.hpp>
using namespace boost::xpressive;
int main()
{
std::locale::global(std::locale("japanese")); // ここをコメントアウトしても結果はまったく変わらず
std::map<int, std::wstring> env;
env[0] = L"this";
env[1] = L"that";
std::wstring input(L"$(0) has the value $(1)");
wsregex envar = L"$(" >> (s1 = +_d) >> L')';
std::wstring output = regex_replace(input, envar, ref(env)[as<int>(s1)]);
std::wcout << output << std::endl;
}
main()を
std::map<int, std::string> env;
env[0] = "this";
env[1] = "that";
std::string input("$(0) has the value $(1)");
sregex envar = "$(" >> (s1 = +_d) >> ')';
std::string output = regex_replace(input, envar, ref(env)[as<int>(s1)]);
std::cout << output << std::endl;
とすると,意図したとおりにちゃんと置換されます.
どうすれば wchar_t を用いた最初のコードでも正しく置換されるようにできるのでしょうか?
教えてください.
0940デフォルトの名無しさん
2009/08/19(水) 21:46:02ぜひ VS2005 用もお願いします。
0941939
2009/08/20(木) 01:18:100942デフォルトの名無しさん
2009/08/20(木) 09:33:20> まったく置換されず
「マッチした箇所が空文字列に置換される」という意味だとして……
env[L'0'] = L"this";
env[L'1'] = L"that";
こうするとうちのgcc4ではthis has the value thatになる。
おそらく、as<int>(s1)がwchar_tを「文字」ではなく「数値」と認識しているんだろう。
0943デフォルトの名無しさん
2009/08/20(木) 09:40:410944デフォルトの名無しさん
2009/08/21(金) 14:45:17っていつ使うんだ??
どうしてこれがboostから外されないの?
0945デフォルトの名無しさん
2009/08/21(金) 15:19:07そして、誰も使わないから代わりも出ない。
0946デフォルトの名無しさん
2009/08/21(金) 15:22:34作った人もいらねぇと思っているだろうな(笑)
せめて適当なディレクトリにまとめて入れてくれ。
Boostのルートディレクトリにあって良い物じゃないな。
とこんなことはチラシの裏に書くべきでしたか。
0947デフォルトの名無しさん
2009/08/21(金) 15:28:240948デフォルトの名無しさん
2009/08/21(金) 17:51:480949946
2009/08/21(金) 17:59:03それも嫌だなぁ。
やっぱ追ほ…(ry
timerとかと並んでまとめてtimerディレクトリを
作り、そこに放り込んでおくのがいいんじゃないかと。
どうしてOKが出たんだろう?
みんな使うと思ったのだろうか?
Boost C++ Libraries
http://boost.cppll.jp/HEAD/
このライブラリの目的は,幅広く使えること,そして多様なプログラマによって常に利用されることである.
さらに"既存の慣習"を確立し,参考となるような実装を提供することで, Boostライブラリが最終的な標準に
適したものになることを目指している. 10のBoostライブラリは将来のC++標準の一部になるためのステップとして,
C++標準化委員会の次の 技術報告に含まれている.
progress_displayが次の標準に入らなくて良かった(笑)
0950デフォルトの名無しさん
2009/08/21(金) 18:05:03多様なプログラマによって常に利用されること
もないし"既存の慣習"でもないだろ(笑)
0951デフォルトの名無しさん
2009/08/21(金) 18:21:300952デフォルトの名無しさん
2009/08/21(金) 18:37:280953デフォルトの名無しさん
2009/08/21(金) 18:42:36デザインをカスタマイズできるようにするとか、凝ったアニメーションにするとか
0954デフォルトの名無しさん
2009/08/21(金) 18:47:070955デフォルトの名無しさん
2009/08/21(金) 19:26:160956デフォルトの名無しさん
2009/08/21(金) 19:59:04ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: added gettimeofday based implementation for high_resolution_timer (thanks to Edward Grace)
Spirit: adding Karma subrules to repository
Spirit: adjustments to real_policies to accommodate more use cases
Spirit: no longer tie subrules to a skipper/delimiter type
Spirit: factored out floating point conversion into a separate header
Spirit: make Karma tests more verbose on failure
Spirit: make inherited attributes work with multiple subrules
Applied more high_resolution_timer fixes provided by Edward Grace
[Python]
libs/python/src/exec.cpp: bug fixes
libs/python/test/exec.cpp: new exercise_embedding_html()
[Wave]
Wave: preparing for Boost V1.41
[Graph]
Fixed edge doubling for copying from an undirected graph to a CSR graph; fixes #3357
[Asio]
Clarify that deadline_timer uses a UTC-based clock by default.
[Mpl]
Provide definitions for the dummy structs used by has_push_back_impl and has_push_front_impl
so that they work with Fusion containers. Fixes #3337.
[Serialization]
Fix error in export functionality:
[Archive]
correct error in exception handling
>>897
とりあえずビルド出来ているのでOKという事で、深く考えておりませんでした。
実際のところどうなのでしょう。
0957デフォルトの名無しさん
2009/08/21(金) 20:00:55みんな忘れたのか>>732
0958デフォルトの名無しさん
2009/08/21(金) 21:19:50どうにか使い物にはなりそうじゃない?
0959デフォルトの名無しさん
2009/08/21(金) 21:34:08どんな気持ち?
∩___∩ ∩___∩
♪ | ノ ⌒ ⌒ヽハッ __ _,, -ー ,, ハッ / ⌒ ⌒ 丶|
/ (●) (●) ハッ (/ "つ`..,: ハッ (●) (●) 丶 今、どんな気持ち?
| ( _●_) ミ :/ bigint :::::i:. ミ (_●_ ) | ねぇ、どんな気持ち?
___ 彡 |∪| ミ :i ─::!,, ミ、 |∪| 、彡____
ヽ___ progress ヽノ、`\ ヽ.....::::::::: ::::ij(_::● / ヽノ ___/
/ _display /ヽ < r " .r ミノ~. 〉 /\ compre 丶
/ /  ̄ :|::| ::::| :::i ゚。  ̄♪ \ ssed 丶
/ / ♪ :|::| ::::| :::|: \_pair丶
(_ ⌒丶... :` | ::::| :::|_: /⌒_)
| /ヽ }. :.,' ::( :::} } ヘ /
し )). ::i `.-‐" J´((
ソ トントン ソ トントン
0960デフォルトの名無しさん
2009/08/21(金) 22:34:380961デフォルトの名無しさん
2009/08/21(金) 22:50:06bigint泣きそうw
俺は楽しみにしてるから泣くな!!
0962デフォルトの名無しさん
2009/08/21(金) 23:45:520963デフォルトの名無しさん
2009/08/22(土) 00:58:23progress_display は console based GUI のための布石だろ
0964デフォルトの名無しさん
2009/08/22(土) 01:21:280965デフォルトの名無しさん
2009/08/22(土) 06:16:350966デフォルトの名無しさん
2009/08/22(土) 07:14:090967デフォルトの名無しさん
2009/08/22(土) 07:48:380968デフォルトの名無しさん
2009/08/22(土) 11:11:10コンパイルが呪い
0969デフォルトの名無しさん
2009/08/22(土) 11:14:470970デフォルトの名無しさん
2009/08/22(土) 12:31:54SEGAあたりが受けそうな呪いだな
0971デフォルトの名無しさん
2009/08/22(土) 19:39:220972デフォルトの名無しさん
2009/08/22(土) 22:23:31誰か3行で作って。
0973progress_display
2009/08/22(土) 23:42:58本当は漏れのことが大好きでかまってほしいだ
けなんだろ?素直になれよ(´;ω;`)
0974デフォルトの名無しさん
2009/08/22(土) 23:58:03俺たちはお前の事、Boost.Spiritのコンパイル時間と同じくらい愛してるぞ!!
0975デフォルトの名無しさん
2009/08/23(日) 00:03:04確かにあの時間はドキドキする
0976デフォルトの名無しさん
2009/08/23(日) 00:06:330977デフォルトの名無しさん
2009/08/23(日) 00:23:090978デフォルトの名無しさん
2009/08/23(日) 03:18:21あれ、コマンドライン経由のビルドツールとしては俺の中で結構高評価。 nmakeやsconsより数段楽だわ。
0979デフォルトの名無しさん
2009/08/23(日) 04:02:370980デフォルトの名無しさん
2009/08/23(日) 04:06:59じゃあ何でビルドすんのよ
0981デフォルトの名無しさん
2009/08/23(日) 04:28:510982デフォルトの名無しさん
2009/08/23(日) 05:01:22試してみるわ、ありがと
0983デフォルトの名無しさん
2009/08/23(日) 10:07:08上記リンクを参考にして'|'をdelimiterとして文字列をsplitしようとしています。
また、'|'を'\\'でエスケープすることもサポートしたいと考えています。
つまり、"abc|def||ghi|JK\\|L"という文字列を[5]("abc", "def", "", "ghi", "JKL")にsplitしたいのですが、
sregex_token_iterator begin(s.begin(), s.end(), as_xpr('|'), -1), end;
以上のようにas_xpr('|')をdelimiterとすると、'\\'でエスケープした'|'も
delimiterとしてsplitしてしまいます。
delimiterを~ax_xpr('\\') >> L'|'とするとdelimiterが'\\'でない文字+'|'の2文字として
splitしてしまいます。
目的の処理を達成するにはどのような正規表現を書けばいいのでしょうか・・・?
0984デフォルトの名無しさん
2009/08/23(日) 11:37:25どこで使われているのかくわしく
0985デフォルトの名無しさん
2009/08/23(日) 12:01:12find $BOOST_ROOT -name 'CMakeList.txt'
0986デフォルトの名無しさん
2009/08/23(日) 20:19:40class Hoge
{
int a;
value_initialized<int> b;
public:
Hoge()
:a(value_initialized<int>())
{
}
};
0987デフォルトの名無しさん
2009/08/23(日) 20:30:58(使いたいというのなら止めはしないが)
あと、a(value_initialized<int>())ではaの型がコピー構築可能でないといけない分、汎用性がbより劣る。
だから、自分が評価するなら、a() > b > a(value_initialized<int>())の順だな。
0988デフォルトの名無しさん
2009/08/23(日) 20:51:23無駄があると。
分かりやすい説明ありがとうです。
0989デフォルトの名無しさん
2009/08/23(日) 21:53:22その例だとvalue_initializedを使う利点がない
レス数が950を超えています。1000を超えると書き込みができなくなります。