1 名前:デフォルトの名無しさん [2009/01/19(月) 21:22:22 ] 過去スレ part 6 pc11.2ch.net/test/read.cgi/tech/1207749841/ part 5 pc11.2ch.net/test/read.cgi/tech/1192662575/ part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/ part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
501 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:05:17 ] OpenGLで同様な目にあった俺参上。
502 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 08:58:41 ] ふーん、なんかややこしいような気がしてきてしまった。 何はともあれ皆さんありがとう。
503 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 11:29:54 ] Effective C++の最新日本語訳本を読んだところ、 p202にEBOがEmpty Base Optimizationの略称で使われているのを発見した。 原著ではどうなっているのかな?
504 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 12:29:05 ] EBO とか ADL, CRTP, SFINAE, RAII あたりは普通に使ってる
505 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 12:42:43 ] あとはRVO、NRVOかな
506 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 12:47:20 ] RAIIぐらいはいいが、 あんまりにも乱発するのは感心しないぞ。
507 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 13:11:24 ] TSKに、RNPTはKNSNしないな
508 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 13:14:46 ] >>506 ADLやSFINAEはバグの原因になるから 勝手に使えるようになる。 CRTPやEBOはどうなんだろ。 趣味でやってると手を出したくなるけど。
509 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 13:41:36 ] >508 いや、略語乱発は感心しないという話では?
510 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 14:48:23 ] だれがどう感心しないんだw つうかそこいらの女子高生の略語に比べればカワイイもんだ
511 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 18:38:34 ] 1.39落としたけど、 ./booststrap.sh してできた project-config.jam の option.set libdir の行が PREFIX/lib じゃなくて /lib になるのは 何かやんごとなき事情でもあるの?
512 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 11:06:59 ] 1.39.0、またビルドの方法変わった? 1.38.0の時にやってた、 bjam --toolset=msvc-8.0 -sBZIP2_SOURCE=〜 -sZLIB_SOURCE=〜 --stagedir=. stage release debug link=static,shared runtime-link=static,shared でビルドしようとすると何か途中で止まるんだが…
513 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 11:22:31 ] VC8なら、runtime-link=staticは使わないだろ。外した方が良い。 あとシングルスレッドライブラリも使わないから、threading=multiも指定した方が良いな。
514 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 11:26:39 ] >>513 d おかげでビルド進みました。
515 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 11:36:46 ] まあ、それとビルドが進まないのとは別問題なんだけどな。 なんかmathがビルドできないな。 しかも、なぜか自分でファイルを消しておいて、そのファイルが見つからないからskipとかいうヘンなメッセージが。 もう一度試したらうまくいっているようだが。
516 名前:デフォルトの名無しさん [2009/05/07(木) 12:30:11 ] >>515 link=staticとruntime-link=staticがどうたらこうたらっていうエラーメッセージが出て止まってた。 やっぱりバッチファイル直接実行じゃなくてコマンドプロンプトから実行しないとダメだな…
517 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 20:35:09 ] 1.39でてたのか チェックしてくる
518 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 21:19:56 ] >>517 1.37->1.39にした俺はspiritの名前空間が変わってて驚いた。
519 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 22:52:30 ] 1.39のリリースノートによるとメモリリーク対策で導入すべきなのだが 再ビルドに時間がかかり面倒なので見なかったことにした
520 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 23:31:10 ] マルチコアなCPUを使うのは、今時のBoost使いなら当たり前。
521 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 23:40:39 ] ビルドが必要なライブラリって、なんかどうしても使う気になれないんだよねぇ。。。 みんな積極的に使ってる?
522 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 23:46:32 ] >>521 必要なら使う、当たり前のこと。
523 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 01:13:49 ] 使うにしてもregexとfilesystemとserializationくらいだなぁ
524 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 01:59:58 ] program_opt……いや、なんでもないんだ
525 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 07:46:02 ] >>524 もうちょっとシンプルなら使うのに…
526 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 09:16:23 ] あれはシンプルとかそれ以前に問題が多すぎる。 boost初期からあるってだけで、今新規に投稿しようとしたら満場一致で拒否られるレベル。
527 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 09:29:49 ] program_optionを普通に使ってて便利だと思ってる俺がおかしいのか。
528 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 11:37:47 ] あれunicodeのサポートが最悪だよ。
529 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 21:48:14 ] >>518 1.38でビルド時に警告が出てた。
530 名前:518 mailto:sage [2009/05/08(金) 22:40:53 ] >>529 結局ソースを見てたどっていって正しい名前空間を見つけたから大丈夫だったがね。
531 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 09:36:58 ] 上のほうの書き込み見て思ったが、1.39.0ではVS2005のランタイムライブラリに マルチスレッドデバッグ(/MTdオプション)やマルチスレッド(/MTオプション)を 指定している場合用のライブラリのビルドできなくなってるのかな?
532 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 09:55:48 ] そもそもMS自身が、もはやスタティックリンク版のCRTライブラリの使用を推奨してない。
533 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 11:30:32 ] ttp://booster.x0.to/ 確かにビルドの挙動が変わっていますね・・・。 少なくとも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も、特に今迄と変わり無くビルド可能です。
534 名前:デフォルトの名無しさん [2009/05/09(土) 11:38:33 ] Signals と Signals2 との違いって、マルチスレッド対応だけ? シングルスレッドなプログラムなら、かえって Signals のままのほうが 排他制御なくて性能いいとかあるんかな。
535 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 12:38:51 ] >>534 ライブラリビルド不要とも書いてあったな。
536 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 15:34:23 ] >>534 dummy_mutexなんてもんもあるでな。
537 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 00:46:30 ] ↓ 更新しました。link=shared runtime-link=sharedでmpiとzlib絡みのエラーが発生して 計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の挙動が良く分かりませんのでこちらも検証していきます。
538 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 01:32:26 ] まだ軽くしか調べていませんが、どうもbjamか設定ファイルがバグっているみたいですね。 --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関連ライブラリのみですが)。
539 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 07:39:46 ] そのエラーは正しいとしか思えない。 というのも、例えばVCの場合、CRTのライブラリには、いくつものバージョンがある。 それこそ、SPごとにバージョンが変わる。 CRTをスタティックリンクするが、Boostをダイナミックリンクするということは、 CRTのバージョンが異なる可能性があり、危険だと思う。 そしてそもそもCRTのスタティックリンク自体が、VCでは推奨されていない。 確か、Boostの連中の検証した所によると、スタティックリンクのCRTを使うと、 スレッド周りで、たとえ正しいコードを書いたとしても、メモリリークする場合があるらしいとかいうMLを、 どっかで見た気がする。
540 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 13:14:22 ] 私もエラーメッセージの意味するところ自体は正しいと思いますし、link=shared runtime-link=staticは 1.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 (続く)
541 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 13:15:30 ] (続き) Boost 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ビルドコマンドについては上記の件もあり私自身混乱気味ですので、参考程度にして下さい。
542 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 15:31:21 ] regex date_time program_option serialization thread filesystem (system) 要ビルドのライブラリで使うのはこれぐらいかなぁー
543 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 16:53:36 ] >>542 十分つかってるな。
544 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 17:14:49 ] むしろ使ってないのを挙げた方が早いなw
545 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 18:07:22 ] static-staticビルド不可の原因が半分掴めました。対症療法的なビルドは可能になりました。 svn 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がビルドされます。
546 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 18:08:02 ] 但し、RegexのICUサポートを有効にしている場合は Skipping 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回エラーメッセージを繰り返した後ビルドを始めてしまいますのでご注意下さい。
547 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 22:18:43 ] 回避方法乙。 早速使わせてもらいます。 ゲームの場合はstatic-staticじゃないとサポート面倒なんで…
548 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 23:24:58 ] Bおおst、buildすら困難になって来たのか
549 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 00:13:20 ] 俺BoostをLinuxで使うよ君だけど そのままBuid出来た事なんて一度もないよ いつもJamファイルと格闘する羽目になる Windowsはそうでもないのか、うらやましいのぅ
550 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 02:00:46 ] VCでCRTのスタティックリンクはもういい加減にやめた方がいいと思うがなぁ。 だいたい何で必要なんだ。 ランタイムのインストーラーの他に、 DLLをEXEと同梱することもライセンス的に認められているというのに。
551 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 11:07:34 ] >>549 ぜひ最後の make instal コマンドlを checkinstall に変えて で同時にできたdebパッケージを配布してほしい
552 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 17:34:47 ] >>550 DLLの検索に失敗して起動できなかったりすることがあるんだよな 調べるのも面倒だからスタティックリンクする side-by-sideとか意味わかんね
553 名前:デフォルトの名無しさん mailto:sate [2009/05/11(月) 21:51:08 ] >>474 亀レスだが boost-sandbox.cvs.sourceforge.net/viewvc/boost-sandbox/boost-sandbox/boost/numeric/bindings/lapack を使ってます。 ただ、ublas は LAPACK と要素の格納方法が違うので、 hermitian_matrix とかに対して heev が使えないとか、けっこう不便な所がある。
554 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 22:07:13 ] >>549 VCだといつも問題なくライブラリビルドできるね。
555 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 22:20:51 ] >>552 そういやそれなんで起こるんだろうな。 対処法があればいいんだが。
556 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 23:30:35 ] プライベート配置でちゃんとマニフェスト置いておいても失敗するなんて _BIND_TO_CURRENT_VCLIBS_VERSIONがらみくらいしか知らんがどうなんだろ そういやbooster.x0.to/ さんのビルドDLLは、埋め込みマニフェストのCRTバージョンが 9.0.21022.8になってるから、SP1のmsvcr90.dllを配置すると死ぬかもね
557 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 00:10:17 ] その心配は要らないはず。 SP1版ランタイムが存在する環境では、バージョンリダイレクトの指定によって、 マニフェストで無印版msvcr90.dllを指定したアプリでも、SP1版ランタイムが読み込まれる。 (たしか無印版CRTをプライベート配置している場合でも) 蛇足だけど、そのことを知ってから自分は _BIND_TO_CURRENT_VCLIBS_VERSION使うのやめた。
558 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 12:52:07 ] 戻り値をスマートポインタで返す時に、 scoped_ptrはコピーが禁止されてるから普段はshared_ptrを使ってるんだけど、 コピー禁止+暗黙の型変換でscoped_ptrにできるオブジェクトを作って それを返してやればいいんじゃね?ってことを思いついた。 今実行できる環境にないからアレだけど……
559 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:32:27 ] >>558 それは auto_ptr の仕事じゃないか?
560 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 14:39:24 ] >>559 Pythonのwith文やC#でusingを使うように ファクトリ関数の戻り値をスコープ管理したい時に、 生のポインタを返してscoped_ptrで包んでもいいんだけど、 忘れたら嫌なのでスマートポインタで返したい、というイメージ。 auto_ptrだとコピー可能だし、所有権がどうのとか考えるのがめんどくさい。 あくまで戻り値を返す瞬間、一回だけコピーできるようにしたい。
561 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 14:43:35 ] >>560 だからまさにそれauto_ptrだって。
562 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 15:41:56 ] const auto_ptr=getHogefuga(); みたいなかんじ?んなわけねえか?w
563 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:59:19 ] >>562 558, 560だけど、const auto_ptrが駄目な理由が分かんなくなってきた…… どこに問題があるか教えてくれるとありがたいんだけど
564 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 19:10:11 ] const auto_ptrでいいよ。 const auto_ptrはscoped_ptrのようなものだ。少し違うけど。
565 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 19:20:20 ] >>563 const じゃ破壊的代入できないだろ?constでないメンバ関数呼べないんだから そういうこと?
566 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 19:27:32 ] 早くunique_ptrがauto_ptr/scoped_ptrに取ってかわるときが来てほしい。
567 名前:558, 560 mailto:sage [2009/05/12(火) 19:27:43 ] ん、const auto_ptrを戻り値の型に指定しても右辺値がconstになるだけで constで受けることを強制できるわけじゃないのか。 受ける時に気をつけるんだったら別にscoped_ptrでもいいし、 なんだかなあって感じだ
568 名前:558, 560 mailto:sage [2009/05/12(火) 19:47:37 ] と、俺の提案にも穴があることを発見してしまった 暗黙の型変換演算子も一応関数なので、 scoped_ptr型を返す関数を定義してやんなきゃいけないが、 戻り値を返す時にコピーが発生するので無理だ。 ざんねん!! わたしの ぼうけんは これで おわってしまった!! C++0xのunique_ptrとかは右辺値参照とか使ってこれを回避してるのかな?
569 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 20:25:21 ] scoped_ptrにauto_ptrで初期化するコンストラクタがあるから、auto_ptrで返してscoped_ptrで受け取ればいいんじゃね? なぜかドキュメントに載ってないが
570 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 04:17:00 ] >>569 559 の時点でゴールが示されてるのに、なぜかたどり着けない 558 が哀れだ。
571 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 08:32:52 ] >>568 C++03 の unique_ptr 実装はなかなかうまい方法で右辺値から(のみ)の初期化を実現してる。 それを真似することで、所有権移動禁止だが右辺値初期化だけ可能な scoped_ptr を 作ることはできる…が、それはもはや scoped じゃないという気も
572 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 10:37:34 ] みんな意地悪だな。これでいいんだろ? std::auto_ptr<int> f(); boost::scoped_ptr<int> p(f()); >>571 「C++03 の unique_ptr 実装」って何? auto_ptr の間違い?
573 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 22:43:40 ] >>572 ggrks ttp://home.roadrunner.com/~hinnant/unique_ptr03.html
574 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 14:40:30 ] [Review Results] Range.Ex library accepted into boost groups.google.com/group/boost-list/browse_thread/thread/4edfc6bfb1548094?pli=1 いつのまにかAcceptされてたんだね。これでやっとRange-Base Algorithmsが大手を振って使える
575 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 21:40:39 ] Boost.Oven が誕生することはなかったか… そいや Egg ってなんで蹴られたんだっけ? ドキュメント?
576 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 22:42:56 ] >>574 Range-Base Algorithmsって何だい?
577 名前:576 mailto:sage [2009/05/14(木) 22:45:29 ] >>574 ちょっと見た感じ、Boostにふさわしい変態級の記法をしているように見えるのだが よく分からんのだ。
578 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 23:13:29 ] >>575 誰もレビューしてくれなかったんじゃなかったっけ? >>576 STLアルゴリズム、std::hoge(c.begin(), c.end(), foo)をboost::hoge(c, foo)と書けるようになるラッパ。 今までBoost Vaultにくすぶっていた部分。 >>576 hoge | foo | barのようなやつのことだな。それはレンジアダプタ。 同類のOvenスレより pc12.2ch.net/test/read.cgi/tech/1231080841/ > ようするに、| 演算子でパイプ(Unix的なあれ)を作ったC++テンプレートライブラリ。
579 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 00:21:57 ] Egg-Oven-Range か・・・なるほど
580 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 00:37:16 ] >>577 ModernのAndrei Alexandrescuのこれでも読むといい ttp://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/9b74808d7d869060 今が旬だ
581 名前:デフォルトの名無しさん [2009/05/15(金) 19:49:24 ] 更新しました。今週は更新の殆どがSpiritとGraphでした。尚、svnは1.40に移行しました。 亦、今回からビルドログを添付する様に致しました。 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.
582 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 21:41:28 ] >>581 お疲れ様です!
583 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 21:42:54 ] class rational : less_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が働くとか!?
584 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 21:49:22 ] >>583 Boost::operatorで自明な演算子定義を省略してるんだろ こうしとけば+=があれば+は勝手に実装される
585 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 21:57:53 ] ちなみに、継承のアクセサを省略(private継承)してるのでis-aの関係ではなく、 どちらかというとmixinに近いことになってる。
586 名前:583 mailto:sage [2009/05/16(土) 22:05:31 ] >>584 ああ、Boost.Operatorsライブラリはしってるんだけど、 このテンプレートにテンプレートを重ねる変態的記法に驚いたのだ。 で、「Empty Base Optimizationが働くとか!?」と思った。
587 名前:583 mailto:sage [2009/05/16(土) 22:06:53 ] つまり普通だったらprivateの多重継承を考えるじゃない。 それを使わず、テンプレートにテンプレートを食わせてるじゃん。
588 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 22:27:44 ] www.boost.org/doc/libs/1_39_0/libs/utility/operators.htm#chaining ドキュメントにかいてあるぞ
589 名前:583 mailto:sage [2009/05/16(土) 22:30:46 ] ありがとう。 やっぱEmpty Base Optimizationね。
590 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 22:39:29 ] これ使った場所でちょっと複雑な原因不明のエラーが起こったら デバッグできる自信ない・・・
591 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 22:50:33 ] 自作ライブラリの実装が boostの実装と微妙にかぶっちゃうところがあるんですけど それってライセンス違反になるんでしょうかね? spiritとかlambdaとかのアイディアの根幹に関わる部分じゃなく 全然一般的な実装なんですけど。 例えばユークリッドの互除法とか。
592 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 23:39:11 ] Boostからぱくった? はい→ライセンス見ろ。改変おk、ソースコードからクレジットを外すなとかその程度でライセンスはクリアだ。 いいえ→結果的に同じものでも別々に作れば違う著作物。それぞれに著作権がある。堂々としろ。
593 名前:591 mailto:sage [2009/05/16(土) 23:49:16 ] >>592 ありがとうございます。別にぱくったわけではなく、結果的に若干(気にしすぎなのかもしれませんが)似てしまいました。 あと、まだはっきりとライセンスを熟読したこと無いのですが 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. これは短いですが、全文ですよね。 熟読してきます。
594 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 23:58:48 ] 相手の実装を知っていて、 自分も作ってみたら似てしまったというのなら、 GNUの中の人的にはアウトだな。 パクリ元がNDA結んだ仕事相手じゃなくてboostでよかったな。
595 名前:591 mailto:sage [2009/05/17(日) 00:00:26 ] 実装を流用する場合に関係がありそうな部分は 二段落目 The copyright notices in the 〜 ですね。 要するに ………………………… 1.流用対象のライブラリの著作権表記 2.Boost Software License の全文 流用して作ったソースコードを開示する場合、これらを全て記載すること。 ただし実行ファイルの形ならば無制限。 ………………………… ってことですね。 ありがとうございました。
596 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 00:27:29 ] 俺は今までバイナリでしか使ったこと無い(し、そもそも職場がboost原則禁止orz)から分からないんだが、 例えば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の著作権表記が引き継がれなくなっちゃうよね? だれか分かるお方、お知恵をお貸しくだされ
597 名前:596 mailto:sage [2009/05/17(日) 10:03:01 ] BSDライセンスの著作権表示の場所に Boost.Functionの著作権表示を一緒に表示させればいいのか。
598 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:43:14 ] 更新しました。 ttp://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に更新しました。
599 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 11:29:42 ] exceptionってまだまだ付け足されるね 奥がふかいのかなあ
600 名前:デフォルトの名無しさん [2009/05/26(火) 18:16:28 ] ・VisualC++2008EE ・boost1.37.0のuBLAS 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 なぜだかわかりますか?