[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 03/13 15:15 / Filesize : 207 KB / Number-of Response : 692
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Boost総合スレ part7



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/

488 名前:471 mailto:sage [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++です。

489 名前:471 mailto:sage [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な参照でテンポラリな何物かを捉えているという旨のようですが、
どうすれば回避できるのか分かりません。
どうかお知恵をお貸しください。


490 名前:471 mailto:sage [2009/05/03(日) 18:31:34 ]
boost::lambda::bind
をboost::bindに書き換えたら問題無く動作しました。
個人的にはboost::bindライブラリとboost::lambdaライブラリを混在させるのは気持ち悪いので
出来ればboost::bindの箇所は無くして全てboost::lambda::bindにしたいのですが、
どうすれば良いでしょうか?

491 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 20:36:47 ]
3行でまとめてくれ

492 名前:471 mailto:sage [2009/05/03(日) 21:01:43 ]
>>491
SpiritのSemantic Actionにlambda::bindで関数を結合して渡すとエラーになりますが、boost::bindならOKです。lambda::bindでも大丈夫にする方法を教えていただけないでしょうか?

493 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 21:17:04 ]
恐縮ですwww
func_geti_retiの引数の&が余分じゃないか?


494 名前:471 mailto:sage [2009/05/03(日) 21:36:52 ]
>>493
int 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++の仕様がありますから、
このあたりが問題な訳ではなさそうだと思っております。


495 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:23:45 ]
letsboost::operators
ttp://www.kmonos.net/alang/boost/classes/operators.html
ここで紹介されているoperatorsって、いちいち定義が面倒なのを自動化してくれるらしいから
便利そうだと思っているんだが、使うと遅くなったりするのかい?

496 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 23:18:04 ]
しない。
ただし、クラス/構造体のサイズを余計に増やしたくなければ、ちょっとだけ特殊な記法が必要。



497 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 23:52:23 ]
>>496
ほう、そうなんか。そのちょっとだけ特殊な記法とはEBOに関連する?

498 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:17:24 ]
en.wikipedia.org/wiki/EBO

499 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:21:31 ]
>>498
EBOはEmpty Base Optimizationのつもりで書いた。
みんなに通じる略称かと思っていたが甘かったかな。

500 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:33:29 ]
意味は判るがその略称は初めて見たぞ。
ちなみにその直感は超正しい。 俺はDirect3Dを使ったソフトでベクトル型をboost::operatorから継承したせいで
半日謎のバグと戦う羽目になった。

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
ドキュメントにかいてあるぞ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<207KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef