BOOSTを語れゴラァ

このエントリーをはてなブックマークに追加
語って.はぁと
VCについてくるようになったら勉強する。
>>2
それってどういうことだ?
VCじゃ使えないと思ってる?
それを言ったらVC付属じゃない外部ツールは皆使えない事になるし。
boostも使いたいんだが、.NETも使いたい
なんで重複スレ立てる>>1みたいな馬鹿が減らないんだろうね
6デフォルトの名無しさん:04/07/31 08:40
本スレのタイトルが悪いから
7デフォルトの名無しさん:04/07/31 08:44
boost はどうでもいいから bootstrap について語ろう
ブーブー
9デフォルトの名無しさん:04/07/31 09:13
なつです
最近の2chは常夏だから
あんま関係無い
>>10
ワラタ
12デフォルトの名無しさん:04/07/31 09:50
ハワイアンテイストの2ちゃんねる
あれ他にもBOOSTスレあるの?
【C++】template 統合スレ -- Part4
http://pc5.2ch.net/test/read.cgi/tech/1083550483/l50

こっちでやれ。
15デフォルトの名無しさん:04/07/31 11:38
ここはネタスレとして継続
16デフォルトの名無しさん:04/07/31 11:39
"BOOSTの"ネタスレとして継続
boost自体、ネタみたいなもんだからな
>>16
それは聞き捨てならねぇな
boost本が積読になってる罠。
spirit は凄いんだが、いかんせんコンパイル速度が orz
19デフォルトの名無しさん:04/08/01 08:13
boostはインテルがスポンサーになってもいいのにな。
開発用マシンに爆速CPUの需要を喚起してくれる素晴らしいライブラリ。

「あなたの開発速度をboostさせるPentium5プロセッサ」

Pen4のエンコード需要なんて、そのうちハードウェアエンコーダが
出てきて一般的になり、CPUは売れなくなると思われ。
>19
インテルもそうしたいのは山々かもしれんが、
64bitWindowsの足を引張るほど猛烈な勢いで失速中なのでw

ttp://japan.cnet.com/news/ent/story/0,2000047623,20070161,00.htm
インテル、さらにつまずき--Noconaプロセッサの補助チップに不具合
2004/07/30 20:00
インテル、3.6GHz版のPentium 4が深刻な供給不足に
2004/07/30 11:55
インテル、今度は4GHz版Pentium 4のリリースを延期
2004/07/30 10:44
インテルCEO、度重なる開発の遅れに苦言--従業員の姿勢に疑問を呈す
2004/07/28 14:25
インテル、新型ノートPC用チップセット「Alviso」の投入を延期
2004/07/20 12:27
インテル、Express 915/925チップセットを回収へ--ICH6チップに製造ミス
2004/06/28 10:50
米インテル、次世代モバイルチップ Dothanの発売を延期へ
2004/01/15 16:36
>19
インテルもそうしたいのは山々かもしれんが、
64bitWindowsの足を引張るほど猛烈な勢いで失速中なのでw

ttp://japan.cnet.com/news/ent/story/0,2000047623,20070161,00.htm
インテル、さらにつまずき--Noconaプロセッサの補助チップに不具合
2004/07/30 20:00
インテル、3.6GHz版のPentium 4が深刻な供給不足に
2004/07/30 11:55
インテル、今度は4GHz版Pentium 4のリリースを延期
2004/07/30 10:44
インテルCEO、度重なる開発の遅れに苦言--従業員の姿勢に疑問を呈す
2004/07/28 14:25
インテル、新型ノートPC用チップセット「Alviso」の投入を延期
2004/07/20 12:27
インテル、Express 915/925チップセットを回収へ--ICH6チップに製造ミス
2004/06/28 10:50
米インテル、次世代モバイルチップ Dothanの発売を延期へ
2004/01/15 16:36
http://www.itboost.co.jp/
について語るスレはここですか?
23デフォルトの名無しさん:04/08/02 08:58
>>20
いやそうなんだけど、テンプレートライブラリ使うと
コンパイルが遅いとか嘆いてる奴の使ってるマシンを
聞いてみると、Pen3-600MHz辺りを使ってることが多い。
もうね。
動画エンコード厨だってそんな馬鹿はいない。
さっさと早いマシン買ってきます。
24デフォルトの名無しさん:04/08/02 09:00
3.6GHzのマシンでなくていいから、3GHzのマシンを用意しろということ。
もしくはAthlon64-3200とか。
今使ってるP42.8GHzでも遅いと感じるのですが、3GHzにすると改善されますか?
なんでもいいからPentiumMのデスクトップ/サーバを出してくれ。

Pen4はうるさすぎ。熱すぎ。
コンパイルにPentium4使ってる香具師ってアフォだろ。
Athlon64使えや。
マルチメディア関係はPentium4もAthlon64も同等レベルだけど、
普通の整数演算はAthlon64の方が速いんだから。
>>27
アフォもなにも、たかだかコンパイルくらいでマシンを買い換えられるわけないだろが。
29デフォルトの名無しさん:04/08/02 09:54
>>28
貧乏人
でも Pen4 の遅さには耐えられんべ
775のSocketになって何が変わったの?
マザボ買い換え需要が発生した
あなたのマシン買い換えをboostするライブラリ
まぁCPU買い換えてもっと生産性の高い言語に乗り換えるのも一つの見識ではあるな。
35デフォルトの名無しさん:04/08/02 13:38
そこでMLですよ!
>>28
たった数万の投資で年間の業務が快適になるわけだから、
正直買い渋ってるほうが損してると思われ。
快適になったからといって生産性があがるかというと……。
ねぇ体感で1Gと3Gのコンパイル速度どのぐらい違う?
まえに600Mから1.1Gに変えて余り変わらなかったんだけど
>>38
IOがとろいんだろ
RAMDISK1G作って電源入れっぱなしにしておけばちょっぱや
>39,40
んだ。E-IDEでストライプしてたんだけど、CPU上がってなかったからIOとは思ってた.
RAMDISKにしてCPU早いとまじはやくなる?
マジレスするとSDRが原因
HDDアクセスがあるってことは容量も足りて無さそう
タスクマネージャを最小化してタスクトレイにメーター表示しておくといいかも。
処理が重いときメーターが振り切ってればCPUが、振り切ってなければ
(ディスク)IOが遅い、またはスワップしているということが大まかに分かるよ。
ってWindowsスレじゃなかったな。
VCの場合Releaseビルドだと最適化でCPUが、
Debugビルドだと各種デバッグ用ファイルの出力でIOがネックになることが多いね。
4541:04/08/02 15:00
>42
SDRってめもりのこと?めもりもそのときは512Mでまぁまぁあまってたんだけど
とにかく書いてるから遅いってかんじではあった
boostを使うつもりが
boostに使われてるってなことになりそうで
怖いのでまだ使いません。
あなたはC++に使われてます
Boost library本買ったら著者が俺と同い年だった。
…軽く打つになった。ハァ。
49デフォルトの名無しさん:04/08/13 11:39
ネタスレあげ
まあ、いいじゃん遅いのはコンパイル時なわけで。
開発用のマシンぐらいせめて言いの使えば。
実行時におそく、全ユーザーのマシンにまで
高性能を要求しちゃう某言語よりはましでしょ。
spilitは実行時もflex+bisonより何十倍も遅かったりする
>>51
そりゃそうだけど、spilitにはBNFlikeな構文で
直接ソースに記述できるとか、動的なparserを
生成しやすいとかいろいろメリットがあるのでは?
それらのメリットに対するコストが実行時であるよりも
コンパイル時のほうがましでしょって事。
インターフェースも最近BOOST特集やってたぞ。
組み込みでもBoostが使われる時代になったか
組み込みだと「コンパイル時解決」が嬉しいしね。
組み込みのウンココンパイラでboostなんてコンパイル通るのか?
g++でしょ?
docomoの端末もg++みたいだよ。

そういえばembeded C++ってのはどうなったんだ?
携帯はもはや組み込みでは無い。
今の組み込みは情報家電とか車載コンピュータ
5957:04/08/15 23:53
え、車載も今はネットワーク(ベンツ仕様?)があって、大変だよね。
携帯端末の方が電源の縛りが合って軽くないかな。
あれ、これスレ違いだな。
>>57 embeded C++ イラネ
6157:04/08/16 22:49
>>60
多重継承ができないんだっけ?
http://www.caravan.net/ec2plus/spec.html

boostどころの騒ぎじゃないな…
62デフォルトの名無しさん:04/10/25 02:52:12
spiritはLL(\infty)パーザらしいね.
ANTLRとか,LL系の復活の兆しだろうか.

shared_ptrくらいならともかく,spiritになるとコード読んでもどこが何の処理なんだかも分からない...

「C++はCにオブジェクト指向の拡張を施したもの」っていう紹介止めようぜ.
最近のC++の流れ,テンプレートメタプログラミングは,OOPとほとんど関係ないし.
63デフォルトの名無しさん:04/10/25 18:47:34
spiritは構文木ベースで使うのと、
アクションベースで使うのどっちがいいの?
大規模になるほど構文木ベースの方が分かりやすいような気がする
64デフォルトの名無しさん:04/10/25 22:02:20
ワンパスでいいなら、アクションでやってもいいでしょ。
65デフォルトの名無しさん:04/10/26 18:08:05
>>62
釣りか?最近の流れっつけど、ぜんぜん主流じゃないし。
話題は多いけど、OOPLとしての用法があくまでベースだ。
おまえが興味を持って意図的にそっち方面の情報を目にしてるだけだろ。
66デフォルトの名無しさん:04/10/27 08:18:09
namespace boost { namespace spirit
{
この書き方いいね。
67デフォルトの名無しさん:04/10/28 23:10:27
>>65 なんかBoostのスレらしからぬレスに思えるが...  感じ方は人各々だけどね.



「作って分かるBoost C++テンプレートメタプログラミング」 刊行マダァ? > 誰かエロいひと
68デフォルトの名無しさん:04/11/01 17:46:43
boost::socket マダー?(AA略
69デフォルトの名無しさん:04/11/02 07:53:08
1.32はなんか問題でも見つかったのかな?
70デフォルトの名無しさん:04/11/02 08:48:43
71デフォルトの名無しさん:04/11/02 08:49:14
KNOWN ISSUES
------------

The following is a list of known issues present in the tarballs
which grant them their draft status:

1) A small number of unmarked test failures (but no regressions).

2) A small number of broken links as follows:

doc/html/date_time/doxy.html: broken link:
../../../boost/date_time/dst_transition_day_generators.hpp, broken link:
../../../boost/date_time/local_time_base.hpp
doc/html/date_time/posix_time.html: broken link: ../../../libs/date_time/doc/time_duration_inherit.png
doc/html/libraries.html: broken link: ../boost.pdf
libs/libraries.htm: broken link: ../boost.docbook, broken link: ../boost.fo, broken link: ../boost.pdf
libs/numeric/conversion/doc/converter.html: broken link: udt_support.html
libs/numeric/conversion/doc/converter_policies.html: broken link: udt_support.html


3) No documentation in PDF format ("boost.pdf"), due to some build
issues (I'll post separate email on this).

4) Placeholder pages in place of the revoked pre-1.32 MPL
documentation.

If you encounter any issues that are not in the above list, please
report them here!
72デフォルトの名無しさん:04/11/02 09:11:32
いつのまにかboost100%のコンパイラが、
icc-8.0,icc-8.1
CodeWarrior-9.3
の3つに変化してるね。
73デフォルトの名無しさん:04/11/02 09:12:36
良く見たらVC-7.1も100%だったわ。
74デフォルトの名無しさん:04/11/02 09:18:42
全部100%なのはWin版だけだけどな。
75デフォルトの名無しさん:04/11/02 09:52:11
いつの間にか-sTOOLS=vc7.1が-sTOOLS=vc-7_1になってるのに気がつかず
ビルドに1日ハマってしまった orz
76デフォルトの名無しさん:04/11/02 14:02:26
boost::socketまだかよ!
早くしろよ。
どうでもいい更新ばっかしやがって
77デフォルトの名無しさん:04/11/02 15:38:57
WxWidgetsとSDLとBoostとSTLがあればほとんどのプログラムが作れそうな予感
78デフォルトの名無しさん:04/11/02 15:47:15
>>77
あとOpenGL
79デフォルトの名無しさん:04/11/02 17:12:17
で、コンパイラとIDEはどうしますかと。
80デフォルトの名無しさん:04/11/02 17:30:00
>>79
IDE?何言ってんだ?
81大原ゆき:04/11/02 17:37:35
emacsで十分。
82デフォルトの名無しさん:04/11/02 17:37:46
>>79
コンパイラ?何言ってんだ?
83デフォルトの名無しさん:04/11/02 17:48:04
hexl-modeで十分
84デフォルトの名無しさん:04/11/02 17:59:50
エディタ?何言ってんだ?
85デフォルトの名無しさん:04/11/02 18:37:36
紙テープで十分
86大原ゆき:04/11/02 18:57:37
原始時代からいらっしゃった方ですか?
87デフォルトの名無しさん:04/11/02 19:07:07
原始時代?何言ってんだ?
88デフォルトの名無しさん:04/11/02 19:40:47
何言ってんだ?何言ってんだ?
89デフォルトの名無しさん:04/11/03 02:57:05
20年前位までは紙テープリーダーでメインフレームにデータ入力してた、そんな時代もあった。
90デフォルトの名無しさん:04/11/03 17:46:57
bjamって重いよね。
まあantはもっと重いけどさ
91デフォルトの名無しさん:04/11/03 17:59:48
boost.serlializationコンパイルしたら
libファイルが20MB近くあるぜ。カコイイ。
92デフォルトの名無しさん:04/11/03 18:03:01
>>91
実行ファイル何MBになるんだ…
93デフォルトの名無しさん:04/11/03 20:07:50
bccじゃserializationも動かないじゃないかヽ(`Д´)ノ ウワァァァン
94デフォルトの名無しさん:04/11/03 20:46:27
>>93
BCCにこだわるならboostは諦めろ。
95デフォルトの名無しさん:04/11/03 20:54:08
だから、boost::socket早く実装しろと言ってるだろ!
あれが無いと困るんだ!
いつまで俺にWinとLinuxのコンパチソースを書くときに毎回#ifndefとかウザいの書かせるんだ。
96デフォルトの名無しさん:04/11/03 20:54:21
え、なんでBCCでserlialization使えないの?
97デフォルトの名無しさん:04/11/03 22:58:13
>>95
別に待ってなくてもいいんだよ
contributeしたら?
98デフォルトの名無しさん:04/11/04 00:36:02
http://www.meta-comm.com/engineering/boost/1_32_0_draft/libs/serialization/doc/release.html
標準のspiritじゃ通らないからここに書いてあるとおりに1.6.1拾って設定してコンパイルしたが
やっぱり通らなかった。
結論…bcc-5.6.4はウンコ
99デフォルトの名無しさん:04/11/04 01:22:35
bjamでboostbuildする時プリコンパイルヘッダ使って欲しい
100デフォルトの名無しさん:04/11/04 15:07:56
boostの項目別に使い方を解説した辞書形式の日本語の本って無いですかね?
101本田:04/11/04 15:26:39
>>98
オープンソースを、自分の使っている処理系用に、
カスタマイズできない人も、ハイレベルじゃない。
102デフォルトの名無しさん:04/11/04 17:08:33
boostが標準で使えるコンパイラを教えてください
103デフォルトの名無しさん:04/11/04 17:11:17
104デフォルトの名無しさん:04/11/04 18:02:15
>>102
標準添付という意味ならんなもんない。
105デフォルトの名無しさん:04/11/05 00:22:43
>>100 Boost 稲葉 でググれ
106デフォルトの名無しさん:04/11/05 01:31:04
そ、それは…
107100:04/11/05 01:51:35
>>105
THXです。
早速amazonで注文してみます。
108デフォルトの名無しさん:04/11/05 10:58:06
>>100
新しく紹介本を書く予定です。ドゾヨロシク
「ウホッ!いいboost やらないか?」
109デフォルトの名無しさん:04/11/05 11:11:52
こんなところでウホッとか書いて大丈夫か?
もしかしてエピ公?
110デフォルトの名無しさん:04/11/05 11:29:00
反応してんじゃねーよ
111デフォルトの名無しさん:04/11/06 07:52:25
112デフォルトの名無しさん:04/11/06 12:49:38
weekendはまだですか?
113デフォルトの名無しさん:04/11/06 12:57:23
世界のweekendはまだです
114デフォルトの名無しさん:04/11/06 13:04:39
誰がブスなのよ!?
115デフォルトの名無しさん:04/11/06 15:23:33
>>114
おまえの彼女。
116デフォルトの名無しさん:04/11/07 14:02:57
uBLAS ってどう読むの?
117デフォルトの名無しさん:04/11/07 16:57:00
>>116
ウブラス
118デフォルトの名無しさん:04/11/07 17:48:28
boost の thread を使おうとしているのですが、
ビルドして実行すると,
boost_thread-vc71-mt-gd-1_31.dll が見つからなかったため、
このアプリケーションを開始できませんでした。アプリケーションを
インストールしなおすとこの問題は解決される場合があります。

というメッセージが出てしまいます。どうしたらよいのでしょうか。

環境は WindowsXP VC7.1 です。
119デフォルトの名無しさん:04/11/07 17:50:55
アプリケーションをインストールしなおすとこの問題は解決される場合があります。
120デフォルトの名無しさん:04/11/07 17:55:18
>>119
この場合のアプリケーションは boostのことをさすのでしょうか。
一応、....vc7\lib フォルダの中に boost_thread-vc71-mt-gd-1_31.dll ファイルは
見つけられるのですが。。
121デフォルトの名無しさん:04/11/07 17:58:21
regsvrでだめなら全部入れなおしたらー
122デフォルトの名無しさん:04/11/07 17:59:21
>>120
パスが通ってないライブラリをどうやってOSが見つけられるというのだ
123デフォルトの名無しさん:04/11/07 19:00:41
dllを実行ファイルと同じフォルダに入れてください
124デフォルトの名無しさん:04/11/07 19:19:31
>>121-123
環境変数を設定したらできました。
ありがとうございます。
125Rubykitch:04/11/07 19:21:06
boostユーザってこの程度かwww
126デフォルトの名無しさん:04/11/07 23:54:38
茶化すつもりはないが、boosl使う以前の問題だと思う。
でも、たぶんプログラム初心者なんだろう。その中でboostを使おうとするその心意気やよし。
127デフォルトの名無しさん:04/11/07 23:57:50
>>126
× プログラム初心者
○ プログラミング初心者
128デフォルトの名無しさん:04/11/08 00:54:46
どうしたらboosl使えるようになれますか?
129デフォルトの名無しさん:04/11/08 01:54:31
怪獣boost

なんちゃってなんちゃって
130デフォルトの名無しさん:04/11/08 09:20:06
weekendはまだですか?
131デフォルトの名無しさん:04/11/08 11:59:20
世界の終末はまだです
132デフォルトの名無しさん:04/11/12 12:13:17
┐(´〜`)┌
133デフォルトの名無しさん:04/11/12 12:34:50
アメリカがファルージャを空爆しまくってるので世界の終末は一歩近づきました。
134デフォルトの名無しさん:04/11/12 12:57:59
>>133
ブッシュが再選したので世界の終末が一歩進みました。
135デフォルトの名無しさん:04/11/12 13:03:34
一つ大きな問題を発見してしまった。

それは、世界の終末にリリースされても、
使う暇がないのでは無いだろうかという事だ。
136デフォルトの名無しさん:04/11/12 14:00:48
                 2046
137デフォルトの名無しさん:04/11/12 15:05:31
アラファトが死んだので世界の終末が一歩退きました。
138デフォルトの名無しさん:04/11/13 05:09:36
weekendって曲がエンドレスで頭の中でかかってます
139:04/11/13 13:04:12
がぁん……weak_ptrのget()て無くなったのね……
プログラム直さなきゃ……
140デフォルトの名無しさん:04/11/14 23:28:39
weekendまだ―
141デフォルトの名無しさん:04/11/14 23:57:55
もうちょっと待って!!
142デフォルトの名無しさん:04/11/16 10:07:35
boostをvcに入れるにはどうしたらいいのでしょうか?
143デフォルトの名無しさん:04/11/16 11:24:45
レイプ
144デフォルトの名無しさん:04/11/16 19:00:43
>>142
「boost インストール」でググって見る。
145デフォルトの名無しさん:04/11/18 00:07:39
もう17日過ぎちゃったよママン
146デフォルトの名無しさん:04/11/18 00:09:25
Rubyに乗り換えて幸せ。
147デフォルトの名無しさん:04/11/18 02:01:02
boostかRubyかっていう選択肢だったのか?
148デフォルトの名無しさん:04/11/18 02:13:45
rubyはネタ言語
149デフォルトの名無しさん:04/11/19 00:14:53
boost、それは忍耐
150デフォルトの名無しさん:04/11/19 00:27:16
boost、それは夢

// 本出たね。Depthシリーズで。
151デフォルトの名無しさん:04/11/19 09:53:56
boostはみんなCVSで更新してるから、リリース版なんて
どうでもいいって思ってるんじゃないの?<中の人
リリースするとバグだなんだっていろいろ言われて
ウザイだけだし。CVSならそのときにすぐ対応できるしね。

というわけで、CVS版をゲットしてメーリングリストにも
入って開発の流れをよく見るべきですな。
152デフォルトの名無しさん:04/11/19 10:27:17
>>151
はいはい。ご自由に。
153デフォルトの名無しさん:04/11/19 22:13:26
1.32は結局出ませんでした
154デフォルトの名無しさん:04/11/20 13:46:15
Latest News
November 19, 2004 - Version 1.32.0
155デフォルトの名無しさん:04/11/20 15:19:54
>154
ネタはもう良いって( ´,_ゝ`) プッ
156デフォルトの名無しさん:04/11/20 15:37:27
1.32.0 キタ━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(゚  )━(∀゚ )━(゚∀゚)━!!!!
157デフォルトの名無しさん:04/11/20 15:53:36
自分は今ビルド中
うはー夢が広がりんぐ
158デフォルトの名無しさん:04/11/20 16:19:29
Gentooの1.32のebuild早くこないかな
http://www.gentoo-portage.com/dev-libs/boost
159デフォルトの名無しさん:04/11/20 17:49:03
borlandでのSerializationのビルドの成功した方いらっしゃいますか?
libs/serialization/doc/release.html#Platforms
を参考にSPIRIT_ROOTを設定してbjamを実行しているのですが、

borland-C++-action bin\boost\libs\serialization\build\libboost_serialization.lib
\borland-5_6_4\debug\runtime-link-static\xml_grammar.obj
E:\boost_1_32_0\libs\serialization\build\../src/xml_grammar.cpp:
致命的エラー F1003 E:\boost_1_32_0\boost/spirit/core/config.hpp 56: error 指令:
"Compiler not supported. See note in <boost/spirit/core/config.hpp>"
*** 1 errors in Compile ***

"bcc32" -j5 -g255 -q -c -P -w -Ve -Vx -a8 -b- -DBOOST_TEST_NO_AUTO_LINK=1
-v -Od -vi- -tWC -WM- -DBOOST_ALL_NO_LIB=1 -w-8001 -I"bin\boost\libs\serializ
ation\build" -I"E:\spirit-1.6.1" -I"E:\boost_1_32_0" -o"bin\boost\libs\serial
ization\build\libboost_serialization.lib\borland-5_6_4\debug\runtime-link-static
\xml_grammar.obj" "E:\boost_1_32_0\libs\serialization\build\../src/xml_grammar.
cpp"

...failed borland-C++-action bin\boost\libs\serialization\build\libboost_seriali
zation.lib\borland-5_6_4\debug\runtime-link-static\xml_grammar.obj...
borland-C++-action bin\boost\libs\serialization\build\libboost_serialization.lib
\borland-5_6_4\debug\runtime-link-static\xml_iarchive.obj
E:\boost_1_32_0\libs\serialization\build\../src/xml_iarchive.cpp:
致命的エラー F1003 E:\boost_1_32_0\boost/spirit/core/config.hpp 56: error 指令:
"Compiler not supported. See note in <boost/spirit/core/config.hpp>"
*** 1 errors in Compile ***

っていわれちゃって。
どうも、元のboostを見に行っているらしく。
160デフォルトの名無しさん:04/11/20 21:16:41
161デフォルトの名無しさん:04/11/20 22:36:48
>>159はマルチ
162デフォルトの名無しさん:04/11/20 22:37:27
163デフォルトの名無しさん:04/11/21 14:14:41
>>161はセリオ
164デフォルトの名無しさん:04/11/21 14:35:16
BCCなんか捨てちゃえ
165デフォルトの名無しさん:04/11/21 14:43:58
>>163はセバスチャン
166デフォルトの名無しさん:04/11/21 14:44:27
やっぱ隔離スレは格が違うね
167デフォルトの名無しさん:04/11/21 14:44:43
boostを勉強したいのですがよい本を教えてください
168デフォルトの名無しさん:04/11/21 14:47:18
できるboost
169デフォルトの名無しさん:04/11/21 14:49:48
>>167
boostの何を勉強したのか言って無いから範囲広すぎ
170デフォルトの名無しさん:04/11/21 14:50:40
Boostの使いこなしはBOOST_PPから始まるといっても過言ではないな。
C++の勉強よりも前に、Cでこれを十分使いこなしてからC++に移行するのが正しい。
171デフォルトの名無しさん:04/11/21 14:51:18
Let's boostあたりで一通りどんなことが出来るのか目を通しておいて
実際に使いたくなった時に該当箇所を詳しくリファレンスで見るだけで十分
172デフォルトの名無しさん:04/11/21 14:55:30
やさしいboost
173デフォルトの名無しさん:04/11/21 17:23:43
>>167
boostの前にC++の勉強を真面目にしたほうが良いと思う。 Scott Meyersの
Effectiveシリーズあたりがいいかな。 オブジェクト指向プログラミングと
テンプレートの使い分けとか、C++固有の作法とか知らないとboostは使い
こなせない。 STLもだけど。 boostはかなりマニアックなライブラリもあるので
必要なものだけピックアップして使えばいい。 Modern C++ Designにあるような
テクニックは実際には使うべきではないと思う。 あまりに複雑すぎるし、途中で
破綻しているものもある。
174デフォルトの名無しさん:04/11/21 17:25:47
るby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ぼおst
175デフォルトの名無しさん:04/11/21 17:49:55
STLを勉強してからboost::shared_ptrやboost::bindと併せて使うといいと思います。
ていうか私もformatとこれら3つぐらいしか使ってない・・・
176デフォルトの名無しさん:04/11/21 18:10:56
>>173
>Modern C++ Designにあるような
>テクニックは実際には使うべきではないと思う。

テンプレートライブラリを書こうと思うなら必須のテクニックなのでは?
またアプリケーションをテンプレートライブラリを作るかのように、
書くためのポリシーというテクニックを使いこなすためには、あの本のテクニックは
欠かせないですね。まあ私は使{い,え}ませんけど。
177デフォルトの名無しさん:04/11/22 01:02:51
>>167
3時間でわかるBOOST
17852:04/11/22 01:19:36
>>167
日経BOOST
179デフォルトの名無しさん:04/11/22 01:23:36
CVSスレでやったようなネタはもういいって。
180デフォルトの名無しさん:04/11/22 01:23:46
boostマスターズクラブ
181デフォルトの名無しさん:04/11/22 01:53:33
>>176
あの本はマニアック過ぎて。 もちろん使えるものもあるけど。
メモリーアロケータとかってデフォルトのnew演算子より遥かに遅かったりして。
シングルトンもなーんか訳わかんないし。 実際あの本をちゃんと判っている奴は
ほとんど居ないんじゃないか? 折れの指導教官も日本でソフトウェアエンジニアリング
をちゃんとわかっているやつは数えるほどしか居ないって言ってたし。 著者が
そのレベルまで達しているかは判らん。

あとC++を勉強するときにはエラーハンドリングもちゃんと勉強しておいた方がいい。
エラーハンドリングをちゃんと扱える奴ってあんまりいないからな。 そこらへんは
Exceptional C++に病的なくらいクドクドと書いてあるが。
182デフォルトの名無しさん:04/11/22 03:52:46
1.32.0が来てる。 9ヶ月ぶりのアップデートか。 全然気がつかなかった。
templateの方では大騒ぎになっている。

http://sourceforge.net/project/showfiles.php?group_id=7586
183デフォルトの名無しさん:04/11/22 04:19:46
>>182
残念、ここでも激しくガイシュツだ
184デフォルトの名無しさん:04/11/22 09:40:16
185デフォルトの名無しさん:04/11/23 16:10:36
あれくらいで大騒ぎとはよほどC++ユーザーって少な(ry
186デフォルトの名無しさん:04/11/23 17:45:07
bjamでboostビルドするとベンチマークに出来そうな位時間かかるな。
187デフォルトの名無しさん:04/11/23 18:15:11
bjamでビルドするとNTFSだとハードリンクしてくれて頭(・∀・)イイ!
188デフォルトの名無しさん:04/11/24 00:45:35
VCtoolkitだとdate_timeとregexがコンパイル通らないのは漏れだけ?
VC6だと通るから謎すぎる
189デフォルトの名無しさん:04/11/24 00:49:02
ここはcppllの遅延付ミラーですか?
190デフォルトの名無しさん:04/11/24 14:39:09
boostにはソケット関連のライブラリは無いのでしょうか。
191デフォルトの名無しさん:04/11/24 14:44:17
>>190
boost::socket なるものは存在するけど、
CVSでもsand-box扱い
192デフォルトの名無しさん:04/11/24 14:47:33
boostは、C++のコンパイラを入れると必ず入っているのでしょうか。
193デフォルトの名無しさん:04/11/24 14:48:40
入ってない
194デフォルトの名無しさん:04/11/24 15:12:54
boostは、あるクラスだけ取り出して組み込むということはできますか?
195デフォルトの名無しさん:04/11/24 15:21:48
>>194
アホかお前
196デフォルトの名無しさん:04/11/24 15:23:16
ここは隔離スレ
197デフォルトの名無しさん:04/11/24 16:08:24
結局boostは、一生かかっても標準ライブラリにはなれないんですね。
198デフォルトの名無しさん:04/11/24 16:21:03
一部は次期標準に入るそうですよ
199デフォルトの名無しさん:04/11/24 16:25:06
標準に入ればGCCやVCのSTLにBoostの一部が含まれるってことだよな?
200デフォルトの名無しさん:04/11/24 16:26:18
そういうことになるね
201デフォルトの名無しさん:04/11/24 16:54:23
1年後boostは、C++のコンパイラを入れると必ず入っているのでしょうか。
202デフォルトの名無しさん:04/11/24 17:57:19
>188
Platform SDKは導入してますか?導入してないとVCTKでは通りませんよ.
http://www.kmonos.net/pub/BoostBook/vctk.html

>201
1年後はゼッタイに無理.
203Rubykich:04/11/24 17:59:23
boostが標準になる頃はもうC++なんか見向きもされなていないだろうなwwww
204デフォルトの名無しさん:04/11/24 21:09:25
>>203
山田君、座布団一枚追加してあげて
205デフォルトの名無し:04/11/24 21:25:55
BoostをWideStudioで使いたいのですが、インストール方法をご存知な方いませんか?
206デフォルトの名無しさん:04/11/24 22:03:33
>>204
mingwと同じ。以上。
207206:04/11/24 22:04:14
>>205だった。
208デフォルトの名無しさん:04/11/24 23:18:36
>>202
いれてあるよ。
ていうか1.31は全部通ってたしそういう問題はないと思う。

と、いまやり直したらregex通って代わりに
serializationが通らなくなった。
ワケワカンネェ
209デフォルトの名無しさん:04/11/26 02:04:53
アァン、boost::lambda遅すぎですよ?
普通にforループでイテレータ使うのに比べて、10倍も遅いってどういうこと。
210デフォルトの名無しさん:04/11/26 02:53:49
211デフォルトの名無しさん:04/11/26 03:16:14
>>210
thx。
そもそも-O3以上だからinline展開は当然されてるよな? と思ったが、アセンブリ出力を見るに
do_nothing()をcallしてる模様。
ライブラリに手を入れるのはパッケージが更新されたときに面倒そうだけど、お試しでやってみた。
...
わーお、書き換える前は11倍だったのが、7倍にまで短縮された。
5倍くらいにまで縮んだのもあるよー。
212209=211:04/11/26 03:21:46
ごめんなさい、嘘吐いてました。
boost::lambdaのところだけ、その前のテストに使ってたstd::sort()が挟まってました。
std::sort()を抜くと、ほとんど差はありませんでした。
lambdaの中の人ごめんなさい。
210の人ごめんなさい。
>>1-1000 生きててごめんなさい。
213209=211:04/11/26 05:20:09
追加。
単純なlambda式の場合、イテレータよりも早いです。
214デフォルトの名無しさん:04/11/26 23:26:05
GentooにBoostこねーーーーーーー
215デフォルトの名無しさん:04/11/26 23:28:06
boostなんて自分でいれればいいじゃん
216デフォルトの名無しさん:04/11/27 18:53:53
>>215
ebuildくれ
217デフォルトの名無しさん:04/11/27 20:29:39
ebuildなんて使わなくてもbjam使えばいいじゃん
218一星 ◆Cppn/.YI3. :04/12/02 19:39:09
operatorsが気に入った。
219デフォルトの名無しさん:04/12/07 06:19:22
Named Parameters Libraryがrebiewとおったか。
220デフォルトの名無しさん:04/12/11 13:42:26
221デフォルトの名無しさん:04/12/11 15:22:46
と思ったらこれと同じ症状に。これが解決するまで
やめといたほうがいいかも。
http://bugs.gentoo.org/show_bug.cgi?id=74048
222デフォルトの名無しさん:04/12/11 15:38:32
1.31と1.32のebuildを比べたら、
./tools/build/jam_src/bin.linux${arch}/bjam -j2 \ (1.31)
./tools/build/jam_src/bin.linux/bjam -j2 \ (1.32)

と${arch}が抜けています。
work以下のファイルを見ればtools/build/jam_src/bin.linuxx86/以下に
jam,bjamが生成されているので、これでは上手くいきません。
1.32のebuildを1.31のように修正(2箇所)したら上手くいきました。一応報告。
223デフォルトの名無しさん:04/12/11 15:51:24
ごめん訂正。${ARCH}と大文字でないとだめずら。何度もスマソ。
1.31はなんで上手くいくんだろ。わけ分らん。
224デフォルトの名無しさん:04/12/12 08:55:11
前に FileSystem 使ってみたけど日本語ファイル名で問題があった覚えが。
いま、どーなってんの?>そこら辺。
225デフォルトの名無しさん:04/12/12 14:09:42
>>224
少し前にcppllに流れてたねその話。
俺はboost::filesystemが責任を持ってwstringで返すのが正解だと思うよ。
226デフォルトの名無しさん:04/12/12 16:25:59
Lokiの機能はBOOSTで全部カバーされてるの?
227デフォルトの名無しさん:04/12/12 16:51:26
typelistあったっけ
228デフォルトの名無しさん:04/12/12 16:55:20
>>226
全然。
singletonとかabstractFactoryなんかはない。

>>227
boost::mplにリストがある
229デフォルトの名無しさん:04/12/12 16:58:41
>>228
mplか、thx
230デフォルトの名無しさん:04/12/21 14:28:34
ところで次のC++の標準化っていつごろになるんでしょうか?
231デフォルトの名無しさん:04/12/21 16:06:24
>>230
ISOの改訂が5年おきだから、次は2008年じゃないかと
232デフォルトの名無しさん:04/12/21 16:10:42
次の改訂に入るのが確定しているboostの機能一覧ってどこでしたっけ?
どこかで見かけたんだけど、忘れてしまった。
233デフォルトの名無しさん:04/12/21 17:00:31
234デフォルトの名無しさん:04/12/21 17:06:41
あれ、Regexも入るのか?
235232:04/12/21 17:13:26
>>233
ありがとう。
bind入るのか。なんか間違ってる気がするが……。言語の方でサポートするべきでは。
randomは嬉しいなぁ。自分で入れなくて済む。
236デフォルトの名無しさん:04/12/21 17:26:25
>>235
そうか?ライブラリで出来る事はなるべくライブラリにやらせた方が良いと思うけど。

個人的にはfunctionが嬉しい。
237デフォルトの名無しさん:04/12/21 17:39:10
>>236
全部を言語でやれって言ってるんじゃなくて、


template<class A1> class list1
template<class A1, class A2> class list2
...
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class list9

bind.hppでこういうことを書かなくて済むようにしてもらいたいなーってこと。
238デフォルトの名無しさん:04/12/21 17:45:21
boost.arrayも標準に欲しいのだが……
239デフォルトの名無しさん:04/12/21 17:47:11
vectorあれば十分じゃん
240デフォルトの名無しさん:04/12/21 17:48:11
Tupleが標準に入ると戻り値だらけの糞コードが増えそうだな
241デフォルトの名無しさん:04/12/21 17:58:29
>>237
なるほど。
でもboost::preprocessor使えば簡単に生成できる訳で…
242デフォルトの名無しさん:04/12/21 18:07:10
>>241
じゃあboost::preprocessorも標準に入れちゃえばいいわけか。

# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1(s, p, o, m) 0
# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_2(s, p, o, m) 0
...
# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s, p, o, m) 0

……preprocessorの方がひどいやん。
243デフォルトの名無しさん:04/12/21 23:25:33
大文字で長ったらしいのやめてほしい
244デフォルトの名無しさん:04/12/21 23:39:40
>>243
何のためにそうなっていると思っているんだ?
245デフォルトの名無しさん:04/12/22 08:48:43
大文字が好きだからだろ
246デフォルトの名無しさん:04/12/22 09:00:06
boost本は買う価値ある?
247デフォルトの名無しさん:04/12/22 09:07:23
魏末晋初の丞相ほか高官を歴任した
248デフォルトの名無しさん:04/12/22 16:17:00
>>246
使い方をAPIレベルでざっと知りたいなら、財布と相談して買うか決めれ。
Boost内部のしくみや応用/実践的な使い方が知りたいなら、そういう本ではないので。
249デフォルトの名無しさん:04/12/22 17:21:34
本当に使いこなしたいなら、ソース読むしかない
250デフォルトの名無しさん:04/12/23 01:15:40
boostを言語仕様に取り込んだ新言語作ればいいのに。
字面汚すぎ。
251デフォルトの名無しさん:04/12/23 01:27:19
>>250
そんな事をしたら、ただでさえ規模の大きなC++よりも、もっと規模の大きな言語が必要にならないか?
252デフォルトの名無しさん:04/12/23 01:48:10
rubyさいこー
253デフォルトの名無しさん:04/12/23 02:35:25
>>251
無名関数とプリプロセッサの制御構造があれば、かなりいけるんじゃない?
254デフォルトの名無しさん:04/12/23 02:57:58
ブーストポッド作動
エンジン臨界点までカウントスタート
255デフォルトの名無しさん:04/12/23 08:14:17
>>248
そういう本かWEBサイトない?日本語で。
256デフォルトの名無しさん:04/12/23 12:30:11
英語読めない香具師って損だね
257デフォルトの名無しさん:04/12/23 18:35:27
英語が読めないならソースを読めばいいのにな
258デフォルトの名無しさん:04/12/23 20:44:13
>>257
自然言語の説明を読めば方針が解かって、ソースを読む手助けになる。
259デフォルトの名無しさん:04/12/23 20:47:14
無名関数がどうのって、そこまで無名関数が使いたいならLisp使えよ。
さもなければ、camlかな。camlはCほどではないがC++よりは速いらしいよ。
オブジェクト指向でプログラミングしたければOCamlもある。
260デフォルトの名無しさん:04/12/23 20:58:13
いやそうぢゃなくて、C++の機能や資産はそのまま使いたくて
しかもそれに加えて無名関数とかも使いたいっていうことな
んじゃないの?
261デフォルトの名無しさん:04/12/23 21:06:07
痛い人は放置の方向で。
262デフォルトの名無しさん:04/12/24 15:22:14
>>258
公式ページを翻訳かければ良いじゃん。
最近はweb翻訳があるから英語サイトなら直訳の駄文を更に意訳すれば大抵のサイトは読める。
263デフォルトの名無しさん:04/12/24 15:32:27
そうだね
264デフォルトの名無しさん:04/12/24 16:55:37
>>262
英語は自然言語の部分。
日本語は自然言語の部分。
朝鮮語は(ry
265デフォルトの名無しさん:04/12/24 17:49:55
意図が読めないぞ
266デフォルトの名無しさん:04/12/25 04:11:08
ハングルから日本語への機械翻訳が的確すぎる件について
267デフォルトの名無しさん:04/12/25 04:39:30
>>266
ハングルは文字ですが……。
普通は朝鮮語。
268デフォルトの名無しさん:04/12/25 07:03:25
公共放送NHKでハングル講座という番組名で放送している件について
269デフォルトの名無しさん:04/12/25 07:55:53
>>268
その話を持ち出してくるって事は、あらすじ知ってるんだろう。
ここboostのスレッドだから、その話は別のところでやっとくれ。
270デフォルトの名無しさん:04/12/25 09:35:24
BOOSTをMacのCodeWarriorでコンパイルした人なんて
いないでしょうか…

OS Xのgcc用にはbjamがあるので簡単なんだけどCW用
にはbjamがないのでどうしたらいいか誰か知りませんか?
271デフォルトの名無しさん:04/12/25 09:37:15
>>269
俺はハングル講座で勉強していたが、いつも疑問に思っていた。
知ってるなら話の経緯を教えてくれ。
272デフォルトの名無しさん:04/12/25 10:43:28
ハングルって文字だったのか。

日本語でいうカタカナ、ひらがな、のようなモノか?

カタカナ講座、ひらがな講座、…ありえなくはないんじゃないか
273デフォルトの名無しさん:04/12/25 10:46:15
↓これはちょっと古いけど、探せばあるんじゃないの? boost-base.jam
http://lists.boost.org/MailArchives/boost/msg23812.php
274デフォルトの名無しさん:04/12/25 12:15:58
朝鮮語を表すために作られたのがハングルだろ。
それにハッカーが誤用で悪の烙印を押されてるこんな世の中でNHKの番組名が「はいそうですか」とあてになるわけ無いだろ。
275デフォルトの名無しさん:04/12/25 16:06:47
そろそろうんこしてシャワー浴びて出かけるかな
276デフォルトの名無しさん:04/12/25 16:45:44
>>271
期毎の初回に小倉がやんわりとした説明してるけど、
要は「朝鮮語講座」もしくは「韓国語講座」っていうと北韓国もしくは南朝鮮な連中がギャアギャア騒ぐから、
ヘタレなNHKは「ハングル講座」って名前にして逃げてるってだけの話。
277デフォルトの名無しさん:04/12/25 17:48:30
なるほどBOOST!(w
278デフォルトの名無しさん:04/12/25 17:49:51
>>276
北朝鮮なんかまともな国じゃないんだから放っておけば良い。
279デフォルトの名無しさん:04/12/25 22:41:36
BOOSTなんかまともなライブラリじゃないんだから放っておけば良い。
280デフォルトの名無しさん:04/12/25 22:45:20
C++なんてまともな言語じゃないんだから放っておけば良い。
281デフォルトの名無しさん:04/12/25 22:49:37
さっさとC++の代わりとしてD言語が普及すればいいのだが
いつになるのやら…
282デフォルトの名無しさん:04/12/25 22:50:12
おまえが現役の間は無理
283デフォルトの名無しさん:04/12/25 22:55:00
>>282
orz
284デフォルトの名無しさん:04/12/26 12:37:33
C#でいいやん
285デフォルトの名無しさん:04/12/26 12:51:17
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C# >>>>>>>>>>>> Java
286デフォルトの名無しさん:04/12/26 12:53:03
BOOSTってDelphiで使えませんか?
287デフォルトの名無しさん:04/12/26 13:04:09
>>286
BOOSTって何か知ってる?
288デフォルトの名無しさん:04/12/26 13:08:32
boostは死ぬほど貧弱なC++のライブラリを
どうにか並程度まで引き上げる為のものだから
最初から超強力なライブラリを備えたDelphiにはそもそも不必要だよ。
289デフォルトの名無しさん:04/12/26 13:14:33
>>281
boostを一からD言語用に書き直してもまだお釣りが来るくらいの未来。
290デフォルトの名無しさん:04/12/26 15:54:02
せめて string algorithms library が時期標準に入ってくれればなあ
291デフォルトの名無しさん:04/12/26 16:16:15
そもそもその次期標準っていつくるねん。
292デフォルトの名無しさん:04/12/26 16:22:56
2009年
293デフォルトの名無しさん:04/12/26 16:32:57
2008に一票
294デフォルトの名無しさん:04/12/27 07:38:11
その前にC++が使われなくなってる予感!!
295デフォルトの名無しさん:04/12/27 07:54:37
>>294
と、C++もBoostも全く理解できないアホが吠えております。
296デフォルトの名無しさん:04/12/27 15:13:50
>>295は新しいことにチャレンジ出来ない年齢です。
297デフォルトの名無しさん:04/12/27 16:19:14
>>294>>296
自分がバカだからと言って、人に当たるのはよせ。
298デフォルトの名無しさん:04/12/27 17:07:12
ワラ
299デフォルトの名無しさん:04/12/29 16:21:18
let's boost が…
> XML error: not well-formed (invalid token) at line 38
300デフォルトの名無しさん:04/12/29 21:10:16
見えてるけど…?
301デフォルトの名無しさん:04/12/29 21:12:44
ニュース
302デフォルトの名無しさん:04/12/29 21:16:11
本当だ_| ̄|○
303仕様書無しさん:05/01/14 21:56:59
VisualStudio 2005でboostはコンパイルできますか?できるんなら2005買おうと思ってるんですが、とりあえず今のExpress版で動かした人います?
304デフォルトの名無しさん:05/01/14 22:23:32
2005うってないし
305デフォルトの名無しさん:05/01/16 14:07:57
>>304
betaって言葉はご存知ですか?
306デフォルトの名無しさん:05/01/16 14:20:34
>>305 Betaってうってるんですか?
307デフォルトの名無しさん:05/01/16 14:22:19
306:デフォルトの名無しさん:05/01/16 14:20:34
>>305 Betaってうってるんですか?
308デフォルトの名無しさん:05/01/16 14:22:47
307:デフォルトの名無しさん:05/01/16 14:22:19
306:デフォルトの名無しさん:05/01/16 14:20:34
>>305 Betaってうってるんですか?
309デフォルトの名無しさん:05/01/16 14:23:19
308:デフォルトの名無しさん:05/01/16 14:22:47
307:デフォルトの名無しさん:05/01/16 14:22:19
306:デフォルトの名無しさん:05/01/16 14:20:34
>>305 Betaってうってるんですか?
310デフォルトの名無しさん:05/01/16 14:23:57
久々にスレが伸びてると思ったら、これかよ。
311デフォルトの名無しさん:05/01/16 14:31:34
>>307何勘違いして揚げ足取ってんだよ。>>306は皮肉だろうが
312デフォルトの名無しさん:05/01/16 15:04:13
>>307
>>303はβを買うつもりらしいが。
313デフォルトの名無しさん:05/01/16 15:51:42
>>303はExpressのbetaで動くなら製品版も買おうと思ってるって意味だろ
314デフォルトの名無しさん:05/01/19 05:01:43
boostってライブラリとしてはもうネタ切れ?
これからはいかに活用していくかってことを皆考えてるの?
315デフォルトの名無しさん:05/01/19 07:38:35
皆って誰のことよ
316デフォルトの名無しさん:05/01/19 16:46:17
ブースと野獣
317デフォルトの名無しさん:05/01/19 18:49:01
次期バージョン入りorレビューを待ってるネタがまだいくつかあるけど。
ttp://boost.org/more/formal_review_schedule.html
318デフォルトの名無しさん:05/01/19 22:08:13
うひょ.typeofレビュー待ちキューに入ったのか.
319デフォルトの名無しさん:05/01/23 21:10:59
struct Parent {
 shared_ptr<Child> pChild;
 SetChild(shared_ptr<Child> p);
};

struct Child {
weak_ptr<Parent> pParent;
320デフォルトの名無しさん:05/01/23 21:19:50
すまんしくじりました。
↓のように親が子供をもつんだけど、子供からも親へのバックポインタを
もつ場合の話です。

class Parent {
 shared_ptr<Child> pChild;
public:
 SetChild(shared_ptr<Child> p);
};

class Child {
 weak_ptr<Parent> pParent;
 SetParent(shared_ptr<Parent> p) { pParent = p; }
 friend Parent;
}

Parent::SetChild(shared_ptr<Child> p) の中から Child::SetParent() を呼ぶ必要があるのに
呼び出せなくて困ってます。(shared_ptr<Parent>(this) とかやりたい・・・)

ってことで今は メンバ関数はあきらめて、↓のようなスタティックメンバ関数用意してます。
Parent::SetChild(shared_ptr<Parent> pThis, shared_ptr<Child> p) {
 pThis->pChild = p;
 p->SetParent(pThis);
}

他にうまい手があったらどなたかご教示ください。
321デフォルトの名無しさん:05/01/24 00:31:39
>>320
一応boostでは
#include <boost/enable_shared_from_this.hpp>
class Parent : public enable_shared_from_this<Parent>

としておけば、

SetChild(shared_ptr<Child> p) {
pChild = p;
pChild->SetParent(shared_from_this()); // shared_ptr<Parent>(this) を生成
}

と書けますが、shared_from_thisが有効なのは、呼び出し元のオブジェクトからweak_ptrが生成できる場合
(shared_ptr<Base>からの呼び出し)に限ります。

Parent p;
p.SetChild(...); // bad_weak_ptr

shared_ptr<Parent> p(new Parent);
p->SetChild(...); // OK

使い勝手は良くないですね
322320:05/01/24 01:18:05
>>321

情報サンクス。
enable_shared_from_this の実装みて感動しました。
自身を指すweak_ptr をメンバで隠しもってるんですね。
頭いいなあ。
323デフォルトの名無しさん:05/01/26 19:36:16
仕事で作るソフトにboost使ってるやついる?

STLは正式に標準仕様に加えられたから遠慮なく使えるが
Boostはどうなのよ
324デフォルトの名無しさん:05/01/26 20:03:16
>STLは正式に標準仕様に加えられたから遠慮なく使えるが
そうでもないよ
325デフォルトの名無しさん:05/01/26 20:35:26
外部ライブラリを必要とするやつは使ってないけど
スマートポインタ等は一部で使ってる
326デフォルトの名無しさん:05/01/26 22:57:40
>>323
使ってるよ。
次期標準ライブラリです。
と言ったら使わせてくれた。
327デフォルトの名無しさん:05/01/26 23:07:38
時期標準でなくとも使えるものは使ったらいい
328デフォルトの名無しさん:05/01/27 02:10:17
上司が石頭で使わせてもらえない場合もあるだろ
将来性のあやしいサードパーティー製のライブラリなんかよりは
ずっといいとおもうのだが、毛嫌いする会社もある
329デフォルトの名無しさん:05/01/27 03:15:11
boost を bjam でコンパイルすると巨大なライブラリファイルがいくつも
出来ますが、libboost_filesystem でも、 mt やら sd やら 1_32 やらが色々
名前の後に付いている物が色々出来ますが、これらは一体どう違うのでしょう?
mt はきっと multi-thread なのかなぁとかは思うのですが、他が何の事やらさっぱり…
330329:05/01/27 03:16:49
いきなりですが、こんなの見付けました。お騒がせしました m(_ _)m
http://www.boost.org/more/getting_started.html#Results
331デフォルトの名無しさん:05/01/27 03:31:17
boost1.32をMetrowerks CodeWarrior for Windows v8.3でinstallする
場合についての質問です。
installするとライブラリがすべて-cw-の名前になるにもかかわらず、
-cw8-でリンクしようとするのは何故ですか?bjamの設定ファイルの
バグでしょうか?教えてください。お願いします。
332デフォルトの名無しさん:05/01/27 07:59:42
signalsのシングルスレッド版がdll,staticlink用libともに生成されないのですが
こういうものなのでしょうか? 引数は以下の通り渡しました
bjam -sTOOLS=vc-7_1-stlport "-sBUILD=release debug <runtime-link>static/dynamic <threading>single/multi <native-wchar_t>on" stage
333デフォルトの名無しさん:05/01/27 11:36:43
signalsの処理にスレッドが必要なので
334デフォルトの名無しさん:05/01/27 22:44:27
1.3.2をmingw(gcc-3.4.2)でビルドすると共用ライブラリが作られませんが、これは正しい結果でしょうか?
335デフォルトの名無しさん:05/01/28 21:37:46
boost1.32のserializationを使いたいのですが、ライブラリビルド時に下記のようなエラーが出ます。
コマンドは
bjam -sTOOLS=vc7 "-sBUILD=release debug <runtime-link>static/dynamic <threading>single/multi <native-wchar_t>on" stage
でビルドしてます。serialization以外は上手く行くんですが、何故なんでしょうか?
よろしければ、助言お願いします。

//-------------------------------------------------------------------
// ビルドエラーメッセージ
//-------------------------------------------------------------------
...failed vc-C++ bin\boost\libs\serialization\build\libboost_wserialization.lib\
vc7\release\threading-multi\xml_wgrammar.obj...
vc-C++ bin\boost\libs\serialization\build\libboost_wserialization.lib\vc7\releas
e\threading-multi\xml_wiarchive.obj
xml_wiarchive.cpp
C:\mssdk\boost_net\boost\spirit\core\config.hpp(56) : fatal error C1189: #error
: "Compiler not supported. See note in <boost/spirit/core/config.hpp>"

"cl" /Zm800 -nologo /EHsc -c -DNDEBUG -DNDEBUG -DBOOST_TEST_NO_AUTO_LINK=1
/Ogity /O2 /Gs /Ob2 /EHsc /GR /MD /Op -Gy /Zc:forScope /Zc:wchar_t -I"bin\bo
ost\libs\serialization\build" -I"c:\Program Files\Microsoft Visual Studio .NET\
VC7\include" -I"C:\mssdk\boost_net" -Fo"bin\boost\libs\serialization\build\li
bboost_wserialization.lib\vc7\release\threading-multi\xml_wiarchive.obj" -Tp"C:
\mssdk\boost_net\libs\serialization\build\../src/xml_wiarchive.cpp"

...failed vc-C++ bin\boost\libs\serialization\build\libboost_wserialization.lib\
vc7\release\threading-multi\xml_wiarchive.obj...
...skipped <@boost!libs!serialization!build\libboost_wserialization.lib\vc7\rele
ase\threading-multi>libboost_wserialization-vc7-mt-1_32.CMD for lack of <@boost!
libs!serialization!build\libboost_wserialization.lib\vc7\release\threading-multi
>xml_wgrammar.obj...
336デフォルトの名無しさん:05/01/29 00:50:58
>>335
> Compiler not supported. See note in <boost/spirit/core/config.hpp>
337デフォルトの名無しさん:05/01/29 22:05:21
boost::threadって使い物になる?
338デフォルトの名無しさん:05/01/29 22:20:33
>>337
ウェイト入れても、CPU負荷が高めかも
漏れのやり方が悪いだけだろうか…
339デフォルトの名無しさん:05/01/31 01:09:34
337へのレスが338になる状況が想像できないのは俺のせい?
340デフォルトの名無しさん:05/01/31 09:20:33
boost::filesystemもウンコだし、最近のboostは質の低下が著しいな。
341デフォルトの名無しさん:05/01/31 10:04:42
>>340
だったらお前が作れ…ってそんなことしたら余計悪くなるかww
342デフォルトの名無しさん:05/01/31 10:23:39
つーか、Boost の環境依存部分て基本的に Posix 文化が強いから。
それを Windows に当てはめようとしてイロイロ無理している感じ。

いっそのこと、.NET Fw か、Java のライブラリみたいにすればいいのではとも思う。
343デフォルトの名無しさん:05/01/31 10:25:22
BOOSTは別にWindowsのためだけにあるわけじゃないだろ。
344デフォルトの名無しさん:05/01/31 10:30:04
いかん、net FireWall って無意識に読んで、何の話なんだろうと思ってしまった。
345デフォルトの名無しさん:05/01/31 10:30:24
しかしUNIX屋はC++をあまり使わないというジレンマ
346デフォルトの名無しさん:05/01/31 10:43:43
Windowsのfile systemがウンコなところを、
boost::filesystemに持ち込まれても困る。
347デフォルトの名無しさん:05/01/31 21:21:39
WindowsだとSleepでUnixだとnanosleepだったりしてイヤーンな感じですが、
boostにportableでミリ秒単位以上の性能があるsleepは無いですか?
348デフォルトの名無しさん:05/01/31 21:25:23
ちなみに、ミリ秒単位以上の性能と言っても、
スレッドとかプロセスコンテキストで20msくらい余分に待たされたりしますとかそういうのはOKです。
でも1秒は途方に暮れるほど長すぎるかも…
349デフォルトの名無しさん:05/01/31 22:02:02
>>343
Windowsが圧倒的なシェア持ってるんだからしょうがない。

Linux板でシェアを増やそうというスレを見ていると、
LinuxはGUIを改善するべき→
GUIなんていらん。CUIの方が効率的→GUIは初心者に必要
→初心者なんてLinuxにはいらん→シェアを増やすには初心者が必要
→シェアなんて増える必要ない

という必ず不毛なネガティブループに陥ってるんだよなぁ。
350デフォルトの名無しさん:05/01/31 22:14:46
>>348
thread.sleep
351デフォルトの名無しさん:05/02/03 02:25:12
boost::socketってまだ使えないんですか?
352デフォルトの名無しさん:05/02/03 16:41:08
sandbox扱い
353デフォルトの名無しさん:05/02/14 20:11:08
おいおまいら、boostロゴコンテストですよ
354デフォルトの名無しさん:05/02/20 15:54:32
2005 Expressでboost使ってみました。

"let's boost" の"spirit"のサンプルを試したら、
「windows.hが見つからない」というエラーが出たので、

file_iterator.ipp 内で #include <windows.h>
するのを抑えるために、同ファイル内で
#undef BOOST_SPIRIT_FILEITERATOR_WINDOWS
したら通ったのですが、根本的な解決になってない気が。。。
355デフォルトの名無しさん:05/02/21 13:48:48
>>354
http://pc5.2ch.net/test/read.cgi/tech/1080916113/l50
windows.h で検索しる。

Beta なんだから boost の前にコンパイラのスレに行こうな…(´Д`)
356デフォルトの名無しさん:05/02/22 23:28:07
>>355
すみません今後気をつけます。

おかげさまで解決しました。
ありがとうございました。
357デフォルトの名無しさん:05/02/23 15:41:20
Microsoft Visual C++ Toolkit 2003にboostをインストールしようとしているのですが、bjamのオプションはどのようにしたらよいのでしょうか?
358デフォルトの名無しさん:05/02/23 15:51:53
359デフォルトの名無しさん:05/02/24 07:15:45
C++Builderに
bjam "-sTOOLS=bcb" --prefix="C:\Program Files\Borland\CBuilder6" install
でインストールしたところ、インクルードファイルのフォルダが
Include/boost-1_32/boost/
となってしまったのですが、
Include/boost/
にインストールするにはどうしたらよいのでしょうか?
それともこれは正常なのでしょうか?
いろいろなサンプルを見ると
#include <boost/random.hpp>
の様になっているのですが・・・。
360デフォルトの名無しさん:05/02/24 09:14:43
例えば
C:\Boost\include\boost-1_32\boost
にインストールされてるとして、IDEの設定もしくはMakefile等で
C:\Boost\include\boost-1_32
をインクルードパスに追加しとくと
#include <boost/random.hpp>
でインクルードできる。
それがいやなら手動で好きなとこにコピーしとけ。
361デフォルトの名無しさん:05/02/26 00:00:23
354さんへ
私も2005 ExpressにインストールしようとしたのですがbjamのsTOOLSにどのようなオプションを渡せばよいかわかりません。
2005はvc8ですが、vc8はbjamが「こんなパラメータしらんわ!」といいよるし、
2003と同じくvc7.1でやろうとすると、「vc7.1と違うだろうが!ゴラァ!」と突っ返されます。
インストールオプションをおしえてくだされ。
362デフォルトの名無しさん:05/02/26 00:31:36
人にきくより自分でソース見た方が早いと思うぞ。
363ヽ(´ー`)ノ ◆.ogCuANUcE :05/03/03 17:01:03
>>361
-sTOOLS=vc-8_0 でどうだね。
364デフォルトの名無しさん:05/03/17 19:17:18
STLport-4.6.2 + Intel C++ Compiler8.1 + VC7.1使ってBOOSTをビルドしようとすると
namespace "_stl" has no memberエラーがたくさん、かんべんしてくれ〜
365デフォルトの名無しさん:2005/03/31(木) 11:48:57
linuxでインストールしたboostをアンインストールしたいのですが、どうしたらよいのでしょうか?
366デフォルトの名無しさん:2005/03/31(木) 12:05:05
367デフォルトの名無しさん:皇紀2665/04/01(金) 01:56:28
やっとboostのfilesystemがマルチバイト文字のパスに対応するそうな。
368デフォルトの名無しさん:int 2ch =05/04/01(金) 21:29:29
age
369デフォルトの名無しさん:2005/04/11(月) 00:38:34
boost::filesystemって、ワイルドカード(*とか?とか)に対応してますか?
ドキュメント読んだ限りじゃ、そんなところまで世話してくれなそうだったんだけど
俺環境はlinuxなので、シェルが勝手に*.txtとか展開してくれるんで、別に支障は無いんだけど、
プログラム側でそういうのも対応できたら嬉しい
自分でいちいちregexとか使って、パターンに合うファイル抽出しないといけないのかな
370デフォルトの名無しさん:2005/04/11(月) 01:47:02
>>369
そのあたりの議論がboost-mlにあります。
http://lists.boost.org/MailArchives/boost/msg46650.php
371デフォルトの名無しさん:2005/04/11(月) 02:03:41
>>369
Linuxだったら、
readdir(2)で、ディレクトリパス名を引数に持つctorがあるイタレータを、
regexをfind algorithmに。すぐできるよね。
372デフォルトの名無しさん:2005/04/11(月) 08:06:47
ワイルドカード展開にregex使うのはパターンの変換が面倒臭いんだがなぁ。
373デフォルトの名無しさん:2005/04/11(月) 11:37:55
スレ違いだけど、
${bash}/lib/glob/*.[ch]
374デフォルトの名無しさん:2005/04/11(月) 16:59:13
CodeProjectにWindows環境でも使えるGlobクラスがあったよ
375デフォルトの名無しさん:2005/04/18(月) 00:27:07
boost::regexで、括弧の入れ子構造を理解させる事ってできますか?
多分できないと思うんですが…


例えば↓このような文字列があった場合に、
123(abc(...)def)456(...)789

(abc(...)def)
の部分にだけマッチさせたい、とかいう時です

単純に(.+)だと
(abc(...)def)456(...)
にマッチしてしまう

(.+?)にしたら
(abc(...)
の部分にマッチする


面倒なんでもう関数書いてやる事にしましたが、
こういう多少面倒なパターンマッチって可能なんですかね?
perlでも面倒臭そう
376デフォルトの名無しさん:2005/04/18(月) 00:36:48
そこでboost::spiritというのはどうだろう。回答になってない気もするが。
377デフォルトの名無しさん:2005/04/18(月) 00:43:34
>>375
正規表現で対応関係を表現することは(理論上、すなわち絶対に)出来ません。
378デフォルトの名無しさん:2005/04/18(月) 01:00:01
([^)]*)
じゃいかんのけ?
379デフォルトの名無しさん:2005/04/18(月) 01:15:37
>>378
>>375は任意の深さの入れ子にマッチさせたいのであろう。
380デフォルトの名無しさん:2005/04/18(月) 01:24:16
深さの最大値が分かってるなら、
\(.*?(\(.*?(\(.*?\))?.*?\))?.*?\)
とか。
381デフォルトの名無しさん:2005/04/18(月) 01:42:19
ライブラリによっては再帰的なパターンマッチに対応してるのもあるよね。
Perl(正規表現のためにPerlインタプリタを埋め込むのは馬鹿らしいけど)とか
C/C++用ならPCRE(Perl Compatible Regular Expressions)とか。
ttp://pcre.org/
382デフォルトの名無しさん:2005/04/18(月) 01:57:42
蛇足だとは思うが
boost::regexにはそれはない。
383375:2005/04/18(月) 02:13:24
むっはー、こんな短時間でこんなにレス付いてビビった

>>378
aaa(...)bbb(...)ccc
という文字列に対してそのパターンを使うと(...)bbb(...)にマッチしてしまう
自分は最初の(...)と、次の(...)にだけちゃんとマッチさせたかったので

つまり何をしたかったかというと、
一番浅い階層の括弧だけ見つけ出して(この時点じゃ、その中にまだ括弧が入ってるかどうかはどうでもいい)、
とりあえず除外しておく、残った部分の文字列を処理する
次に、さっき除外した部分の括弧に対して、今の関数を再帰的に呼び出して処理
これを繰り返して入れ子構造になった括弧を処理していく…、って事をしたかったわけです

あとやっぱこれくらいの処理だったら、
これのために知らないライブラリを新たに導入するよりは、
自分で適当な関数一つ書いちゃった方がいいかな
括弧の対応が取れてなかった場合はエラー出したいとかいうのもあるし


>>376
それ面倒臭そうだけど興味深い存在ではありますね
今度調べてみよっと…
384デフォルトの名無しさん:2005/04/18(月) 07:24:45
boost::xpressiveのドキュメントにそのまんまっぽいサンプルあったぞ
385デフォルトの名無しさん:2005/04/23(土) 18:34:47
vc6でboostをインストールしようとして、
bjam -ほなやらら
とすると
spawn:No such file or directoryと出るんですが
どうすればいいですか?
386デフォルトの名無しさん:2005/04/23(土) 18:39:03
ここはboostスレであって、無能無才の為の
質問スレではありません
387デフォルトの名無しさん:2005/04/23(土) 19:56:01
ディレクトリ指定が間違ってるってことぐらいしか、考えられないよなぁ。
388デフォルトの名無しさん:2005/04/24(日) 09:50:17
そうでした。パスが通ってませんでしたので解決しました
389デフォルトの名無しさん:2005/05/04(水) 04:41:03
おまいらちょっと教えて下さい。

struct foo {
 int operator()(int x) const { return x; }
};
struct foo_visitor : boost::static_visitor<int> {
 template <class T>
int operator()(T f) const { return f(0); }
};

に対して、

//boost::variant<foo> v(foo()); // エラー
boost::variant<foo> v; v = foo(); // OK
boost::apply_visitor(foo_visitor(), v);

なのはなぜでSKY? 使い方間違ってますか
390デフォルトの名無しさん:2005/05/04(水) 05:33:48
boost::variant<foo> v(foo()); // 無引数でfooを返す関数へのポインタをとってboost::variant<foo>を返す関数vの宣言。
391デフォルトの名無しさん:2005/05/04(水) 12:12:50
「C++で最も奇妙な解析」ってやつだな
392389:2005/05/04(水) 14:34:02
>>390-391
EffectiveSTL にのってたあのことかー!
まさか自分でハマるとは...orz ありがとう、すっきりしたよ
393デフォルトの名無しさん:2005/05/05(木) 11:40:36
>>390
違うんじゃないか?
それは、
boost::variant<foo> v(foo(*)());
じゃないか?
394デフォルトの名無しさん:2005/05/05(木) 14:30:27
>393
foo()というのは関数型ですけれど,これは関数の仮引数の型に指定されると
自動的に関数へのポインタ型に解釈されなおされるので.
395デフォルトの名無しさん:2005/05/05(木) 18:45:25
素朴な疑問なんだが、なんで boost::variant<foo> v = foo() にしないの?
396デフォルトの名無しさん:2005/05/07(土) 02:15:07
公式にはintrusive_ptrよりshared_ptrを利用するべきと表記されているけど、intrusive_ptrが推奨されていない理由って何だろう?
どうも参照カウント用オブジェクトをnewしてるshared_ptrの実装は無駄が多いように思えてintrusive_ptrを使っているんだけれど。
397デフォルトの名無しさん:2005/05/07(土) 12:58:48
>>396
クラスが自分の管理の方法について口を出すわけだから、その分柔軟性が下がるんじゃ内科?
この場合は単に「必要ないのに参照カウンタが付いてくる」程度の問題しかおきないだろうけど。

効率の確保のためだけにintrusive_ptrを使っているなら、boost::in_place_factoryでラップすることを考えてみてはどうだろう。
クラスの定義をいじることなしに、参照カウンタとオブジェクトをまとめて確保できる。
表記法が独特なのと、生ポインタからの変換ができないという欠点はあるが。
398デフォルトの名無しさん:2005/05/07(土) 17:21:48
>>396
weak_ptrのサポートの有無だと思うんですけれどね.
ただweak_ptrのサポートは非常に有益な場合もあれば,まったく不必要な場合もあるので
この理由だけでintrusive_ptrが推奨されているのかは分からないですけれど.
ここら辺もうちょっと詳しい議論どこかに落ちてないですかね?

>>397
前半は同意します.
後半は,それだとintrusive_ptrで十分な気がするんですがダメですかね?
あるいは単に外部で参照カウントを形成するタイプのスマートポインタが欲しいなら,
そういうスマートポインタ(ただしweak_ptrをサポートしない)を作ったほうが良くないですか?
399398:2005/05/07(土) 17:31:58
-この理由だけでintrusive_ptrが推奨されているのかは分からないですけれど.
+この理由だけでshared_ptrが推奨されているのかは分からないですけれど.
400398:2005/05/07(土) 17:41:58
>あるいは単に外部で参照カウントを形成するタイプのスマートポインタが欲しいなら,
>そういうスマートポインタ(ただしweak_ptrをサポートしない)を作ったほうが良くないですか?
っていうかこれ意味不明ですね.無視してください.すいません.
401デフォルトの名無しさん:2005/05/08(日) 02:52:30
>>397
>boost::in_place_factoryでラップすることを考えてみてはどうだろう。
誰か具体的に教えてくれるとうれしいな。
402デフォルトの名無しさん:2005/05/08(日) 04:03:32
vector<std::string> vs;
vs.push_back("aa");
vs.push_back("bb");
vs.push_back("cc");
for_each(vs.begin(), vs.end(), std::cout << boost::lambda::_1);

だとOKで、最後が

for_each(vs.begin(), vs.end(), std::cout << boost::lambda::_1 << std::endl);

だとコンパイルエラーになるのなんで?
403デフォルトの名無しさん:2005/05/08(日) 04:11:57
<< '\n'; に汁
404デフォルトの名無しさん:2005/05/08(日) 04:16:39
素直にforステートメント使って書けばいいのにと思うのは俺だけでしょうか
405デフォルトの名無しさん:2005/05/08(日) 04:19:42
最後まで残すものじゃないでしょ
ちょっとした実験で書くときに短くさくっと書けるようにするもの>lambda
406402:2005/05/08(日) 04:30:16
とりあえず '\n' にします。
lambda は、405さんのおっしゃる通り、実装中のダンプ用に使ってます。
407デフォルトの名無しさん:2005/05/08(日) 04:40:20
forで書くと、
vector<std::string>::const_iterator it = vs.begin()
とか、iteratorの宣言がうざくなってくるからね。
for構文がtemplate野郎にやさしくなってくれると嬉しいと思う。
408デフォルトの名無しさん:2005/05/08(日) 04:47:26
だよな
typedef std::vector<std::string> hoge;
とかってやると iterator の宣言はあまりウザく無くなるが、
今度は typedef がウザくなってしまう罠
409407:2005/05/08(日) 04:48:21
と思ったけど、typeofが使えれば、マクロで楽できるかな、と一人突っ込み。

#include <list>
#include <iostream>
using namespace std;

#define FOR(it, beg, end) for(typeof(beg) it = beg; it != end; ++it)

int main()
{
list<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);
FOR(it, a.begin(), a.end())
{
cout << *it << endl;
}

return 0;
}
410デフォルトの名無しさん:2005/05/08(日) 04:48:52
http://YahooBB219215164084.bbtec.net/
wwwっwwwおkwwwwwwうはっwwwっうぇうぇwww

うはっwwwwwwっうぇおkwwwwwwwww
うぇwww
wwwwwwwwwwwwうぇwww
411デフォルトの名無しさん:2005/05/08(日) 04:58:54
わざわざファンクタ作るのが一番めんどい解決法だぜ。
412デフォルトの名無しさん:2005/05/08(日) 05:37:36
#define FOR(footype it, beg, end) for (footype ## ::const_iterator = beg; it != end; ++it)
413デフォルトの名無しさん:2005/05/08(日) 05:47:08
何を意図してるのか知らないけど、
FOR(footype it←スペース区切り?
##←これいらないんじゃない?

こんなの仕事で見たらぎょっとするし、
君が学生だったら単位はあげられないなあ。
414デフォルトの名無しさん:2005/05/08(日) 05:53:03
カンマ抜けてた 
415デフォルトの名無しさん:2005/05/08(日) 05:54:53
>君が学生だったら単位はあげられないなあ。

そりゃ教授じゃないからだろ
416デフォルトの名無しさん:2005/05/08(日) 11:14:12
Boost.FOREACHが待ち構えています
417397:2005/05/08(日) 16:57:18
>>401
俺が考えてたのは
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/370.c
こんな感じで、新しいスマートポインタを書くってこと。
418デフォルトの名無しさん:2005/05/08(日) 17:12:30
xpressiveはどうよ?開発してるのはMicrosoftでGRETAってテンプレートベースの
正規表現エンジンとか書いてたプログラマらしいけど。

419デフォルトの名無しさん:2005/05/08(日) 23:34:47
>>417
サンクス
420デフォルトの名無しさん:2005/05/09(月) 13:06:27
>>395
うーん。。。
なんとなくコンストラクタを直に呼んでる気がしてつい使っちゃう、とか、
= は引数が1個のときだけなので 2個以上と使い分けるのカコワルイとか、
C++ Primer 改訂3版 P.726 で推奨の書式と書いてあるから、とか。

本当は Boost.Variant のページのサンプルコードをコピペって
いじってたからですけど。今回のような落とし穴もあるので、
これからは = 使おうと思います。
421デフォルトの名無しさん:2005/05/09(月) 13:50:41
= はコピーコンストラクタが起動することは知っておけよ
422デフォルトの名無しさん:2005/05/09(月) 20:27:35
>>421
この場合に関してはコピーコンストラクタは呼ばれないんじゃ
ないですかね。
仕様書の 8.5 の #11,#14 あたりを読むと、foo() の 結果が
direct-initialization に使われるように読めます。
C++ Primer にも同じって書いてあるし、GCC4 で -O0 しても
呼ばれないし。
423デフォルトの名無しさん:2005/05/09(月) 23:09:42
>>422
8.5-12 を読む限り、copy-initialization だと思うけど。
確かこれって、形としてはcopy-initialization だけど
direct-initialization として解釈することが
許されているって話じゃなかったっけ?
ttp://www.gotw.ca/gotw/027.htm
このソースは情報が古いのかもしれんが。
424デフォルトの名無しさん:2005/05/10(火) 00:14:52
copy-initilization と direct-initialization を形式に対するものと考えるか実際の処理に対するものと
考えるかの違いじゃない?8.5-12 からすると形式に対するものと考えた方がよさそう。

で、8.5-14 を解釈するところ以下のようになるかと。
から左辺の型が右辺と同じかその派生クラスである場合には、copy-initialization は direct-initialization
と同じ処理が行われる。
そうでない場合は、適当なコンストラクタ or 変換関数が起動される。コンストラクタの場合は
一時オブジェクトが生成される。この一時オブジェクトが左辺の direct-initialize に上のルールに
沿って使用される(結果としてコピーコンストラクタ呼び出しになると思われ)。
実装はある条件下で、途中結果で直接初期化対象を構築することで、このコピー処理を取り除いてもよい。

boost::variant<foo> は foo でも foo の派生クラスでもないのでコピーコンストラクタ呼び出しが発生しないとは
言えない(発生しない場合もある)のではないかと。
425デフォルトの名無しさん:2005/05/10(火) 00:21:19
>424
×copy-initilization
○copy-initialization

×から左辺の型が…
○左辺の型が…

△実装はある条件下で、途中結果で直接初期化対象を構築することで、…
○実装はある条件下では、初期化されているオブジェクト内に途中結果を直接構築することにより…
426デフォルトの名無しさん:2005/05/10(火) 00:47:48
>>423-424
指摘ありがとん。やっぱ読み違えたか。

「一時オブジェクトが左辺の direct-initialize に上のルールに沿って使用される」
の辺りを読んで、コンストラクタ variant::variant(const foo&) の引数 foo 型に
対しての一時オブジェクトの話なのかと勘違いしました。

なんか仕様書のこの辺、ごちゃごちゃしてて分かりにくい…。
時間があるときにでも、もう一回ゆっくり読んでみまつ。
427422=426:2005/05/10(火) 03:16:30
ええっと、なんか二重三重に勘違いしている気がしてきたんだけど…。
すまんが、まとめさせてくれ。

もともと、V v(foo()) の替わりに V v = foo() と書かないのか?
という 395 氏に対して、俺は両者の動作に違いはないと思った
(なのでこれからは = を使う、と返した)のだが、
それに対して 421 氏が「= はコピーコンストラクタが起動する」と
両者の動作に違いがあるような指摘をしたために、てっきり V の
コピーについての話だと思ってたんだが、424 氏は「foo でも
foo の派生クラスでもない」というように foo のコピーの話をしている?

foo の一時オブジェクトが foo() で生成されて、v 内部の foo 型の
領域に copy-initialization されるのは分かります。それは別に
= を使わなくてもそうなるわけで。

424氏の解釈の部分は、初期化の挙動を説明していて、
 「適当なコンストラクタ or 変換関数」→ V::V(const foo&)
 「この一時オブジェクト」→ V 型の一時オブジェクト=「右辺」
 「左辺」→ V 型の v
 「上のルール」→ 右辺と同じかその派生クラスの copy-initialization は
 direct-initialization になる
と考えられるので、ようするに、
V v((foo())); でも V v = foo(); でも V v = V(foo()); でも、
一時 foo オブジェクトから一時 V オブジェクトを経て、
左辺である v が direct-initialization される点で同じ、ってこと
だと解釈したんだが。

つまり、foo のコピーコンストラクタは(最適化されないなら)呼ばれ、
V のコピーコンストラクタは呼ばれない。また読み違えてるかなあ…。

もう完全に BOOST の話じゃなくてスマソ
428デフォルトの名無しさん:2005/05/10(火) 03:37:45
>>418
もうそれしか使わねえ
お手軽spiritのコンセプトに感動した
実装するのは大変なんだろうけど
429デフォルトの名無しさん:2005/05/10(火) 09:30:07
>>427
Exceptional C++ の項目42 「変数の初期化 ―― それとも?」 を読む限り
V のコピーコンストラクタは「呼ばれるかもしれない」
なぜなら、 foo 型と boost::variant<foo> 型は何の関係もない型だから
  boost::variant<foo> v = foo();

  boost::variant<foo> v(( boost::variant<foo>(( foo() )) ));
                     ↑boost::variant<foo> 型の一時オブジェクトを作成する
という意味になる (が最適化によって直接初期化と同じになるかもしれない)

と思ったんだが、自信ないんで間違ってたら誰か指摘してくれ
430デフォルトの名無しさん:2005/05/10(火) 10:35:11
>>427
>V v((foo())); でも V v = foo(); でも V v = V(foo()); でも、
>一時 foo オブジェクトから一時 V オブジェクトを経て、
V v(foo()); は一時 V オブジェクトを経ない。
で、まあ、ある状況下においては、残りの二つでも
一時 V オブジェクトを取り除いても別にいいよ、ってこと

>424 氏は「foo でも
>foo の派生クラスでもない」というように foo のコピーの話をしている?
多分、424 氏は「foo は variant<foo> でもその派生クラスでもない」
ってことを書きたかったのでは?
foo のコピーコンストラクタは今の件とはあまり関係ないと思う。
431デフォルトの名無しさん:2005/05/10(火) 16:02:55
boostを勉強できる日本語の本は1つしか出ていないのでしょうか?
432422=426=427:2005/05/10(火) 16:07:37
よく読んでやっと理解しました。みんなありがと。

8.5-12 で V v = foo() 形式が copy-initialization 形式であることを
押さえつつ、8.5-14 の「In certain cases, an implementation is permitted
to eliminate the copying inherent in this direct-initialization by
constructing the intermediate result directly into the object being
initialized.」をよく読めよ俺、ってことですね orz
12.6.1-1 にも例が書いてあるし。つーか、Primer の記述が一番紛らわしいよ…
433デフォルトの名無しさん:2005/05/11(水) 17:45:46
boostの英語の本でも
C++ Template Metaprogrammingと
The Boost Graph Library User Guide and Reference Manual
くらいしか見あたらない。
434デフォルトの名無しさん:2005/05/11(水) 18:22:44
大抵のものはリファレンスで十分だけど、
preprocessorとかspiritなんかは系統立てた解説が欲しいね。
特にpreprocessorは公式が手抜き過ぎ。
435デフォルトの名無しさん:2005/05/11(水) 18:47:01
教えてください。
以下のようなキャストで、"boost::static_pointer_cast<>"を書きたくないのですが方法はありますか。
ダウンキャストになりますが、仕様上、整合性は保たれているので、できればキャスト指定を省略したいのです。

class CMyClass
{
};

class CMyClass2 : public CMyClass
{
};

void cast_test()
{
boost::shared_ptr<CMyClass2> smMyClass2( new CMyClass2 );
boost::shared_ptr<CMyClass> smMyClass1 = smMyClass2;
boost::shared_ptr<CMyClass2> smMyClass3 = smMyClass1; // ここでコンパイルエラー

// できればこの長いキャストをしたくない
boost::shared_ptr<CMyClass2> smMyClass4 = boost::static_pointer_cast<CMyClass2,CMyClass>( smMyClass1 );

}
436デフォルトの名無しさん:2005/05/11(水) 19:05:09
>>435
一つ言うと、型推論があるので
boost::static_pointer_cast<CMyClass2>(smMyClass1);
でいい。

でも多分C形式のキャストみたいなのを求めてるんだろうね。
437デフォルトの名無しさん:2005/05/11(水) 21:58:12
BBが_1〜_9をグローバル名前空間に突込んでくれやがるのは
どうしたもんですかね。
BLLのplaceholderと共通化してくれると一番よいのだが。
438デフォルトの名無しさん:2005/05/11(水) 22:08:36
>437
#include <boost/lambda/bind.hpp>

では駄目?
439424:2005/05/11(水) 23:41:55
解決したみたいだけど、漏れが source と destination 完全に取り違えて書いちゃったのが混乱の原因だな。
ごめん、吊ってくる。

×から左辺の型が右辺と同じかその派生クラスである場合には
○右辺の型が左辺と同じかその派生クラスである場合には

×boost::variant<foo> は foo でも foo の派生クラスでもないので
○foo は boost::variant<foo>でもその派生クラスでもないので
440デフォルトの名無しさん:2005/05/11(水) 23:56:31
boost に Int2Type や Type2Type はありますか?
441デフォルトの名無しさん:2005/05/12(木) 00:44:40
>>435
「整合性は保たれている」という情報はコンパイラの知りえない情報なので、無理。
442デフォルトの名無しさん:2005/05/12(木) 08:44:13
任意の型のメンバ関数に、レシーバだけバインドする関数ってありませんか?

class Klass {
void method1(A a, B b, C c);
[...]
};


bind_obj(&Klass::method1, this)

とかすると(A,B,C)の3引数の関数オブジェクトを作ってくれるようなのが
あると嬉しいのですが。
443435:2005/05/12(木) 09:04:01
>>436
>>441
ありがとうございます。

>「整合性は保たれている」という情報はコンパイラの知りえない情報なので、無理。

operator=の記述などでなんとか回避できないかと思ったのです。
教えてもらった短いキャストでやろうと思います。
444デフォルトの名無しさん:2005/05/12(木) 10:42:35
>>442 boost::bind or boost::lambda::bind
445デフォルトの名無しさん:2005/05/12(木) 11:26:03
>>440
Int2Typeに相当するのは、各種整数定数
bool_<>,int_<>,long_<>,size_t<>,integral_c<>

Type2Typeは、T自信を返すメタ関数という点では identity<> だが、
オーバーロードに絡んだディスパッチには enable_if<> がよく使われる
446デフォルトの名無しさん:2005/05/12(木) 19:27:19
boost::gui まだぁ?
447デフォルトの名無しさん:2005/05/12(木) 19:37:10
boost::gay まだぁ?
448デフォルトの名無しさん:2005/05/13(金) 04:33:42
>>444
ウソつくな。
449デフォルトの名無しさん:2005/05/13(金) 05:52:32
無ければ作るか、と思って書いてみたけど・・・

#include "boost/function.hpp"

template<class T, typename Signature>
boost::function<Signature> bind_obj(Signature T::* mf, T* obj);

struct S { int MF(int, bool, char const*) { return 0; } };

int main()
{
  S s;
  boost::function<int(int, bool, char const*)> x(bind_obj<S,int(int, bool, char const*)>(&S::MF, &s));
  return x(0, false, "");
}

bind_obj の呼び出しでテンプレート引数の推測が効かないみたい。
↑のように明示的に指定してやると、 g++ 3.4.1 でコンパイルはできた。(まだ定義が無いのでリンクは無理)
だれか続き頼む。
450デフォルトの名無しさん:2005/05/13(金) 12:53:22
444ではないが…以下で何がマズイの?>>448

Klass obj;
A a; B b; C c;
boost::bind(&Klass::method1, &obj, _1, _2, _3)(a, b, c);

あるいは、
template <class R, class T, class A1, class A2, class A3>
boost::function<R (A1, A2, A3)> bind_obj(R (T::*mf)(A1, A2, A3), T* obj) {
 return boost::bind(mf, obj, _1, _2, _3);
}
として、
bind_obj(&Klass::method1, &obj)(a, b, c);
451デフォルトの名無しさん:2005/05/13(金) 13:57:58
>>449
エレガントな実装はできないと思う。
# define BIND_OBJ_MAX_ARITY 8
# include <boost/bind.hpp>
# include <boost/preprocessor.hpp>

/* 戻り値型の指定のために実装用のboost::_biおよびboost::_mfi名前空間を使っている */

# define OVERLOAD_N(z, n, mfb_cv);  \
  template<typename R, typename T BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename A)> \
  boost::_bi::bind_t<R, \
   MFI_NAME(mfb_cv, n)<R, T BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, A)>, \
   LIST(n)<boost::_bi::value<T *> BOOST_PP_ENUM_TRAILING_ ## z(n, ARGTYPE, !)> > \
  bind_obj(R (T::*f)(BOOST_PP_ENUM_PARAMS_Z(z, n, A)), CV(mfb_cv) T *p) \
  { \
    return boost::bind(f, p BOOST_PP_ENUM_TRAILING_ ## z(n, PLACEHOLDER, !)); \
  }

# define PLACEHOLDER(z, n, _unused) BOOST_PP_CAT(_, BOOST_PP_INC(n))
# define MFI_NAME(mfb_cv, n) boost::_mfi::BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2, 0, mfb_cv), n)
# define ARGTYPE(z, n, _unused) boost::arg<BOOST_PP_INC(n)>
# define LIST(n) boost::_bi::BOOST_PP_CAT(list, BOOST_PP_INC(n))
# define CV(mfb_cv) BOOST_PP_TUPLE_ELEM(2, 1, mfb_cv)()

BOOST_PP_REPEAT(BOOST_PP_INC(BIND_OBJ_MAX_ARITY), OVERLOAD_N, (mf, BOOST_PP_EMPTY))
BOOST_PP_REPEAT(BOOST_PP_INC(BIND_OBJ_MAX_ARITY), OVERLOAD_N, (cmf, BOOST_PP_IDENTITY(const)))
452デフォルトの名無しさん:2005/05/13(金) 23:00:17
>>450
引数の数が違うと使えないのが嫌なんじゃないの?
>>442に「任意の型のメンバ関数に」って書いてあるのが、そういうことなんじゃないかな。
453デフォルトの名無しさん:2005/05/19(木) 03:46:52
mpl はともかく enable_if も TR1 には含まれてないんでつね。。。むう
454デフォルトの名無しさん:2005/05/19(木) 10:43:26
Visual Studio .NET 2003でformatを使ったときに出てくるたくさんのwarning C4244とC4267、
皆様どうやって折り合ってるんでしょうか。
warning無視なんてできないし、
pragmaで消すのもコンパイラ依存で気持ち悪いし、手間だし、
私的には、これでは使いたくても使えない、printfでいいや('A`)って結論に落ち着いてしまうんですけども。

テンプレートとかよくわかんないんだけど、解決不能なんすか?
ぐぐってみると何年も前からある問題みたいな感じが。
455デフォルトの名無しさん:2005/05/19(木) 11:23:35
pragma使わず、プロジェクトの設定でいいじゃん。
456デフォルトの名無しさん:2005/05/19(木) 14:16:10
>>453
SFINAEは最新のコンパイラがやっとこさ対応している程度だし,
言語規格的にも曖昧なところが多いですから.

>>454
>pragmaで消すのもコンパイラ依存で気持ち悪い
どうしても気持ち悪いなら<boost/config.hpp>のマクロで環境切り分けるとかダメですか?

>手間だし
pragmaかましたヘッダを用意してそちらを常にincludeするとかダメですか?
457デフォルトの名無しさん:2005/05/19(木) 22:16:30
>>456
> 言語規格的にも曖昧なところが多いですから

解説きぼん。
458デフォルトの名無しさん:2005/05/19(木) 23:03:08
result_of や type_traits を SFINAE 無しで実装するのは
かなり無理っぽい気がしますが
459デフォルトの名無しさん:2005/05/20(金) 01:58:33
boost::function<string (string& s,size_t i,size_t e ) > f2 =
boost::bind(&string::substr,_1,_2,_3);

↑こんな感じでstring::operator+= を関数オブジェクトにしたいのだが断念。
しかたなく一行ファンクタを書いたのだが、悔しいのでだれか仇を討ってくれ。
460デフォルトの名無しさん:2005/05/20(金) 10:06:55
>>459
function<string& (string&, string const&)> を作れば良いのか?
461デフォルトの名無しさん:2005/05/20(金) 12:55:40
>>459
オーバーロードされてるので、どれ使っていいか教えてあげないと。
bind<string&,string,const string&>(&string::operator+=,_1,_2)
462デフォルトの名無しさん:2005/05/20(金) 18:37:05
>>457
曖昧という表現は微妙にまずかったです.
規格的には(14.8.2/2)で適用される場合が明確に列挙されていますし.
ただ,テンプレート引数への代入によって無効な型や構文が生成されるのは
(14.8.2/2)に列挙されている場合以外にもあるので,それらの扱いも明確にしてほしく,
そういう意味で曖昧だと書きました.(14.8.2/2)に列挙されている場合にも,
一部どういう扱いにするのか微妙な例が存在しますし.
いずれにせよ指定された名前が内部型と定義されているかどうかは
SFINAEとしてはかなり明確な部類なのでenable_ifの文脈にはあまり関係しないです.
すいません.

>>458
result_ofやtype_traitsってSFINAEが要ります?特殊化やsizeofハックでほぼ実装できませんか?
自分が知っている中でSFINAEを使用しているのは唯一boost::is_abstractだけです.
ただ,is_abstractが利用しているSFINAEは上で書いたような「規格で明言されていないもの」の一つですけれど.
463デフォルトの名無しさん:2005/05/20(金) 22:34:21
>>461
おおおおすげー動きました。どもありがとです。
おかげで二行もない関数の関数名をたくさん考えずにすみます。
464デフォルトの名無しさん:2005/05/21(土) 00:32:44
この場合、実質何もbindしてないから、
boost::mem_fn<string&,string,const string&>(&string::operator+=);
とか、そもそも
std::mem_fun_ref<string&,string,const string&>(&string::operator+=);
で十分なわけだが。
465デフォルトの名無しさん:2005/05/23(月) 08:02:17
boostはスレッドセーフですか?
466デフォルトの名無しさん:2005/05/23(月) 08:30:39
モノによる。

ところでtypeofのformal review始まったね。
467デフォルトの名無しさん:2005/05/23(月) 16:12:00
boost/random.hpp でメルセンヌ・ツイスターの乱数を使いたいので

variate_generator<mt19937, uniform_real<> >
rng(mt19937(29833u), uniform_real<>());

としましたら、ある環境では rng() で 0 から 1 の乱数が取得できるのですが、
別の環境では rng() で 0 しか返ってきません。両方ともインテルのコンパイラ icc です。
違うのはヘッダファイル群の置き場所が、
前者は /usr/local/boost 、後者は /usr/include/boost くらいです。
似たような現象が起こる方はいらっしゃいますか。
ちなみに、他の乱数(フィボナッチとか)では両方ともうまくいきます。
また、なぜこのようなことが起こるのか、ご存知の方がいましたら対処を教えてもらえませんか。
468454:2005/05/23(月) 17:11:01
>>455
コンパイラオプションで殺してしまったら、boost外の自分のコードの警告も隠れてしまって
まずいんと違いますか。

>>456
うう、やっぱりpragmaをどうにか入れ込んで折り合ってるんですね。
自分の趣向には合わないので、とりあえずformatの使用は保留することにします……。
469455:2005/05/23(月) 17:56:46
>>468
プロジェクトファイルに、個個のファイルのオプションを指定すればいいと言う意味なんだが。
470デフォルトの名無しさん:2005/05/25(水) 10:17:30
MultiArrayはインテルのコンパイラやgccなどがsseなどを自動的に使用する際に
最適化しやすいように設計されているのでしょうか?
471デフォルトの名無しさん:2005/05/26(木) 10:43:01
ネットワーク関係の処理は出来ないのでしょうか
472ヽ(´ー`)ノ ◆.ogCuANUcE :2005/05/26(木) 14:02:35
>>471
sandbox に boost::socket があるよ。

どのレイヤーのネットワーク・プログラミングやりたいかにもよるけど、
TCP/UDP あたりで良いなら、libskstream は?

個人的には、C 関数を使った方が良いと思うがね。
473デフォルトの名無しさん:2005/05/26(木) 14:21:09
boostのMLでネットワーク関係の話が出ると「ACEでいいぢゃん」で終わるのが恒例だった希ガス
474デフォルトの名無しさん:2005/05/26(木) 14:39:55
ACEって名前は出るわりにはぜんぜん使われてないよな。
475デフォルトの名無しさん:2005/05/26(木) 14:42:54
やっぱりUNIX文化にとっては、マイナーなライブラリ、
それも巨大なものとなると、どうも使うことを嫌がられるね。
テンプレートライブラリという解決方法は、UNIXの思想とも
一番マッチすると思う。
476デフォルトの名無しさん:2005/05/26(木) 14:59:39
>>474
ttp://www.cs.wustl.edu/~schmidt/ACE-users.html

採用例が産業・インフラ分野に偏ってるな。空母の自己防衛システムとか
477デフォルトの名無しさん:2005/05/26(木) 17:44:33
ACEはフレームワークだから、独自の色があるよな。
嫌な人はダメでしょう。
そもそも他に使うライブラリ、フレームワークとなじまないと辛いし。
478デフォルトの名無しさん:2005/05/26(木) 19:56:51
boost::socketが昇格するのはいつ頃だろうか…
479デフォルトの名無しさん:2005/05/29(日) 09:59:35
正式に規格化されるのはいつですか?
480デフォルトの名無しさん:2005/06/01(水) 23:00:40
Pentium-DとAMD64-X2, BOOSTをへビーに使ったC++のソースを
コンパイルする場合どちらが高速になると思いますか?
481デフォルトの名無しさん:2005/06/01(水) 23:26:26
PenD なんかと比べたら AMD がかわいそうだろw
482デフォルトの名無しさん:2005/06/01(水) 23:48:33
PentiumDはX2に見せかけだけで対抗するために作られたものだから、
買わない方がいいよ。
483デフォルトの名無しさん:2005/06/02(木) 00:03:45
デュアルコアって名前付けるだけで買う馬鹿もいるんだな。
484デフォルトの名無しさん:2005/06/02(木) 01:46:31
boostがどうかは知らんけど
VCでのコンパイルならAMDのぶっちぎりで
Pen4系は手も足も出なかったはず
PenD相手なら、AthlonXPでも勝てるかもよ

ちなみに日本の雑誌系メディアは
intelに不利なベンチは完全無視する傾向が強いから
日本のサイト回って情報集めても無駄かも
海外のサイトでは普通にコンパイル速度のベンチしてる

ちなみにAMDがメモリ帯域で不利だった時期には
あれほど重視していたメモリ帯域ベンチを
最近は黙殺に近い状態なのも、これが原因
485デフォルトの名無しさん:2005/06/03(金) 14:39:37
祝! typeof has been accepted!
486デフォルトの名無しさん:2005/06/03(金) 19:51:30
すいません。boost::thread って、スレッドの優先順位を設定したり出来ないんでしょうか?
487デフォルトの名無しさん:2005/06/03(金) 20:28:04
yeildとかthread::sleepとかでさして重要でないスレッドの占有率を下げるとか。
負荷がかかってない場合は優先度を上げても処理が速くなるわけではないみたいだったような、
ちゃんと検証したわけでないが。
488486:2005/06/06(月) 19:07:50
再びスミマセン。

>>487
その方法だと、優先度を変更するような場合に、ちょっと厄介ですよね。
OSのAPIにあるように単純にプライオリティを設定できるインタフェースがないかなと思ったんですが、
やっぱりなさそうですね。

あと、threadを別のthreadからkillするインタフェースってあるんでしょうか? やっぱりない?
489デフォルトの名無しさん:2005/06/08(水) 13:46:50
Boostって stdc++ stl 前提のライブラリなの?
490デフォルトの名無しさん:2005/06/08(水) 13:50:01
>>489
(゚Д゚)ハァ?
491デフォルトの名無しさん:2005/06/08(水) 14:09:36
>>489
標準ライブラリを外部のライブラリが使って何が悪い。
492デフォルトの名無しさん:2005/06/08(水) 17:50:06
>>489
boost preprocessor ライブラリは素の C でも使える。
493デフォルトの名無しさん:2005/06/09(木) 21:35:04
Boostって使うとGPL地雷踏む?
494デフォルトの名無しさん:2005/06/09(木) 21:54:03
大丈夫
495デフォルトの名無しさん:2005/06/09(木) 22:00:55
むしろGLPを敵視しているように思える
496デフォルトの名無しさん:2005/06/09(木) 23:18:37
>>495
GPLを敵視してる?そんなことないだろ。
497デフォルトの名無しさん:2005/06/09(木) 23:44:13
敵視はしてないかもしれんが、GPLでは使い物にならんと思ってるのは事実だな。
498デフォルトの名無しさん:2005/06/09(木) 23:47:51
>>497
そういうことか。それなら確かに事実。
499デフォルトの名無しさん:2005/06/10(金) 01:52:07
500デフォルトの名無しさん:2005/06/10(金) 20:06:27
Spiritで、ツリーでno_node_dを使おうと思ったんですが、使うとどうしてもエラーが出ます。
検索してみたらバグがあったけど改善されたようなことがわかったんですが、
最新版のBoost(1.32.0 ttp://sourceforge.net/project/showfiles.php?group_id=7586 )の中のSpiritを使っても
エラーが出ました。ちなみにno_node_dをコメント化するとエラーは出ないようでした。
エラーメッセージは、

...\boost\spirit\core\non_terminal\impl\rule.ipp(190) :
error C2664: 'boost::spirit::impl::abstract_parser<ScannerT,AttrT>::do_parse_virtual' :
1 番目の引数を 'const boost::spirit::scanner<>' から 'const boost::spirit::rule<T0,T1,T2>::scanner_t &' に変換できません。

と出ます。

何が原因でしょうか?
501デフォルトの名無しさん:2005/06/10(金) 22:42:53
>>500
BCCのC++の規格への対応度が低いせい。
502デフォルトの名無しさん:2005/06/10(金) 22:59:36
VC++じゃないのこれ?
503デフォルトの名無しさん:2005/06/10(金) 23:06:35
504デフォルトの名無しさん:2005/06/10(金) 23:11:20
error C2653: 'booost' : 識別子がクラス名でも名前空間名でもありません。
505デフォルトの名無しさん:2005/06/11(土) 00:09:52
>504
何をしたいんだお前は
506デフォルトの名無しさん:2005/06/11(土) 00:22:56
きっと寂しかったんだよ
507500:2005/06/11(土) 09:58:11
やっぱり無理なんですか…
コンパイラはVC7.1です。
他のを駆使して似た処理を作るしかないのか…
508デフォルトの名無しさん:2005/06/11(土) 10:46:07
STLportは?
509デフォルトの名無しさん:2005/06/11(土) 11:00:59
>500
spirit 使ったことないからよく分からんのだが rule の宣言はどうやってるの?
scanner は指定せずにデフォルトの scanner<> ?
さらっと流してみたところでは boost::spirit::rule<T0, T1, T2>::scanner_t が boost::spirit::scanner<> に
なるはずなんだけど。
510デフォルトの名無しさん:2005/06/11(土) 11:45:15
>>500
俺もVC7.1だけど、警告を3つ出しただけでノーエラーで通ったよ。
あ、ちなみにソースは"xml_grammar.hpp"をインクルードした空のmainだけど。
511500:2005/06/11(土) 18:55:44
>>508
STLport使うと何か変わりますかね?
ちょっとやってみます。

>>509
詳しくはわかりませんがruleは
#define RULE(x) rule<ScannerT, parser_context<>, parser_tag<ruleid_ ## x> > x;
とマクロを使って定義してます。

>>510
マニュアルを読んだときにxml_grammar.hppを知ったんですが、なぜか自分のには存在しなかったです。
libs/spirit/example/application/xmlにあると書いてあるようですが、
applicationフォルダから存在しないようです。
最新版のzipファイルの中をExpLzhで覗いてもありませんでした。
古いバージョンにしかないんですかね?
512500:2005/06/11(土) 19:15:59
あっSTLportを使ってるかどうかってことですか。使ってないです。
513デフォルトの名無しさん:2005/06/12(日) 00:46:18
>511
その ScannerT は scanner<> の間違い?
514デフォルトの名無しさん:2005/06/12(日) 22:20:50
>>513
ast_calc.hppとかのサンプルのコピペだったと思います。
ちなみにscanner<>に変えてもエラーは出ました。
515500:2005/06/16(木) 22:44:39
大体わかってきました。513氏が言っているように、どうやらruleの宣言が問題なようです。
rule<scanner<> > hoge; 〜 no_node_d[hoge]とするとエラーは発生せず、
rule<ScannerT> hoge; 〜 no_node_d[hoge]だとエラーが出ます。
やっぱりコンパイラかSpiritのバグが原因のような気がしたのであきらめることにします…
516デフォルトの名無しさん:2005/06/17(金) 02:50:24
恐らくno_node_dディレクティブが別のscannerを要求しているんでしょう.
hoge以下を分離して別のgrammarとして実装するのが一番楽な回避方法だと思います.
517デフォルトの名無しさん:2005/06/17(金) 03:08:34
少しspiritの実装とドキュメントを覗いてみましたけれど,
rule<typename rebind_scanner_policies<ScannerT, match_policy>::type> hoge;
でいけませんかね?自分で実際に動かしてないので保証はしないですけれど.
後,hogeをno_node_dをかまさない文脈にも使いまわしていると上の方法では無理です.
その場合は516か,あるいはmultiple scannerという機構
http://www.boost.org/libs/spirit/doc/rule.html#multiple_scanner_support
を使うしかないです.でもmultiple scannerはdeprecatedされてた気が・・・
518デフォルトの名無しさん:2005/06/17(金) 22:01:45
その ScannerT って型はどこからやってきたの?
scanner_base を継承してないとうまく動かないはずだけど…。
519500:2005/06/18(土) 20:50:12
>>516-517
試しにmultiple scannerというのを使ってみると確かに正常に動きました。
でも推奨されて無いものを使うのはできれば使いたくないので、
やっぱり分離するのが良さそうですね。

>>518
grammarを継承した構造体のメンバのdefinition構造体がテンプレートクラスで、
struct hogehoge : public grammar<hogehoge> {
... template<typename ScannerT> struct definition { ... }; ...
};
と、サンプルのtree_calc_grammar.hppと同じように定義しています。
実行時型情報を使って typeid(ScannerT).name() と表示させてみるともの凄く長くて、
class boost::spirit::scanner<char const *, struct boost::spirit::scanner_policies
<struct boost::spirit::iteration_policy, struct boost::spirit::ast_match_policy
<char const *, class boost::spirit::node_val_data_factory<struct boost::spirit::nil_t> >,
struct boost::spirit::action_policy> >
と出ました。
520デフォルトの名無しさん:2005/06/27(月) 04:05:50
bcc5.5.1でbjamしようとすると
E2489 オプションコンテキスト応答深度の上限を超過:再帰をチェックしてください
というのがmplまわりで大量に出てほとんどコンパイルできません
ていうかビルド必要ないlexical_castとかincludeしただけでも
そのソースをコンパイルする時に同じエラーが出まくりやがります…
VC++Toolkitあたりでコンパイルしてcoff2omfするくらいしか
手だてはないんでしょうか
521デフォルトの名無しさん:2005/06/27(月) 04:07:06
あ、ちなみに1_28_0は問題ありませんでした
serialization使いたいんだけどなぁ(ノД`)
522デフォルトの名無しさん:2005/06/27(月) 04:07:34
bccを使うのやめればいいじゃん
523デフォルトの名無しさん:2005/06/27(月) 10:31:14
>>520>>521
boost::mplが全部が全部使えないという訳でもない。
しかしビルドが通らないというんであれば、使わない方がいいだろう。
http://engineering.meta-comm.com/boost-regression/CVS-HEAD/developer/mpl.html
524デフォルトの名無しさん:2005/06/27(月) 10:31:54
あ、これは5.6.4の結果か。
でも似たようなもんだな。
525デフォルトの名無しさん:2005/06/28(火) 16:06:08
>>520
COFF2OMFは万能ではない、ていうか無能なので
Borland環境でBoost利用するのは、現時点では諦める鹿?

困ったので漏れ、Boost使ってる部分はMingwでつくってDLLにして
BCBにリンクしたぞゴルァ
526デフォルトの名無しさん:2005/06/29(水) 11:09:17
>>525
なるほど…DLL化も検討してみます

しかしヘッダインクルードしただけで
templateの再帰深度が〜とかありえないBCC
527525:2005/06/29(水) 11:42:49
とはいっても MSVC GCC BCC それぞれ C++ ABI が違うので
C ABIでラッパー書かないといけない罠

それとも COM化する? ウヒヒ オレハ ヤダネ
528デフォルトの名無しさん:2005/06/29(水) 18:13:26
>>520
そこまでするなら全部VC Toolkitにしちまえよ。
529デフォルトの名無しさん:2005/06/29(水) 18:22:31
ヒント: VCL
530520:2005/07/01(金) 10:43:07
>>528
いや〜趣味グラムとはいえWin32意識しててデバッガまで手軽に使える
BCCの存在意義はでかいとおもうんですよ
ていうかデバッガ無しでプログラム書ける人ってすごすぎる
531デフォルトの名無しさん:2005/07/01(金) 18:49:53
デバッガ無いと書けない奴の方が稀。
532デフォルトの名無しさん:2005/07/01(金) 19:48:46
稀っつーか、蛸?
533デフォルトの名無しさん:2005/07/01(金) 21:13:02
デバッガ有り無しでは効率が全然違うのに
未だにprintfデバグに固執するやつのが蛸。
もっと時間を有効に使えよ。
534デフォルトの名無しさん:2005/07/01(金) 22:20:38
TestUnit……
535デフォルトの名無しさん:2005/07/01(金) 22:24:53
>>534
UnitTestのまちがいだろうか
536デフォルトの名無しさん:2005/07/01(金) 22:49:03
書けるか書けないかの問題なのに、相手が固執しているかのように思い込んでしまう大蛸。
537デフォルトの名無しさん:2005/07/01(金) 23:43:57
>>531
組み込み系のかたですか
小規模プログラムは楽でいいですね
538デフォルトの名無しさん:2005/07/02(土) 00:25:29
俺はエディタがないとプログラムが書けない。ヘタレだから。
539デフォルトの名無しさん:2005/07/02(土) 11:45:49
>>537
精神破綻を起こしたか…w
540デフォルトの名無しさん:2005/07/02(土) 23:33:47
組み込み系こそデバッガ必須だと思うが……
541デフォルトの名無しさん:2005/07/03(日) 00:46:30
必要だが、なかったり、ブレークかけられなかったりと、現実は厳しい。
542520:2005/07/03(日) 22:06:35
すみません僕のせいであらぬ方向に荒れてしまったみたいで…
実はC++BuilderXのトライアル版入れてBCC32ver5.6.4使ったら
ビルドはうまく行きました…が、ピンポイントでSerializationだけ
libが作れませんでした。もう諦めまう。
543デフォルトの名無しさん:2005/07/03(日) 22:30:42
544520:2005/07/05(火) 10:43:13
>>543
おお!failed1つもなくビルドできました!プリミティブ型のシリアライズは問題なし、
しかしクラスのシリアライズしようとするとコケます…
#include <fstream>
#include <boost/archive/text_oarchive.hpp>
#pragma link "libboost_serialization-bcb-sd.lib"
class Foo {
  int i;
  friend class boost::serialization::access;
  template< class Archive >
    void serialize( Archive & ar, const unsigned int version ) {
    ar & i;
  }
public:
  Foo():i(0xDEADBEEF){}
};
int main() {
  Foo foo;
  std::ofstream ofs( "data.txt" );
  boost::archive::text_oarchive oa( ofs );
  oa << foo;
  ofs.close();
  return 0;
}
こんなコードでoa << foo;がページ違反起こして落ちまする…
545デフォルトの名無しさん:2005/07/05(火) 12:01:12
/tmp/ccND9jf0.o(.gnu.linkonce.t._ZN8CExpdataIfE16SpatMedianFilterEv+0x216): undefined reference to `boost::thread::~thread()'
collect2: ld returned 1 exit status

コンパイル時にこのようなエラーが出るのですが、何がいけないのでしょうか?
ライブラリのパスでしょうか?setenvで見てみると通っているのですが・・・。
546デフォルトの名無しさん:2005/07/05(火) 16:16:57
>>545
libboost_thread リンクしてるか?
547デフォルトの名無しさん:2005/07/07(木) 10:13:48
uBLASの使い方がよくわかりません。どこか、よい解説のページはありませんか?
548デフォルトの名無しさん:2005/07/07(木) 13:14:00
>>547
ググるといくつかヒットするけど
それじゃだめなの?
549デフォルトの名無しさん:2005/07/13(水) 08:51:19
STLのファンクタだと
引数はargument_type、
戻り値はresult_typeとあると思うんですが
boost::lambdaによって作られたファンクタで
それらに当たるものがみつけられません。
戻り値は、ファンクタ::sig< tuple<ファンクタ,ファンクタの引数型> >::type
だとわかったんですが、ファンクタの引数型がわかりません。
教えてください。
550デフォルトの名無しさん:2005/07/13(水) 10:09:07
引数型は決まらないんじゃないか?
std::cout << _1 /* ostreamに出力できる任意の型を取る */
bind<double>(std::atan2, _1, 2) /* doubleに変換できる任意の型を取る */
551デフォルトの名無しさん:2005/07/13(水) 11:32:31
>>550
template< typename Iterator, typename Function >
void f( Iterator begin, Iterator end, Function func )
{
Function::result_type sum = 0;
for( Iterator i = begin; i != end; ++i )
{
sum += func( *i );
}
}
STL標準のファンクタでしたらこういう書き方が出来るんですが
これをラムダで書き直そうとすると、
Function::sig< tuple<Function,??ファンクタの引数型??> >::type sum;
になってしまい、書くことが出来ません。
こういう場合どのように解決すればいいんでしょう?
引数型はわからない前提で何らかの工夫をすべきでしょうか?
552デフォルトの名無しさん:2005/07/13(水) 12:00:27
>>551
sigには実際に関数オブジェクトに渡す引数の型を渡す。
その例だと、
typedef typename std::iterator_traits<Iterator>::value_type argument_type;
typename Function::template sig<tuple<Function, argument_type> >::type sum = 0;
553552:2005/07/13(水) 12:10:25
ついでに、sig<...>::typeにはconstが付いている可能性があるから、外した方が良いな。
typedef typename Function::template sig<tuple<Function, argument_type> >::type result_type;
typename boost::remove_cv<result_type>::type sum = 0;
554デフォルトの名無しさん:2005/07/13(水) 12:48:53
>>552
iterator_traitsという便利なものがあったんですね!
この部分は解決しそうです、ありがとうございました。
あと、もうひとつ聞きたいんですが、boost::lambdaで
コンパイルエラーをすると、エラーの説明が出ても
もの凄い量訳のわからない内容で打つ手無しになっちゃうんですが
皆さんはどうやって解決されてるんですか?
精通すると読み取れちゃうもんですか?
555デフォルトの名無しさん:2005/07/13(水) 12:56:01
>>549
基本的には552さんの言うとおり実際に関数オブジェクトに渡す引数の型ですが,
より厳密には呼び出されるoperator()の引数のシグネチャから参照のみを外したものになります.
つまりsigに指定するファンクタの引数型は必要に応じてconst or volatile修飾してやる必要があります.
これはoperator()が引数の非const参照とconst参照の差異に基づいて
overloadされている可能性を考慮しているためです.

struct F
{
int &operator(int &x);
int const &operator(int const &x);
template<class FArg> struct sig;
template<> struct sig<tuple<F, int> >{ typedef int &type; };
template<> struct sig<tuple<F, int const> >{ typedef int const &type; };
};

http://boost.cppll.jp/HEAD/libs/lambda/doc/ar01s05.html
の"The sig template"のところにもうちょっと詳しいことが書いてあります.

>>553
参照も付く可能性があるのでちゃんとやるならremove_referenceもかけないとまずいと思います.
自分は面倒なのでremove_reference -> remove_cvをやるメタ関数定義して使ってます.
template<class T>
struct plain : public remove_cv<typename remove_reference<T>::type>{};
556デフォルトの名無しさん:2005/07/13(水) 13:02:54
>>554
自分はエラーメッセージをフィルタするスクリプト書いて,それ通して読んでました.
tupleの尻尾についてくるnull_type消しただけでもかなり読みやすくなった覚えがあります.
557デフォルトの名無しさん:2005/07/13(水) 15:17:38
>>556
参考になります。
ありがとうございます。

boost::lambda::bindでやっても
boost::bindでやっても
基本的なメンバ関数呼び出しのファンクタが
作れず、ずっと悩んでいたんですが
原因がメンバ関数呼び出し規約をthiscallではなく
__stdcallにしていた為でした。(VC++2003)
なぜそうなのか理由はわかりませんが、
もう限界です。さようならlambda
558デフォルトの名無しさん:2005/07/13(水) 20:17:47
boost_xxxxxx.lib

libboost_xxxxxx.lib
ってこの違いに何か意味があるの?
559デフォルトの名無しさん:2005/07/13(水) 23:38:13
boost_xxxxxx.libはインポートライブラリでしょ
560デフォルトの名無しさん:2005/07/19(火) 16:57:18
1.33のスケジュールは決まってるのですかね?

561デフォルトの名無しさん:2005/07/19(火) 18:41:59
その前に規格入りしやがれ
Longhornまでには入れと言いたい
562デフォルトの名無しさん:2005/07/20(水) 04:05:30
次のC++規格更新いつよ?
563デフォルトの名無しさん:2005/07/21(木) 01:35:56
200X年
564デフォルトの名無しさん:2005/07/21(木) 04:38:11
std_functorの内部みて基礎を固めようと思った。
565デフォルトの名無しさん:2005/07/21(木) 09:21:03
566デフォルトの名無しさん:2005/07/21(木) 13:48:02
規格更新って今年じゃなかったの?
567デフォルトの名無しさん:2005/07/28(木) 19:48:30
このスレでいいのかわからないのですが知恵を貸してください。

Observer/Observableモデルを提供するクラスがあります。
例えばObservableにObserverを追加する実装は次のようになっています(CMagazine 2002/11)。

typedef boost::shared_ptr<Observer> shared_t;
typedef boost::weak_ptr<Observer> weak_t;
typedef std::vector<weak_t> observers_t;

void Observable::addObserver(shared_t observer) {
 observers_t::iterator iter = observers_.begin();
 while( iter != observers_.end() ) {
  shared_t target = iter->lock();
  if ( !target ) {
   iter = observers_.erase(iter);
  } else if ( target == observer ) {
   return;
  } else {
   ++iter;
  }
 }
 observers_.push_back(observer);
}

こういう実装でCMainFrameをObserverから継承しているのですが
MFCがCMainFrameを確保してしまうためnew CMainFrameできず、
Observableのリストに追加するいい方法が思いつきません。

void CMainFrame::hoge {
 someobservable->addObserver(this) // こうしたい
}
こういうときどうすればいいのでしょうか?
568デフォルトの名無しさん:2005/07/28(木) 21:14:57
>>567
shared_ptr に delete されるのが困るってことなら、

struct null_deleter
{
void operator()(void const*) const {}
};

class CMainFrame
{
....
boost::shared_ptr<CMainFrame> this_;
CMainFrame() : this_(this, null_deleter()) {...}
};

void CMainFrame::hoge() {
someobservable->addObserver(this_);
}

こんな感じか?試してないが。
569567:2005/07/29(金) 01:51:02
>>568
解決しました。
こういうのさっさと思いつかないといけないんだろうなぁ・・・。
実はかなり長い間悩んでますたorz
ありがとう。
570デフォルトの名無しさん:2005/08/10(水) 10:48:25
お、丁度あいとるなw 駄文書くなら今の内…

"ちゃねらーとして、boost 使ってますと自称できるレベルはどのくらいか"


// ぁあ、書いてしもうた…とうとう書いてしもうた…
571デフォルトの名無しさん:2005/08/10(水) 11:17:28
>>570
そんなもん boost 使ってたら自称できるだろ。

「 boost ?使ってますよ。まだ boost::noncopyable だけですが。」っていう奴に
「それじゃぁまだまだ boost 使ってますと自称できるレベルじゃないね」とか偉そうに言いたいわけ?
572ワル鑑定士 ◆oKLssLV2YM :2005/08/10(水) 13:38:07
即レスdクス 何かが逆 極端に言えばだ

「 boost ?使ってますよ。まだ __cdecl regcompA だけですが。」っていう漏れが、
「それじゃぁまだまだ boost 使ってますと自称できるレベルじゃないね」とか偉そうに[言われ]たくないわけorz
573デフォルトの名無しさん:2005/08/10(水) 13:47:47
boost は、あくまで手段の一つであって使うこと自体に意味はないんじゃね?
574 ◆oKLssLV2YM :2005/08/10(水) 13:58:52
およ? トリ出てたよorz せっかくばれたから暫くkey だけにしとく スレ汚しスマ

boost はもちろん、便利だし、便利そうだから使う
ところで将来、boost で上みたいに質問したくなったとき、「こんくらい知っとけよ俺」みたいなレベルもあるかなと
575デフォルトの名無しさん:2005/08/10(水) 14:03:14
>>574
boostは雑多なライブラリ集合体だからなあ
つまみ食いするのが正しい使い方としか
576 ◆oKLssLV2YM :2005/08/10(水) 14:16:33
そっその認識で合ってるのか!! (← 字面では煽っているようにも見えるが、歓喜の声)

正直ちょとほっとした わっかんねえ内は何もかもが有機的につながって見えるからなあ
iter やpred といった指向性は一貫してるとしてもだ
577デフォルトの名無しさん:2005/08/10(水) 14:54:21
stlだって、全て把握して使っている香具師はそうそういないでしょ。
578 ◆oKLssLV2YM :2005/08/10(水) 15:06:23
すべてを把握しなければ使えないのではないか…その思い込みの呪縛が
漏れをSTL/boost の新世界からずっとずっと締め出していたorz
(boost じゃないが)(例えば)std::map の存在を知りながら
ぼろぼろの自作のclass mymap できこきこ走ってきた…

そうまさに、全て把握して使えなくたって、いいんですよね 自信ないですが、そう思いたい
(でもま、人様の技量レベル標準てのはやっぱ気になるですけどね、先々質疑に参加したいなら)
579デフォルトの名無しさん:2005/08/10(水) 15:33:52
Boost で特に便利だと思うのが、Iterator 関連。
マルチバイト文字列をワイド文字列のように扱うイテレータとか簡単に出来る。

class mbcs_iterator
: public boost::iterator_adapter
< mbcs_iterator, uchar_t const *, wchar_t, boost::forward_traversal_tag, wchar_t >
{
 typedef boost::iterator_adapter< ... > base_type;
public:
 mbcs_iterator( uchar_t const * p ) : base_type( p ) {}
 void increment()
 { base_reference() = _mbsinc(base()); }
 wchar_t dereference() const
 { return _mbtowc( base(), MB_CUR_MAX ); }
};

みたいな。
580 ◆oKLssLV2YM :2005/08/10(水) 15:43:03
初段者の観点でいえることは、「あなたにもイテレータが作れちゃうんです」っていうのは
STL にありそうでないんだなと思ったってことです

// 技量の話にこだわれば、漏れのレベルは、上のサンプルみて、いわゆる拒否反応はないが、
// それでさっそくどう使えるかはさっとコード書けない しかし、「それ面白そうやな」ということは読んで取れる
581デフォルトの名無しさん:2005/08/10(水) 16:09:07
全てを把握しなきゃいけないなんて言っちゃったら
C++なんてほとんどの人が使えなくなっちゃうよ。

「それじゃぁまだまだ boost 使ってますと自称できるレベルじゃないね」
なんて言われたとしても笑ってスルーしとけばいいんじゃない。
582デフォルトの名無しさん:2005/08/10(水) 16:15:05
標準ライブラリのlocale周りを完全に把握しているC++プログラマなんて何%いるんだか。
583 ◆oKLssLV2YM :2005/08/10(水) 16:37:54
あの付録読んでから、少なくとも、0x20-0x7F 外の大文字小文字比較は油断できないことだけは覚えた
いざってときは、多少なりともSTL の助けがあることも
584デフォルトの名無しさん:2005/08/10(水) 17:02:51
>>583
初心者歓迎スレに、丁度テンプレートの話題が出てるよ。
試しに読んでみたら?
585デフォルトの名無しさん:2005/08/10(水) 17:30:38
そういえば、boost::container_adapter ってどうなったんだ?
586 ◆oKLssLV2YM :2005/08/10(水) 21:24:29
>>584
ざっと覗いてきたですよw あとで何度も精読するとして
boost の話題としては、ほんとはじめての頃、 _1 って何よとかオモタw
それと、そうだ、初心者ならではの、かつboost な質問:

「lambda は凄く便利そうで、早晩気に入りそうだが、精神的に依存しきってしまって大丈夫かw」

慣れるまではむちゃくちゃに援用しそうな、今からもはや恥ずかしい悪寒ですがw
587デフォルトの名無しさん:2005/08/10(水) 22:01:34
>>573
> boost は、あくまで手段の一つであって使うこと自体に意味はないんじゃね?

いやいや、俺はboostだけで飯が三杯喰えるよ、だからどうってわけじゃないけど
588 ◆oKLssLV2YM :2005/08/11(木) 01:40:37
PC と酒とboost があれば、3日過ごせそうな気はする 連投スマ
589デフォルトの名無しさん:2005/08/11(木) 02:15:35
boostの中には組み合わせて使うことが多かったり相性の悪かったりするものもある。
知悉する必要はないがどういうものがあるかという概要くらいは
使わなくても頭に入れておいて損はない。

存在を知らないと、ここであれ使って簡単に済ませられそうかなあ……調べてみよ、
とかも思い付かないと思う。
590デフォルトの名無しさん:2005/08/11(木) 11:45:03
>>589
>相性の悪かったりするものもある。
くあしく
591589じゃないが:2005/08/11(木) 14:02:56
>相性の悪かったりするものもある。
boost::lambdaとboost::bindを同時に使おうとすると_1などが名前の衝突起こす。
まあboost::lambda::bindに統一すりゃいいんだが。

そういうことじゃなかったらすまん。
592デフォルトの名無しさん:2005/08/11(木) 16:23:35
boost::bindの_1はなんでグローバルにあるんだろう。
lambdaの_1はboost::lambdaに属しているのに...
593デフォルトの名無しさん:2005/08/11(木) 16:27:02
OpenJaneのログからboost::を検索してみたんだが、随分色々あるねぇ。
齧っておいて損はないと思いながら未だ拾ってもいないのだが、
stlで飽き足らない技術者向けの解説サイトはないもんだろか。
#後は入手先とか情報がまとまってるとかね。
594デフォルトの名無しさん:2005/08/11(木) 18:53:10
Let's boost では不満?
http://www.kmonos.net/alang/boost/
595デフォルトの名無しさん:2005/08/11(木) 20:00:15
書いてある内容に不満はないが、不足だな。
もっと詳しく知りたい。
例のバイブルも導入にはいいけど、細かい話がないし。
結局、ソース嫁って結論なのかね。
596593:2005/08/11(木) 20:08:59
>>594
さっき検索して見つけたから後で自宅で読もうと思ってマークしてたのが丁度そこだった。
>595によると不足だそうだけど、取り敢えず読んでみるよ。THX!
597デフォルトの名無しさん:2005/08/11(木) 20:41:16
>>595
その前にドキュメント読めよ。
598デフォルトの名無しさん:2005/08/11(木) 22:17:04
ここで仕事でboost::spiritを使った俺が来ましたよ。
599デフォルトの名無しさん:2005/08/11(木) 22:30:58
>>593
Cryoliteたんのとことかp_stade;とかはけっこう面白いネタやってて好き。
あと、ここもエキスパートな人見てくれてると思うんで、よっぽど変な
聞き方しなければレスつくと思うよ。
600デフォルトの名無しさん:2005/08/12(金) 17:24:52
boost1.33.0リリースage
で、何が変わったの?
601デフォルトの名無しさん:2005/08/12(金) 19:23:01
目玉はPointer Container Libraryになるのかな
602デフォルトの名無しさん:2005/08/12(金) 19:34:14
おやboost.orgのレイアウトがやたら変わっている

まあとりあえずダウンロードしてみるか
603 ◆Pu/ODYSSEY :2005/08/12(金) 19:44:48
Regex++とMersenneTwisterのためだけに使ってたけど、今回は結構使えそうなライブラリ増えてる印象
なにげにハッシュコンテナのサポートが嬉しい。

Regex++はPerl拡張構文サポートが結構充実した感じ?

個人的にはDFAとかAC法、CW法なんかの文字列照合ライブラリの拡充を希望したい。
604デフォルトの名無しさん:2005/08/12(金) 20:02:41
regexがすごい進化しててよさげ。
filesytemはどうなったんだろう...
605デフォルトの名無しさん:2005/08/12(金) 21:39:40
ドキュメント1行解読するのに1時間くらいかかる英語力なんで
いきなりソース読んでみるしかないんだが・・・boostは難しいな。
土日全部使うか。
606デフォルトの名無しさん:2005/08/12(金) 22:04:18
今からでも英語勉強した方が……十分ペイするんじゃないか
607デフォルトの名無しさん:2005/08/12(金) 22:43:14
いまMinGWとVC++.NETにインストしたところ。
MinGWには何の問題もなくインストできたが、VC++.NETでは
「メモリが足りんぞー」
エラーメッセージが何度も出てくる。
とりあえずライブラリは出来たようだが、本当に使えるんだろうか?これ。
608デフォルトの名無しさん:2005/08/12(金) 22:45:23
boost::iostreams::zlibなんてのもあるのかー。
609デフォルトの名無しさん:2005/08/12(金) 22:58:03
>>608
鼻血出そう
610デフォルトの名無しさん:2005/08/13(土) 01:47:15
>>606
いや勉強はずっとしてるんだけど、いくらやっても読めないものは読めないw
ソース読んでライブラリを理解してからじゃないとドキュメントの意味がわからんってのも
すごい話だけどな。
611デフォルトの名無しさん:2005/08/13(土) 05:11:59
>>610
そりゃ勉強してるつもりでしてないか、勉強法が悪すぎるかじゃないか。
612デフォルトの名無しさん:2005/08/13(土) 07:44:18
>>611
610は日本語のドキュメントで意味がわからなくて、
ソース読むタイプだと思うよ。
613デフォルトの名無しさん:2005/08/13(土) 08:01:12
>>612
610はソース読んでも意味が分かってないタイプだと思うよ。
614デフォルトの名無しさん:2005/08/13(土) 10:18:20
なんで英語ネタに食いついてるレスは
後ろの改行が一つ多いんだ?
615 ◆oKLssLV2YM :2005/08/13(土) 12:39:21
C++ 特にboost ともなれば、命名には気を遣えというルールが重みを持ってきますが、
ということは、微妙な英語のニュアンスがわからない漏れは、何か重要で繊細な何かを
読み落として損してる悪寒…orz

// ↓一行空けw
616デフォルトの名無しさん:2005/08/13(土) 12:41:22
>>607
こっちはVC++.NET2003とSTLPortだとWaveがビルドできなかった。
VC++.NET2003だけだとOK。
617 ◆Pu/ODYSSEY :2005/08/13(土) 12:43:43
Janeの末尾整形使ってるから下に入ることは稀だな。
末尾は改行入れ「ない」習慣をCやC++でやられるよりはいいんでね?
618 ◆Pu/ODYSSEY :2005/08/13(土) 12:46:46
STLPortってVC6以外で使う意味あったっけ?
ハッシュもサポートされたしデフォのやつでいいじゃん。
619デフォルトの名無しさん:2005/08/13(土) 14:14:53
オレは、デフォはメモリリークが発生するってうわさを聞いて導入したんだけど、
実際のところどうなの?
620デフォルトの名無しさん:2005/08/13(土) 15:00:57
どこでメモリリークすんの?
621 ◆Pu/ODYSSEY :2005/08/13(土) 15:08:59
むしろSTLPortのアロケータがやばいという話なら聞いたことがあるが
622デフォルトの名無しさん:2005/08/13(土) 17:24:18
STLPort4.6系はリークする。というかそういう設計にしているみたい。
5.0系は#define _STLP_LEAKS_PEDANTICしてビルドするとリークしないらしい。
623デフォルトの名無しさん:2005/08/13(土) 17:39:42
STLPortは別にメモリリークしてるわけじゃなくて内部的にプールしてるのをメモリリーク検出ツールが誤検出するってだけじゃなかったか?

PEDANTIC(知ったかぶり)ってのが中の人の見解を如実に表してる希ガス
624 ◆oKLssLV2YM :2005/08/13(土) 17:56:32
/* boost 話ではないが、超興味津々だから続けてくれー。あとでドキュメントも自分でおさらいする */
625 ◆Pu/ODYSSEY :2005/08/13(土) 17:59:43
なんだかんだでDinkumが一番信頼できるんだ罠。6.0はそもそもANSI準拠してなかったけど、
7.1からだいぶ増しになった。某ランドも乗り換えるらしいじゃん。
626デフォルトの名無しさん:2005/08/13(土) 20:08:38
STLPort,5.0RC4だとjamファイルとかソースいじらないとBoostのビルドが
出来ないね。RegexとかThreadとか。
627デフォルトの名無しさん:2005/08/13(土) 21:11:21
STLPortは4.6系と5.0系は失敗作だったから
4.5.系使えとか言われてなかったっけ?
628デフォルトの名無しさん:2005/08/14(日) 01:30:23
boost1.33.0のwaveというライブラリのinstantiate_cpp_*.cppというファイルを
コンパイルしているときかならずcl.exeがBuffer overrun detectedと書いてある
ダイアログを表示してくるのですが何かの演出ですか?
629デフォルトの名無しさん:2005/08/14(日) 01:43:15
つーかboostのwaveって何なの?
マニュアルの3行目位まで読んだ限りでは
spiritの進化版っぽいけどそれでOK?
630デフォルトの名無しさん:2005/08/14(日) 01:52:10
spiritを使ったC/C++プリプロセッサライブラリだってさ。
631デフォルトの名無しさん:2005/08/14(日) 01:52:45
>マニュアルの3行目位まで読んだ限りでは
次の段落ぐらいまで読めば何のライブラリかぐらいは分かるはず
632デフォルトの名無しさん:2005/08/14(日) 11:52:52
一瞬見たときはオーディオ関連のライブラリキターと思ったよ。
633デフォルトの名無しさん:2005/08/14(日) 17:39:48
なんでwaveなのかよくわからん
634デフォルトの名無しさん:2005/08/14(日) 17:58:11
それはなぜspiritだとかphoenixなのかと同じくらい難しいな
635 ◆oKLssLV2YM :2005/08/14(日) 22:00:20
一瞬、tangle/weave から引っかけたかとおもたが…ちょと脈絡なさすぎかな
636デフォルトの名無しさん:2005/08/15(月) 19:06:00
なんかの頭文字じゃないの?
637デフォルトの名無しさん:2005/08/21(日) 11:08:35
Boost.Spirit の質問です。

int_p のセマンティックアクションで、std::vector に取得した数値をpush_back
したいのですが、分かりやすい方法だと、vector<int>:push_back のラッパ関数を作って、
それをセマンティックアクション関数としますが、
直接push_backをコールすることは出来ないでしょうか?:

// global
vector<int> v;
// grammar 派生クラスのコンストラクタ内
my_rule = int_p[&v.push_back];


こんな感じでかけないでしょうか?
上記コードだとコンパイルエラーになります。
>sp.cpp:36: error: no match for 'operator[]' in 'boost::spirit::int_p[ v.push_back]'
638age:2005/08/21(日) 11:09:48

639デフォルトの名無しさん:2005/08/21(日) 12:50:14
>>637
メンバ関数ポインタと bind 使えばできるんじゃないかな?
記述が泥臭くなりそうだけど。
640デフォルトの名無しさん:2005/08/21(日) 13:49:41
>637
push_back_aは試してみました?

my_rule = int_p[push_back_a(v)];

ドキュメントとしては
http://www.boost.org/libs/spirit/doc/predefined_actors.html
の"Append values to a vector (or other container)",ソースの例としては
http://www.boost.org/libs/spirit/example/fundamental/number_list.cpp
とかが参考になるかと.
641デフォルトの名無しさん:2005/08/21(日) 13:50:28
>>637

http://spirit.sourceforge.net/distrib/spirit_1_8_2/libs/spirit/doc/predefined_actors.html

に"push_back_a(ref)"という定義済みアクションが説明されています。これを使用すればよいのでは。

my_rule = int_p[.push_back(v)];

のような記述になると思います。
642デフォルトの名無しさん:2005/09/02(金) 16:30:08
今日VisualStudio2003環境にboostを入れてみた。
最初間違って -sTOOLS=vc7 としたら、
>>628 の症状を食らった。
後で気付いて -sTOOLS=vc-7_1 でやり直したら、まったく平気だった。
643デフォルトの名無しさん:2005/09/06(火) 09:47:52
なんか cygwin のパッケージになったみたい。
普通の zip パッケージで十分な気がするけど、意味あるのかな?
644デフォルトの名無しさん:2005/09/08(木) 00:58:42
>>643
ソフトのインストールに許可が要る会社では(既にcygwinを入れてる場合)
許可取る手間が省ける希ガス
645デフォルトの名無しさん:2005/09/15(木) 08:47:31
FileSystemでWindowsのFindFirstFileの様にファイルを列挙する事は出来ますか?
646デフォルトの名無しさん:2005/09/15(木) 09:04:23
FindFirstFileはいつからファイルを列挙できるようになりましたか?
647デフォルトの名無しさん:2005/09/15(木) 09:10:49
うぃ、Nextと合わせてそーいう風に使った時の様に、ですね。
釣られてんなー。
648デフォルトの名無しさん:2005/09/15(木) 14:15:36
確かにMFCのラッパークラスも列挙してくれないしなぁ。
結局自前でファイル名のvectorを返すクラスを作る羽目になる。
649デフォルトの名無しさん:2005/09/15(木) 15:32:09
いや、わざわざ作るならiteratorだろ。
650デフォルトの名無しさん:2005/09/15(木) 17:07:07
bi-directionalやrandom iteratorが必要な時は、
vectorを作っとくって選択肢もあると思うよん。
651デフォルトの名無しさん:2005/09/15(木) 18:02:50
ないと思う。
652デフォルトの名無しさん:2005/09/15(木) 18:58:36
みんな、filesystemとかalgorithm/stringとか、日本語の問題はどうしてるの?
653デフォルトの名無しさん:2005/09/15(木) 19:14:20
>>652
filesystem はともかく、algorithm/string の方は何か問題ある?
654デフォルトの名無しさん:2005/09/15(木) 21:09:29
>>653
trimとかstarts_withみたいな対象位置が固定されてるの以外はたぶん全部アウト。
shift_jisだと2バイト目にASCIIが来ることがあるから。
655デフォルトの名無しさん:2005/09/15(木) 21:33:58
じゃあ wchar_t で Unicode が扱える環境で
wchar_t の文字列を扱う分には OK?
656デフォルトの名無しさん:2005/09/15(木) 21:51:29
>>655
OK。
regexとかもそうやって使うのが普通になっちゃってると思う。

でも全体をUnicodeにしようとすると、
wchar_tへの対応がboostどころか標準ライブラリまで中途半端なんだよね…
657デフォルトの名無しさん:2005/09/15(木) 22:00:04
標準ライブラリに関してはfstream類がファイル名にUnicodeを受け付けてくれれば俺は十分だ。
658デフォルトの名無しさん:2005/09/15(木) 23:13:14
Unicodeの処理系というかクラス作るのは正規化その他が必要で面倒だな。
外の世界とやり取りする時にNFCとかしないとどうにもならないもんな。
659デフォルトの名無しさん:2005/09/17(土) 16:33:23
なぜ boost::intrusive_ptr は以下のコードがコンパイルエラーになる
仕様にしたのでしょうか?

#include <boost/intrusive_ptr.hpp>

struct A {
int count;
A() : count(0) {}
};

void intrusive_ptr_add_ref(A* a) {
++a->count;
}

void intrusive_ptr_release(A* a) {
if ( --a->count == 0 )
delete a;
}

void foo(boost::intrusive_ptr<A> p1, const A* p2) {
p1 == p2;
}
660デフォルトの名無しさん:2005/09/18(日) 01:06:48
こんなところで訊いても作者は見てないと思うぞ。
661デフォルトの名無しさん:2005/09/18(日) 08:16:17
intrusive_ptrはconst *とはなじまんだろ。
void foo(boost::intrusive_ptr<A> p1, A* const p2) {
p1 == p2;
}
662デフォルトの名無しさん:2005/09/18(日) 15:08:03
鼻血マン?
663デフォルトの名無しさん:2005/09/18(日) 16:07:55
>>662
いや、「はなじまん」であって「はなぢまん」ではない。
つまり、「花自慢」だ。
664デフォルトの名無しさん:2005/09/18(日) 17:04:06
>>659
おまけで生ポインタとの比較演算子を入れて中途半端になっただけじゃない。
const A* だけじゃなくて、Aの基底クラスへの生ポインタとも比較できないし。
boost::shared_ptrやstd::auto_ptrも生ポインタとの比較演算子は定義していないよ。
665デフォルトの名無しさん:2005/09/18(日) 19:27:37
build自体でこけてる俺はいったいどうすれば

C:\boost_1_33_0>bjam -sTOOLS=vc-7_1 --prefix="C:\Program Files\Microsoft Visual
Studio .NET 2003\Vc7"
Building Boost.Regex with the optional Unicode/ICU support disabled.
Please refer to the Boost.Regex documentation for more information
(and if you don't know what ICU is then you probably don't need it).
Jamfile:249: in load-jamfiles
*** argument error
* rule stage ( name : sources + : requirements * : local-build * )
* called with: ( include/boost-1_33 : : <locate>C:\Program Files\Microsoft Visu
al Studio .NET 2003\Vc7 <tree-subdirs>C:\boost_1_33_0 <target>all : <suppress>tr
ue )
* missing argument sources
C:\boost_1_33_0\tools/build/v1\boost-base.jam:2329:see definition of rule 'stage
' being called
C:\boost_1_33_0\tools\build\v1\bootstrap.jam:21: in boost-build
C:\boost_1_33_0\boost-build.jam:16: in module scope

C:\boost_1_33_0>
666デフォルトの名無しさん:2005/09/18(日) 20:48:25
事故解決した。スマソ
667デフォルトの名無しさん:2005/09/18(日) 21:48:16
VARARGS32.batを実行し忘れたなんてつまらん落ちじゃ…
668デフォルトの名無しさん:2005/09/18(日) 21:55:51
いや、ディレクトリのコピーミス。
今は、MacOSのをビルドしている。
669デフォルトの名無しさん:2005/09/21(水) 04:57:08
let's boostの通りvc7.1に入れようとしたんですが、全てskipされてしまう。
ビルドできない理由にはどんなのがあるでしょうか。pathとかに何か余計な事書いてあるのかな。
670デフォルトの名無しさん:2005/09/21(水) 12:54:53
>>669
bjam -sTOOLS=vc7_1

vc7.1→vc7_1
671デフォルトの名無しさん:2005/09/21(水) 16:04:27
672デフォルトの名無しさん:2005/09/21(水) 16:37:58
しかしLet's boostにもvc-7_1と書いてあるのだが。
673デフォルトの名無しさん:2005/09/21(水) 17:33:47
こういうやつは、インストできても使いこなせまい。
Boostは相当難解なマニュアルをよまなきゃ使えないから。
せめてエラーメッセージから問題を解決する糸口をつかめる
ようでなきゃダメ
674デフォルトの名無しさん:2005/09/21(水) 17:46:14
使うのだけビルドすりゃいいんだけどな
675デフォルトの名無しさん:2005/09/22(木) 08:33:40
unit_test.hppの
BOOST_LIB_NAMEが
unix_test_frameworkになってるんだが、
boost_unit_test_frameworkの間違いだよね?
676デフォルトの名無しさん:2005/09/23(金) 00:06:16
boost::bindが返す関数オブジェクトを呼ぶとき、右辺値を渡せないのにやられた。

とりあえずboost::functionで回避できたから良かったけど。
677デフォルトの名無しさん:2005/09/23(金) 00:35:04
>676
boost::crefとか
678デフォルトの名無しさん:2005/09/23(金) 01:09:18
boost::馬鹿まるだし
679デフォルトの名無しさん:2005/09/23(金) 01:38:15
boost::戦車でやってくる
680デフォルトの名無しさん:2005/09/23(金) 10:22:23
toost::山崎パン
681676:2005/09/23(金) 10:50:01
>>677
おおThanks。見事使えたよ。
682デフォルトの名無しさん:2005/09/23(金) 10:52:41
>680
もしかして: toast
683デフォルトの名無しさん:2005/09/23(金) 13:54:43
> 680 名前:デフォルトの名無しさん [sage] 投稿日:2005/09/23(金) 10:22:23
> toost::山崎パン




                       m9(^Д^) プギャー




684デフォルトの名無しさん:2005/09/23(金) 14:00:52
boast::パン焼きライブラリ
685デフォルトの名無しさん:2005/09/23(金) 20:25:59
boost::net と boost::gui まだ?
686デフォルトの名無しさん:2005/09/23(金) 20:29:59
インスコで行き詰まる奴が続出する時点でC++の未来はないな
boostが標準化されるといううわさは何だったんだろうか
687デフォルトの名無しさん:2005/09/23(金) 20:36:59
↑事実無根の噂に踊らされる馬鹿
688デフォルトの名無しさん:2005/09/23(金) 20:57:22
boostは次期標準のたたき台にするって意味はあったとしても
それ自体が標準になるってことにはもともとなってない
C++0x(っていうかその前のTR1か?)ではスマートポインタとかが
かなりそっくり取り込まれてるよな
689デフォルトの名無しさん:2005/09/23(金) 21:00:18
D言語がC++の居場所を奪うまでの我慢だな
690デフォルトの名無しさん:2005/09/23(金) 21:23:21
>>689
たぶんその時代はこないだろうけど。
      ・
      ・
      ・
      ・
      ・
      ・
C#がメインストリートを歩んでいくから。
691デフォルトの名無しさん:2005/09/23(金) 21:37:43
でもC#って意外なほど普及遅くない?
発表から5年くらい立ってるよね
692デフォルトの名無しさん:2005/09/23(金) 21:51:56
C#ではC++を置換はできんし、C++/CLIが来るからC#自体どうなることやらだ
693デフォルトの名無しさん:2005/09/23(金) 22:25:57
まあドトネト自体は言語に縛られないからいいんだろうけどね
694ヽ(´ー`)ノ ◆.ogCuANUcE :2005/09/23(金) 22:29:50
>>685
それよか boost::container_adaptor と boost::container_facade が欲しい。
695デフォルトの名無しさん:2005/09/24(土) 15:35:57
boostがインストールされている環境とそうでない環境で同一のファイルを使うために、
#ifndefなどでboostがある場合と無い場合を書きたいのですが、boostで定義される特有の
ものはないでしょうか?
696デフォルトの名無しさん:2005/09/24(土) 15:50:04
>>695
仮にそういうマクロがあったとしても、そのヘッダの前にincludeされていないと
感知できないわけだが、それでもいいのか?
いいなら、BOOST_CONFIG_HPPをテストするのはどうだろう。
697デフォルトの名無しさん:2005/09/24(土) 16:08:03
>>925
メッセージの最大許可長の倍のバッファを用意して
実際のリードバッファはそのバッファの中を移動させながら使っています。
\0から逆方向にもパースできる書式なので、死んだメッセージ以外の読みもらしもありません。

ただTCPを使ってる以上は不正の段階で切断でもいいかも知れませんね・・・
698デフォルトの名無しさん:2005/09/24(土) 16:11:24
ごめんね
699デフォルトの名無しさん:2005/09/27(火) 06:10:45
>>697
詳しく
700ハーピィ:2005/10/05(水) 01:31:19
E・∇・ヨノシ <700ゲット♫
701デフォルトの名無しさん:2005/10/15(土) 20:31:17
program_optionsってwgetoptの代わりに使えるの?
702デフォルトの名無しさん:2005/10/16(日) 02:36:04
>>701 自分で試してみるといいよ。
703デフォルトの名無しさん:2005/10/16(日) 06:13:43
正直に「貴様のような試しもしない糞野郎が憎くてしようがない」と書けばいいのにな

「いいよ。」だってさ。二週間言いたくて見張ってたんだろうな
704デフォルトの名無しさん:2005/10/16(日) 08:17:24
>>703
自信の狭隘な視野でしかものを見られないと恥を掻く典型だね。
705デフォルトの名無しさん:2005/10/16(日) 08:49:05
>>704
博学だねー。
706デフォルトの名無しさん:2005/10/16(日) 08:58:43
こんなんで博学って、どんな教養の無さなんだろう ;-)
707デフォルトの名無しさん:2005/10/16(日) 10:10:12
boostっていつ標準に組み込まれるの?
708デフォルトの名無しさん:2005/10/16(日) 10:21:56
>>707
C++ 0xに。
もちろんboostの全てが組み込まれるわけではない。
709デフォルトの名無しさん:2005/10/16(日) 11:39:09
C++/CLIは言語にlambdaを組み込んじゃったよね。

find_if( v.begin(), v.end(), { return _x == 3; } );

MicrosoftにはLippmanとかSutter強者がいるから、
C++ 0xが分けわからん状態にならんように頑張って欲しい。> JTC1/SC22/WG21
710デフォルトの名無しさん:2005/10/16(日) 17:29:45
じゃ標準化関連の話題でも。

ttp://article.gmane.org/gmane.comp.lib.boost.devel/132958

Boost.TR1 受理。TR1 は ISO の最終投票にも満場一致で通過。
次は TR2。いくつかのライブラリに対する評価はこんな感じらしい。

ttp://article.gmane.org/gmane.comp.lib.boost.user/13925

Range & String-algo 欲すぃ...
711デフォルトの名無しさん:2005/10/16(日) 17:59:10
string_algoが入らないなんてあり得ないな
712デフォルトの名無しさん:2005/10/16(日) 19:47:28
http://boost-consulting.com/vault/index.php?&direction=0&order=&directory=TR1

Functionality supported includes:
・ Reference Wrappers
・ Smart Pointers
・ Class template result_of.
・ Function template mem_fn.
・ Function Object Binders.
・ Polymorphic function wrappers.
・ Type Traits.
・ Random Number Generators and Distributions.
・ Tuples.
・ Tuple Interface to std::pair.
・ Fixed Size Array.
・ Hash Function Objects.
・ Regular Expressions.
・ Complex Number Algorithm Overloads.
・ Complex Number Additional Algorithms.

Functionality in TR1 but not yet available:
・ Mathematical Special Functions.
・ Unordered Associative Set (Hash Table).
・ Unordered Associative Map (Hash Table)
・ C99 C language additions.
713デフォルトの名無しさん:2005/10/16(日) 20:22:53
一番新しい Draft は N1836 かな。
しかし、N1885,!886 がすごく気になる…
714デフォルトの名無しさん:2005/10/16(日) 20:29:33
「boostはまだ死んでなんかいない。見よ、この発展を!」ってとこか。
715デフォルトの名無しさん:2005/10/16(日) 21:10:52
>>713
http://lists.boost.org/Archives/boost/2005/09/93002.php
ってことらしけど、Reisのページ、
http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/research/
にも最近の動向は書いてないなあ。

conceptのdraftはN1849なんだろうから、concept廻りの型理論/推論関係?
716デフォルトの名無しさん:2005/10/16(日) 23:42:21
>>709
そもそも lambda の言語ネイティブでのサポートというのは,
C++ の基本的な設計理念と非常に相性が悪いように思うんですけれど,どうなんですかね?

>>715
私の理解が正しければ,今現在の concept に関する提案では
Stroustrup & Dos Reis のもの (N1510, N1522, N1536, N1782) と
Gregor, Siek らのもの (N1758, N1849) の2つが競合している状態だったはずです.
各々の proposal をちゃんと読んでないので,各々の長短所が何なのかとかは
いまいち理解してないですけれど.流し読みした限りではあまり違わないような?
717デフォルトの名無しさん:2005/10/17(月) 19:34:49
>>716
無名文字列リテラルとか昔からあるわけだし、
もっと早くから無名関数が有っても良かったような・・・
718デフォルトの名無しさん:2005/10/17(月) 23:13:32
もうexpression templateがあるしなあ。

x => x * x

C++/CLIはこんなんになるみたいだが。
719デフォルトの名無しさん:2005/10/17(月) 23:58:39
やっぱり関数型言語へ近づいていくんですね。
720デフォルトの名無しさん:2005/10/18(火) 00:24:37
autoとかdecltypeとか型推論も激しくなってきたしなあ。
decltype、キーワードはtypeofにして欲しいのう…
721デフォルトの名無しさん:2005/10/18(火) 11:59:34
>>719
高階関数はともかく単なる無名関数なら
単に記述性の問題だけのような気がする。

 アセンブラ定数や文字列はラベルを付けずに式中に簡単に
記述できたのに、関数だけが態々別途定義して参照する必要
があったのは、その辺りだけアセンブラみたいなスタイルで
実際不便だったし。
722デフォルトの名無しさん:2005/10/18(火) 12:28:55
安易に拡張するとスコープやクロージャの問題が出るけどね。
ETなら問題ないけど。
723デフォルトの名無しさん:2005/10/18(火) 14:44:47
>>721
いまのC++と関数型言語の違いは主に記述性にあると思うんだが。
724デフォルトの名無しさん:2005/10/18(火) 21:48:21
最大の違いは、推論のある型システムだろ。
725デフォルトの名無しさん:2005/10/18(火) 22:02:47
スコープ等の問題まで見据えたときに,効率や安全性その他も考慮してなお
標準化に耐えうるだけの,C++ コミュニティ全体のコンセンサスが得られる
ラムダ式の仕様拡張の妥協点を見出すのは非常に難しいと感じるのですが
どうなんでしょうか?
個人的には,言語ネイティブでのサポートよりも,どちらかといえば
(Boost.Lambda 以上の豊かな表現力を持った)ライブラリレベルでの解法が出現する
可能性の方がまだ見込みがあるのではないかとさえ考えるのですが…….

>>720
今のところ decltype と typeof で微妙に機能が違うように提案してたと思います.

>>722
ET だと問題ないのはどうしてですか?
726デフォルトの名無しさん:2005/10/18(火) 22:23:24
>>725
> ET だと問題ないのはどうしてですか?

Expressionそのものはfirst classのobjectじゃないですよね。
生成された構造木はfirst classのobjectですが。

構造木の生成はプログラマが制御できます。というしなければなりません。
# bindingはこの生成時に解決されます。

だからクロージャ問題がありません。λ式と違って。

ETはコンビネータによるλ式の実装に似ていますよね。
727デフォルトの名無しさん:2005/10/19(水) 01:14:49
なあ、ETって何?
例の宇宙人の映画?
728デフォルトの名無しさん:2005/10/19(水) 01:26:15
Expression Template
729デフォルトの名無しさん:2005/10/20(木) 00:17:07
>>726
↑この馬鹿は何を言ってるんですか?
730デフォルトの名無しさん:2005/10/20(木) 00:44:47
お前が解読しろ
731デフォルトの名無しさん:2005/10/21(金) 15:10:02
Spiritで、セマンティックアクションでクラスのメンバ関数を呼び出すにはbindを使えということですが、

class Klass:public grammer<Klass>{
 public:
 void hoge(const char* first,const char* last);
 template<typename S> struct definition {
  rule<S> expr;
  definition(const Klass& self) {
   expr = *(alpha_p | '_')[bind(&Klass::hoge,self, _1,_2)];
  };
 };
}
732デフォルトの名無しさん:2005/10/21(金) 15:17:46
うあ、途中で切れた。
>>731のコードだと
error C2440: '引数' : 'const Klass *' から 'Klass *const ' に変換できません。
と言われます。何か自分が勘違いしてますでしょうか?
環境はVC7.1+STLPort4.6.2+boost1.33.0です。
733デフォルトの名無しさん:2005/10/21(金) 15:50:46
>>731
selfはconst Klass&だから非constなhogeを呼べない。
734デフォルトの名無しさん:2005/10/22(土) 00:04:47
無茶初歩的やん!
735デフォルトの名無しさん:2005/10/30(日) 00:17:44
Spiritを勉強しようと思ってるんですが
Boost C++ Library プログラミングって本は
ttp://boost.cppll.jp/HEAD/libs/spirit/
のリファレンスを読んだ上で購入する価値ありますか?

TREE_TO_XMLとか構文解析木辺りを知りたいのです。
736デフォルトの名無しさん:2005/10/30(日) 00:27:39
>735
>TREE_TO_XMLとか構文解析木辺りを知りたいのです。
それだとあまりオススメできないかな
737デフォルトの名無しさん:2005/10/30(日) 00:49:48
ないにょ
738デフォルトの名無しさん:2005/10/30(日) 08:40:08
LISPでも勉強した方がマシ
739デフォルトの名無しさん:2005/10/30(日) 09:18:27
>>736-737
dクスです
740デフォルトの名無しさん:2005/10/31(月) 02:10:36
spirit の章なら pdf でサンプルとしてあるみたい
ttp://www.kmonos.net/pub/BoostBook/
741デフォルトの名無しさん:2005/10/31(月) 09:12:14
>>740
TREE_TO_XML辺りの記述もありますね。
ISO8859-1固定か・・・。
742デフォルトの名無しさん:2005/10/31(月) 19:00:47
「制御の逆転」
の場合でもiteratorパターンを使いたいのですが、
通常のscope外でも動作し続ける
for文ぽいものってあるのでしょうか?

boost statechartで可能?
743デフォルトの名無しさん:2005/10/31(月) 23:50:01
こちらで聞いてみてはと誘導されました。

serializationで抽象クラスのポインタシリアライズがうまくいきません。

ポインタシリアライズの場合constってどうすれば・・・

どこかにサンプルコードとかありませんかね?
744デフォルトの名無しさん:2005/11/01(火) 00:05:40
const_cast
745デフォルトの名無しさん:2005/11/04(金) 00:49:58
Boost Graph LibraryもココでOKですか?
746デフォルトの名無しさん:2005/11/04(金) 01:08:09
多分ここが最適でしょう>Boost Graph Library
747デフォルトの名無しさん:2005/11/05(土) 08:16:45
MPLってのはModernC++Designで使われてるLokiの役割をカバーしてるの?
748デフォルトの名無しさん:2005/11/05(土) 08:22:15
>>747
基本的なメタプログラミングの道具(typelistとか)はカバーしてるけど、
デザインパターンの具体化のようなものは無い。
749デフォルトの名無しさん:2005/11/05(土) 08:33:42
>>748
んなこたーない
750デフォルトの名無しさん:2005/11/06(日) 01:35:45
boost thread にはthread allocatorのようなものないのかな...
MFCでも使えるんだろうか...
751デフォルトの名無しさん:2005/11/06(日) 23:49:51
ptr_mapはデフォルトコンストラクタがないクラスを扱えないのか?
/boost/ptr_container/ptr_map_adapter.hppの171行目の

value_type res = new T(); // strong

が原因みたいだけど
shared_ptrを使うしかないのかな
752デフォルトの名無しさん:2005/11/07(月) 00:53:56
boost::shared_ptrをstd::shared_ptrと書ける日が来るのはいつですか?
753デフォルトの名無しさん:2005/11/07(月) 01:24:48
シラネ。
前回のアップデートが2003だから、次は2008?
754デフォルトの名無しさん:2005/11/08(火) 19:30:19
using boost std;
755デフォルトの名無しさん:2005/11/11(金) 10:35:03
Boost1.33.1Betaが来てるわけだが
read_write_mutexが削除されてる.・゚・(ノД`)・゚・。
756デフォルトの名無しさん:2005/11/11(金) 11:13:55
なんか、デッドロック起こすらしいけど…
757デフォルトの名無しさん:2005/11/15(火) 02:45:00
お久しぶりです。500あたりでディレクティブとスキャナについて質問した者です。
前の問題は荒技でなんとかなったのですが…。
抽象構文木の解析でposition_iteratorを使ってエラー行を出力させてるのですが、
解析そのものが失敗したときはast_parseの返却値のstopを取得すればエラー行が分かるようですが、
評価のときにnode_val_dataのイテレータがposition_iteratorではなくてconst wchar_t*とまんまなので困っています。
ソースを見たらstd::iterator_traits<IteratorT>::value_typeで中身が暴かれてしまっているのが原因かなと。
おそらくコピーを保持しているからだと思うのですが…。
構文木の評価にもposition_iteratorを利用しようとしていることそのものがだめなのかもしれません。
758デフォルトの名無しさん:2005/11/20(日) 19:15:55
Boost Test Libraryで質問です。

横着して #include <boost/test/auto_unit_test.hpp> を読み込んでから
BOOST_AUTO_TEST_CASE ( ... )
でテストケースをどかどか追加しているのですが、この方法でテストケースの実行順序を
明示的に制御することはできますか?より下位の機能を試験するテストケースを先に
実行するように並べたいのです。テストケースは複数ファイルに散在しています。
759デフォルトの名無しさん:2005/11/20(日) 21:37:44
Boost Graph Libraryでvertex(integer, graph);で引っ張ってきた
vertex_descriptorから元のintegerを調べる逆写像みたいなのって用意されてないの?
760デフォルトの名無しさん:2005/11/23(水) 07:32:41
namespace fs = boost::filesystem;
try{
 fs::path dir("c:/usr");
}catch(exception &e){ cerr << e.what() << endl;}

としたら、実行時に、

boost::filesystem::path: invalid name "c:" in path: "c:/usr"

という例外出てしまうんですが、何がまずいんでしょうか?
cygwin g++ で、boostライブラリは配布サイトから持ってきたものです(cygwin同梱ではない)。
761デフォルトの名無しさん:2005/11/23(水) 09:27:13
はて、文字通り"C:"がいかんと言われているようだが。
#そもそもCygwinにはドライブの概念がないのだよね。
762デフォルトの名無しさん:2005/11/23(水) 09:32:08
cygwinでC:にアクセスしたい場合は
/cygdrive/C/usr
にしないとね
763デフォルトの名無しさん:2005/11/23(水) 09:37:54
>>762
やっぱダメみたいです。

boost::filesystem::directory_iterator constructor: "\cygdrive\c\usr": 指定されたパスが見つかりません。

Cygwinのパスシステムがネックになってるみたい。
764デフォルトの名無しさん:2005/11/23(水) 09:44:05
\じゃなくて/というオチは?
765デフォルトの名無しさん:2005/11/23(水) 09:52:27
/ で指定していますが、イテレーションしているところで >>763 の例外が出ています。
path::normalize() とかやってみたけど、やっぱだめ。

とりあえず、filesystemのソース読み中・・・。
766デフォルトの名無しさん:2005/11/23(水) 10:04:59
fs::path dir("c:/usr", fs::native);
VC++だけどこうしたらできた。もちろん'/'だけでなく'\\'でも問題なし。
767760:2005/11/23(水) 10:35:46
http://boost.org/libs/filesystem/doc/index.htm#path
↑ ここに Note for Cygwin users が書いてありました。
コンパイル時に、BOOST_POSIXマクロ指定しなきゃならんと書いてある・・・のかな?
768デフォルトの名無しさん:2005/11/23(水) 10:38:03
>>767
ライブラリのコンパイル時にBOOST_POSIXマクロを指定しろと書いてあるね。
ユーザプログラム側で指定する必要はない、と
769デフォルトの名無しさん:2005/11/23(水) 18:25:21
>>757
以下が 757 さんがやりたいことかどうか分からないですけれど,

  typedef position_iterator<wchar_t const *> Iterator;
  typedef node_iter_data_factory<Iterator> NodeFactory;
  typedef tree_parse_info<Iterator, NodeFactory> ParseInfo;
  Iterator first = /* 入力の開始位置 */;
  Iterator last = /* 入力の終了位置 */;
  ParseInfo info = ast_parse(first, last, your_rule, NodeFactory());

こうすれば tree_node の value.begin() と value.end() が,
そのノードに対応する入力シーケンスの範囲を指してくれます.
ただ,node_iter_data_factory を使う場合構文木を操作する間
入力シーケンスを維持しないといけないという制限が出てきます.
770デフォルトの名無しさん:2005/11/23(水) 18:27:13
>>758
翻訳単位が分かれているなら諦めるしかないと思います.
恐らくグローバルオブジェクトの初期化順序と同等の問題になるでしょうし.

>>759
adjacency_list を使っているのだと思いますけれど,
VertexList のコンテナとして vector (vecS) を指定しているなら
vertex_descriptor がそのまま頂点の番号として使えます.

  Vertex u = vertex(0, g);
  std::cout << u << std::endl;

より汎用な形で書きたいなら

  std::cout << get(vertex_index_t(), g, u) << std::endl;

という書き方があります.こちらの書き方のほうが好ましいです.
VertexList のコンテナとして vector 以外を指定している (例えば listS) なら
以下のような形でユーザ側で頂点のプロパティを管理しなければならないです.

  typedef property<vertex_index_t, std::size_t> VertexProperty;
  typedef adjacency_list<listS, listS, directedS, VertexProperty> Graph;
  typedef graph_traits<Graph>::vertex_descriptor Vertex;
  Graph g;
  Vertex u = add_vertex(g);
  put(vertex_index_t(), g, u, 0);
  Vertex v = add_vertex(g);
  put(vertex_index_t(), g, v, 1);
  Vertex x = vertex(1, g);
  std::cout << get(vertex_index_t(), g, x) << std::endl;
771759:2005/11/23(水) 20:27:59
>> 770
どうもです。BGL使ってる人は居ないんだと思ってスルー覚悟してました。
adjacency_listを使ってますが・・・難しいですね。C++。
本家のドキュメント読み漁って所望の動作は実現できるようになりましたが
これがベストな解なのかまったく自信がないです。精進したいので参考になる
サイトとか書籍とか(一冊だけ出てるみたいですけど)教えていただけると幸いです。
772デフォルトの名無しさん:2005/11/23(水) 20:55:15
>>771
英語版があるらしいので、君が翻訳してくれると助かる。
773デフォルトの名無しさん:2005/11/24(木) 23:20:09
boost使えねえ…
774デフォルトの名無しさん:2005/11/24(木) 23:34:28
>>773
詳しく
775デフォルトの名無しさん:2005/11/25(金) 00:06:25
>>774
(理解力が足りなくて)boost使えねえ…
776デフォルトの名無しさん:2005/11/25(金) 00:07:36
(馬鹿上司のせいで)boost使えねぇ…
777デフォルトの名無しさん:2005/11/25(金) 01:10:43
泣けるな >776
VC6でも使っているの?
778ヽ(´ー`)ノ ◆.ogCuANUcE :2005/11/25(金) 08:28:00
現場じゃまだ使ってるところもあるのか…。
779デフォルトの名無しさん:2005/11/25(金) 08:36:43
VC++4.2だって普通に使われてるぞ
780デフォルトの名無しさん:2005/11/25(金) 09:15:21
boost禁止令は結構見かけるけど、一体どういう理由なんだ?
新しいライブラリを導入して現場を混乱させたくないってのが主なのかな
781デフォルトの名無しさん:2005/11/25(金) 09:40:33
>>780
現場のレベルも考えずに、自称”できるPG”のバカがトリッキーな技を仕込む。
782デフォルトの名無しさん:2005/11/25(金) 12:05:43
永遠のベータ版みたいなライブラリを入れてどうしたいんだ
783デフォルトの名無しさん:2005/11/25(金) 12:57:31
作業を楽にするために活用したい、に決まってるじゃん。

お前はライブラリに対して何かそれ以外のことをしてるのか?
毎朝心を込めて朗読でもしてるとか。
784デフォルトの名無しさん:2005/11/25(金) 12:59:28
大体「boost」ってひとくくりにして、

> 永遠のベータ版みたいなライブラリ

って言われてもね。
785デフォルトの名無しさん:2005/11/25(金) 15:27:19
VC++2005ExpressでBoostがうまくビルドできない。
VC++7の時のやり方で普通にやると「オプションが廃止された」とか出る。
その後ネットで調べ、エラーが出なくなったので組み込んでみると、VC++2005Expressの方で「コンパイラオプションが違う」とか出るorz

1.33.1betaをVC++2005Expressでちゃんとビルドできた人、アドバイスお願いします。
786デフォルトの名無しさん:2005/11/25(金) 15:58:40
1.33.0 だったら vsvars32.bat をいじれば
ビルドできたけど、1.33.1 はやってないからわからん。
787デフォルトの名無しさん:2005/11/25(金) 23:18:02
>>767
これって、どうやってマクロを定義するの?
bjam 使って、コンパイルスイッチマクロのON/OFFする方法が分からない。
どっか、詳しい情報無いですか? できれば日本語で・・・
788759:2005/11/25(金) 23:18:54
>> 770
ユーザ側で頂点のプロパティを管理する場合、インデックスは0から連番で登録して
いかないと意味をなしませんか?
他のところで管理しているデータとの対応を取るためにそちらのIDを入れてみると
IDを手掛かりに頂点を引っ張って来ようとしたときに登録した番号に対応する頂点が
見付からなかったり、まだ登録してない番号の頂点が見付かったりします。

ビジタとか使ってグラフ操作で楽できればいいなぁと思ったのですが、楽するどころか
やりたい処理内容まで到達できずにくじけそうです。何といってもコンパイルエラーから
原因を突き止めるのが大変だし・・・疲れたな orz
789デフォルトの名無しさん:2005/11/26(土) 09:40:22
>>786
1.33.0だとOKでしたか。
1.33.1でも試してみたいので、その際にいじったやり方を教えてもらえないでしょうか?
790デフォルトの名無しさん:2005/11/26(土) 19:32:20
色んな型のデータを格納できるコンテナみたいなのありますか?
791デフォルトの名無しさん:2005/11/26(土) 20:11:10
boost::variant
792デフォルトの名無しさん:2005/11/26(土) 20:25:47
boost::any
793デフォルトの名無しさん:2005/11/26(土) 23:06:48
boost::tuple
794デフォルトの名無しさん:2005/11/26(土) 23:16:50
ゴミみたいなライブラリかき集めてで優越感に浸る
それがboostクオリテ
795デフォルトの名無しさん:2005/11/26(土) 23:18:09
>794
お前がboost嫌いなのはよく分かったから落ち着け、な?
796790:2005/11/27(日) 00:54:15
すいません。
それでイテレーター付いていて、くいくいと順に値を取り出せるような奴あります?
797デフォルトの名無しさん:2005/11/27(日) 00:56:57
>>796
boost::variantとboost::anyは共用体のように排他的であり、
複数の型のデータを同時に保持しているということはありえない。
798デフォルトの名無しさん:2005/11/27(日) 01:05:45
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <boost/variant.hpp>
#include <boost/any.hpp>
using namespace std;

typedef boost::variant<int, double, string> item_type;
void print_type(item_type &item){
  cout << "[ type id = " << item.which() << " ] " << item << endl;
}

int main()
{
  vector<item_type> v;
  v.push_back(123);
  v.push_back(3.141592);
  v.push_back("あいうえお");
  for_each(v.begin(), v.end(), print_type);
  return 0;
}
799798:2005/11/27(日) 01:07:29
途中で送信しちまった。


これが一番、やりやすそうだな。と、コメント入れ忘れた
あと、any のインクルード消すの忘れてた。

800デフォルトの名無しさん:2005/11/27(日) 01:12:46
>>795
自分の頭の出来が原因で嫌いな場合、落ち着くことはとても難しいと思います :-)
801・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/27(日) 01:36:23
>>799
ほほう。面白いな(・∀・)

WTLでリストビューをオーナーデータにして使ってるんだけど、
整数型・浮動小数型・文字列型・日付型なんかに合わせてソートを実装したいと思ってるけど。
うまい実装法が見つかりそうな気がした。
具体的に言えばSQLとかで取ってきたデータを整理するのに使いたい。



気付いたら俺のプログラムでBoostで使ってるライブラリはMersenneTwisterくらいでした。
SandBoxにGUI扱うためのクラス群が上がってるけど、実用に至るのはいつ頃だろうな。
Cocoaなんかもある。純粋なC++で使えるんかいな。
802デフォルトの名無しさん:2005/11/27(日) 06:12:57
文字列型をクソ真面目に文字列比較でソートする必要はない。
初回オンリーの真面目ソート時にあらかじめ重み付けされた値を付与させておいて、
以後はその値でソートする。ま、常識か。
803・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/27(日) 17:27:18
もちろんそれは理解している。

俺の場合は、単純に先頭をsizeof (int) 個分だけ取り出して
(str[0] << 24) | (str[1] << 16) | (str[2] << 8) | str[3]

とかやっておけば大概の場合はよくね?とか思っている。

まあBigEndianならこの演算自体不要だね。普通に読み出せば文字列の先頭バイトが上位にくる。
でもBigEndianなプロセッサって大概、アラインメントの制約厳しい気もす。

まあ、文字列本体とは別に4バイトや8バイトデータサイズが増えたってさして気にするこたないけど。
804デフォルトの名無しさん:2005/11/27(日) 19:07:52
誤爆じゃねーの?
805757:2005/11/27(日) 22:38:54
>>769
遅れてすいません。
解決しました。ありがとうございました。
806デフォルトの名無しさん:2005/11/28(月) 04:49:44
VC6でsignalってプリコンパイルできない?
807デフォルトの名無しさん:2005/11/28(月) 07:44:42
>>806
VC6を使うな。
808デフォルトの名無しさん:2005/11/28(月) 07:50:17
だが断る
809デフォルトの名無しさん:2005/11/28(月) 11:49:42
>>789
INCLUDE と LIB にそれぞれ
Platform SDK の include と lib のパスを追加しました。

試してみたら 1.33.1 もビルドできましたよ。
810806:2005/11/28(月) 13:56:51
>>807
そうか、出来ないのか…
811デフォルトの名無しさん:2005/11/28(月) 22:49:47
812デフォルトの名無しさん:2005/11/30(水) 02:23:18
>>789
ttp://pc8.2ch.net/test/read.cgi/tech/1131590396/121
これも忘れずにね

Boost1.31.0の場合だと、パス通しただけで普通に使えた。コンパイル時の警告は出るけど。
BCCで1.33がリンカエラーになったからUPしてなかったけど、そろそろ上げるかな・・・。
813デフォルトの名無しさん:2005/11/30(水) 16:48:32
boostのドキュメントがPDFになっているところありませんかね?

印刷して電車で読んでいるんだけど、
HTML版は大きいのはページが分かれていて印刷するのが面倒だから。

DocbookからPDFにするいいツールを持ってないし。
814・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/30(水) 22:59:00
PDF吐くだけならポストスクリプトドライバとGSがあればOKす。

紙で読むなら例のBOOST本のほうがいいんでね?
815デフォルトの名無しさん:2005/11/30(水) 23:18:38
PDFが欲しいって言ってんだろ?
816デフォルトの名無しさん:2005/12/01(木) 00:10:34
Pluckerに突っ込んで通勤電車はCLIEで読書これ最強。
817デフォルトの名無しさん:2005/12/01(木) 00:16:34
BGLでreverse_graphで反転させたグラフのプロパティが引っ張れないんだけど、
これどうしたらいいのか教えて偉い人。
コンパイルのエラーを眺めてみると反転前グラフのプロパティを反転後グラフの
プロパティに変更しようとして失敗してるっぽい。カスタムエッジプロパティとか
カスタムバーテックスプロパティとかてんこもり突っ込んでるからだめなんだろか。
そもそもエッジの向きを反転させただけで別クラスのオブジェクトに変更しないで
欲しいんだが・・・BOOST難しくてどう逃げたらいいのかわかんね。
818デフォルトの名無しさん:2005/12/01(木) 00:40:18
ttp://lists.boost.org/MailArchives/boost-users/msg02276.php
似てるってかモロ同じ内容の問い合わせ見付けたけど3年間放置されたままか o...rz
819デフォルトの名無しさん:2005/12/12(月) 17:14:06
>>813ですが、dblatexでなんとかなりました。
latexのsourceをちょっと修正しましたが。

http://dblatex.sourceforge.net/
820デフォルトの名無しさん:2005/12/16(金) 11:01:37
regexがバージョンアップして使い方わからんくなった
http://www.s34.co.jp/cpptechdoc/article/regexpp/
ここ、とおらね。
新バージョンのRegex解説、日本語版サイトってありますか?
821デフォルトの名無しさん:2005/12/16(金) 11:37:13
822デフォルトの名無しさん:2005/12/16(金) 11:39:46
       _
┌――─┴┴─――┐
│ セルフサービス .│
└―――┬┬─――┘
        ││   ./
      ゛゛'゛'゛ /
         /
     | \/
     \ \
      \ノ
823デフォルトの名無しさん:2005/12/16(金) 15:22:02
>>820
Config Headerいじってbjamした?

824デフォルトの名無しさん:2005/12/17(土) 20:20:57
cygwinの奴をboost-1.33_1にアップしたらregexがマトモに動かなくなった、
1.33に戻したら動くみたいだけど。
825デフォルトの名無しさん:2005/12/20(火) 16:31:51
BGLで質問

adjacency_listで同じプロパティをもつ頂点を追加しないようにする方法ありませんか。
辺の重複はチェックできますが、頂点の重複チェックは思うようになりません。
プロパティを別変数に持つのはエレガントではないので。
826デフォルトの名無しさん:2005/12/30(金) 17:12:52
vc2005でコンパイルしてみたんだけど
やたらと警告が出るのは仕様?
827デフォルトの名無しさん:2005/12/30(金) 17:19:52
>>826 俺も VC2005 入手したからやってみよっと。
828デフォルトの名無しさん:2005/12/30(金) 19:23:45
とりあえずC4819を無効にしたら静かになった。
829デフォルトの名無しさん:2005/12/30(金) 19:34:42
C4996 の方は _SCL_SECURE_NO_DEPRECATE というマクロを
コンパイラスイッチで定義するなりすれば回避できます.
C4819 の方はどうも日本語版でのコンパイルでのみ現れる警告のようで,
lexical_cast.hpp や is_base_and_derived.hpp 等のファイルに書かれている
著作者名の文字コードに起因する警告かと思います.
どちらの警告も Boost のコードに対するものなら放置しても
問題はないと思います. C4819 の方は,うっとうしいなら
コンパイラスイッチ (/wd) やプラグマ (#pragma warning) で消すなり,
警告にあるように該当するファイルの文字コードを変換するなり,
あるいは根治治療するなら boost-dev あたりにレポートしないと.(恐らく未報告)
830デフォルトの名無しさん:2005/12/30(金) 19:55:22
確かそれはバグとして報告上がってたな。
表示できない文字は含んでねえっつーの。
831デフォルトの名無しさん:2005/12/30(金) 20:06:00
む.コンパイラ側の問題でしたか.それだと boost-dev は関係ないですね.
せっかく beta でバグリポート上がってたのに結局対処されなかったのか…….
832デフォルトの名無しさん:2005/12/31(土) 08:25:31
C4819 は日本語版で現れるなら
他の言語版でも現れる可能性もあるわけだから、
やっぱそういう文字は取り除いておいた方がよくね?
って思ったが、そんな内容のメール投げたら
「極東の猿は黙れ」って言われそうだからやめとく(笑
833デフォルトの名無しさん:2005/12/31(土) 08:47:31
>>827
漏れも試してみたいんだが、VS2005は、どこでダウンロードできたんだっけ?
834デフォルトの名無しさん:2005/12/31(土) 09:57:56
ここ
http://www.microsoft.com/japan/msdn/vstudio/express/

漏れは theSpoke Premium のおまけで VS2005 Professional
をもらえたからそれを使ってます。
確かにさっきコンパイルしてみたらいっぱい警告出ますね。
ついでに cygwin でも使ってみるべ、と思ったら、
すでに cygwin の公式パッケージにありました。便利。

しかし、早く正式な標準になったらいいのにね。
各コンパイラインスコしたらすぐに使えるようだとうれしい。
835デフォルトの名無しさん:2005/12/31(土) 13:44:15
Boostの正規表現クラスって、ググると
reg_expression<char> regex = "<img +src=('|\").*('|\") *>";
みたいな使い方をしてるサンプルが結構あるんですが、
正しくは reg_expression<T1,T2>なんですよね?
バージョンによって結構差異があるんでしょうか?
836デフォルトの名無しさん:2005/12/31(土) 17:18:07
>>835
Boost.Regex
Class reg_expression (deprecated)
-
The use of class template reg_expression is deprecated: use basic_regex instead.
837デフォルトの名無しさん:2005/12/31(土) 17:30:52
>>836 ありゃ、もう deprecated でしたか。
とりあえずヘッダファイル見たら boost::regex と boost::wregex
を使えといわんばかりに typedef されていたので、
boost:regex と boost:wregex を使うことにしました。
838デフォルトの名無しさん:2005/12/31(土) 22:58:14
正しくは、とか言っときながら自分で確認もしてなかったのかよ
839デフォルトの名無しさん:2006/01/02(月) 05:26:20
それ、「正しくは」は関係無いでそ。
840・∀・)っ-●○◎- ◆Pu/ODYSSEY :2006/01/02(月) 08:20:28
reg_expressionってεπιστημη氏のページのサンプルがそうなってるよね。
アレは古いっしょ。

俺的にはマルチバイト対応してるonigurumaを推奨。てか1.33でRegex++重たくなって萎えた。
841デフォルトの名無しさん:2006/01/02(月) 22:23:59
MkDir1
とか言うのに失敗してインストールできない。
どうすればいいんでしょか…
ググり続けること半日。
全然解決法がみつかりません。

Win XP SP2
VS.net 2003
だれかヒントくださいお願いします。
842デフォルトの名無しさん:2006/01/03(火) 00:40:10
>>841
自己解決!

参考までに、
vcvars32.batが環境変数をSETするのに何故か失敗していた模様。
手動で必要な環境変数を設定すると成功。
あーつかれた…
843デフォルトの名無しさん:2006/01/12(木) 06:21:57
http://pc8.2ch.net/test/read.cgi/tech/1135529419/774-775
Visual Studio 2005 でビルドするとメモリリーク発生?
844デフォルトの名無しさん:2006/01/12(木) 06:39:02
>>843
STLportのnode allocatorが原因
boostとは無関係
845デフォルトの名無しさん:2006/01/12(木) 12:41:24
ublas使ってる人いる?
1.32.0で通るコードが1.33.0で全然ダメでしたorz
どうもublas的には1.32.0の方が堅牢っぽいです

ublasの情報少ないし、誰かのためになれば・・・と、一応ご報告
846デフォルトの名無しさん:2006/01/12(木) 22:55:17
> 1.32.0で通るコードが1.33.0で全然ダメでした
通らなかったコードが欲しいな。
その方がもっとためになる。
847デフォルトの名無しさん:2006/01/12(木) 22:57:50
Wave使い方わかんね
848845:2006/01/13(金) 00:59:34
>>846
あまり詳しく原因究明していないから確かなことは言えないんだけど、
LU分解を使って処理しているところが怪しい感じ・・・
lu_factorize とか lu_substitute とかたぶんその辺?
逆行列計算するところでハマリました
849デフォルトの名無しさん:2006/01/14(土) 12:06:26
BOOST_STRONG_TYPEDEF 、俺にはまだ弱すぎる。

BOOST_STRONG_TYPEDEF(unsigned, A);
BOOST_STRONG_TYPEDEF(unsigned, B);
A a(1);
B b(2);
unsigned u(3);
a=b;
u=a;
a=u;

どれも該当する = 演算子および変換があるから素直にとおる。
なのでもう少し厳しくしてみたら、
stl:vector<A> に対して stl:fill() とかが使えなかった。
そりゃそうか。

しかし BOOST_STRONG_TYPEDEF(unsigned, A) ってことは
unsigned が A の基底クラスみたいなあつかいするってことでそ?
実際には構造体 A の要素として unsigned を抱えてるけど。

a が unsigned に代入できるのはいいとして、
a = b とかはコンパイル時にはじきたい。
850BOOST_STRONG_TYPEDEF:2006/01/14(土) 12:14:58
BOOST_STRONG_TYPEDEF(T, D) だと、

explicit D(const T t_);
D(){};
D(const D & t_);
D & operator=(const D & rhs);
D & operator=(const T & rhs);
operator const T & () const;
operator T & ();
operator==(const D & rhs);
bool operator<(const D & rhs) const;

が定義されるんだけど(実は基底クラスでさらにいくつかの演算子も)、
D & operator=(const T & rhs); がなぁ。

上の例での a = b は、
a 側の A & operator=(const unsigned &) と
b 側の operator const unsigned & () const が
のケコーンで通るわけだけど、不用意に通したくないんだよな。
851BOOST_STRONG_TYPEDEF:2006/01/14(土) 12:17:04
BOOST_STRONG_TYPEDEF(double, Weight);
BOOST_STRONG_TYPEDEF(double, Length);
Weight w(10.5);
Length l1(30.0);
Length l2(31.0);

で、 不用意に w = l1 ってやってしまうのを防ぎたいんだよな。
l1 = l2 はもちろんおk
852BOOST_STRONG_TYPEDEF:2006/01/14(土) 12:18:02
>>849 は stl:fill じゃなくて std::fill のまちがい
853デフォルトの名無しさん:2006/01/14(土) 12:20:06
operator=の特殊版、定義しなよ。
854BOOST_STRONG_TYPEDEF:2006/01/14(土) 12:24:59
>>853 クラスの?
それともグローバルで friend の?
855デフォルトの名無しさん:2006/01/14(土) 12:52:12
ちょいどよい例があるよ、mplのこれ。超難解だけど。

http://www.boost.org/libs/mpl/doc/tutorial/dimensional-analysis.html
856BOOST_STRONG_TYPEDEF:2006/01/14(土) 14:53:12
>>855 THX ちょっと読んでみるよ。
とはいえ、いまちらっと見た限りでは
結構オーバーヘッドありそうな実装だなぁ。
利便性(安全性)をとるか、スピードを取るか、悩ましい。
とりあえずサンプルつくってスピード測定してみます。

最終的に物理計算なんかの大型計算機で使うライブラリで、
ミスを防ぐようにするために使おうと思っているんですが、
スピードがあまりにも犠牲になるようなら問題だし。
857デフォルトの名無しさん:2006/01/14(土) 15:45:23
>>856
>結構オーバーヘッドありそうな実装だなぁ。
どこが?
キャストしてるだけに見えるが。
858デフォルトの名無しさん:2006/01/15(日) 02:48:40
ビルド時間もバカにならんということでは。
859デフォルトの名無しさん:2006/01/15(日) 03:03:44
どうでもいいけどさっさとvc8に対応してほしい
860デフォルトの名無しさん:2006/01/15(日) 07:40:36
>>859 え? Visual C++ 2005 で使ってるけど。
861デフォルトの名無しさん:2006/01/15(日) 12:09:13
うちの会社では1.32.0までしか使ってないけど、
VC8はβ・英語版・日本語版全部問題なくboost使えてるけどなぁ。
862デフォルトの名無しさん:2006/01/15(日) 18:06:41
このライブラリ、ひとまず新しいネタは尽きたっぽいね。
863デフォルトの名無しさん:2006/01/15(日) 19:18:06
ublas::matrix mat(2,3);
std::cout << mat;
とすると
最初に行列サイズが表示されるので 
saveした結果を別なもの(matlabとか)から呼びだせない。

最初に行列サイズが表示されないようにするオプションとかない?
864デフォルトの名無しさん:2006/01/15(日) 23:09:34
>>863
boost/numeric/ublas/io.hppを見れば分かるけど、

s << '[' << size1 << ',' << size2 << "](";

とベタ書きされてるから無理。
行列の表示程度なら1から書いてもそんなに労力はかからないんじゃない?
865デフォルトの名無しさん:2006/01/16(月) 10:25:59
>> 864
やっぱりだめですか
素直に自分で書きます。
866デフォルトの名無しさん:2006/01/16(月) 10:37:52
./a.out | tail +2 > result.data
じゃ駄目なんか?
867デフォルトの名無しさん:2006/01/17(火) 00:38:08
boost/numeric/interval.hpp を眺めていると

template<class T, class Policies> template<class T1, class T2> inline
interval<T, Policies>::interval(T1 const &l, T2 const &u)
{
if (checking::is_nan(l) || checking::is_nan(u) || !(l <= u)) set_empty();
else {
rounding rnd;
low = rnd.conv_down(l);
up = rnd.conv_up (u);
}
}

のような関数がたくさん出てきます。template が
二重に使ってあるのですが、T1 や T2 は
テンプレートをインスタンス化するときに
いったいどこで指定するのでしょうか・・・・
実際に使うときには

boost::numeric::interval<unsigned> unsigned_interval(20,30);

のようにするのですが、T1,T2 はいったいどこへ・・・
そもそも二重のtemplateを使ったことがなく・・
868デフォルトの名無しさん:2006/01/17(火) 01:07:45
interval(T1 const &l, T2 const &u)の実引数は、(20,30)でしょ。
869デフォルトの名無しさん:2006/01/17(火) 01:17:12
コンストラクタとして
interval(T const &l, T const &u)
も定義されていて、どっちがマッチするのか混乱してまつ。
テンプレート展開後の状態でのソースを吐かせることが出来ればなぁ。
マクロならプリプロセッサの処理の直後で吐かせて確認できるのに。
870デフォルトの名無しさん:2006/01/17(火) 01:23:45
>>869
> interval(T const &l, T const &u)

の方が特定的だからこっちが選ばれる。
(2.0, 30)だと>>867の方。
871デフォルトの名無しさん:2006/01/17(火) 01:40:28
>867
クラステンプレートのメンバ関数テンプレートのクラス外での定義って事は解ってる?
872デフォルトの名無しさん:2006/01/17(火) 09:58:47
>>824
VC7.1だとうちも簡単なサンプルさえ通らなかったよ。
なぜかVC6は通るんだけど...
873デフォルトの名無しさん:2006/01/17(火) 12:43:58
vectorに外積ないのかよ!がっかりだ!
漏れも自作の3行関数を作ってハッピーになるか
http://lists.boost.org/MailArchives/ublas/2005/09/0775.php
874872:2006/01/17(火) 13:04:57
tar.gzでなく、zip落としなおして、再ビルドしたら通ったよ。
なんか手順をミスってたのだろうな...orz
875デフォルトの名無しさん:2006/01/17(火) 13:06:06
>>874
1.33のヘッダにパスが通ったままで、1.33.1のビルドをしたとか。
876874:2006/01/17(火) 15:24:16
>>875
vsvars32.bat実行した後に
違う-sTOOLS実行したせいか、
もしくはregexのuser.hpp変更してbjamし忘れてたのかも...
877デフォルトの名無しさん:2006/01/18(水) 11:20:51
ttp://miyano.s53.xrea.com/cgi-bin/sb/log/eid9.html
のソースに

#include <fstream>
#include <string>
#include <boost/serialization/nvp.hpp>
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#define BOOST_LIB_NAME boost_serialization
#include <boost/config/auto_link.hpp>

を付け足してVC7.1でコンパイルすると以下のようなエラーが出ます。

boost\archive\detail\oserializer.hpp(131) : error C2027: 認識できない型
'boost::serialization::extended_type_info_null<T>' が使われています。

何が悪いのでしょうか?
878デフォルトの名無しさん:2006/01/18(水) 18:24:37
boost 1_33_0 をvc8でビルドしようとしたらできあがったライブラリの名前が
boost_date_time-vc6-mt-gd-1_33.libみたいにvc6がついちゃうんだけど何故?

アプリをビルドする際には「boost_date_time-vc80-mt-gd-1_33.libを開くことが出来ません」
となってしまう。

なぜboostをビルドしたときにできるライブラリのファイル名がvc80じゃなくvc6となって
しまうんでしょう??
879デフォルトの名無しさん:2006/01/18(水) 18:29:36
>>878
bjamを実行する時
-sTOOLS=vc-8_0
にしてる?
880876:2006/01/19(木) 05:44:48
>>878
参考までに
1.PlatformSDKの環境変数を通す
2.VC8の環境変数を通す
3.bjamのディレクトリまで移動
4.bjam "-sTOOLS=vc-8_0" stage
という手順を踏まないと正常にビルドできなかったよ。
881878:2006/01/19(木) 09:34:18
>>879
うぉー サンクス
-sTOOLS=msvcでやってたよ。 



882デフォルトの名無しさん:2006/01/19(木) 15:18:50
vc8でアプリをビルドする時、boostのdll版のライブラリ(*.dll)とリンクして欲しいんだけど、
スタティック版(lib*.lib)とリンクしようとしているようでビルドエラーになります。
vc7.1の時は何も指定しなくとも自動的にdll版のライブラリとリンクされてたんですが。

アプリ(ソリューション)自体は同じものでvs8の変換機能でvs8用に変換しただけです。

BOOST_ALL_DYN_LINKを指定しても同じです。何か他に設定しないといけないんでしょうか?
(boostは1.33.0です)
883デフォルトの名無しさん:2006/01/19(木) 16:24:15
>>882
ライブラリによって設定が違うから、boost のどのライブラリを使おうとしているのか教えてください。
884デフォルトの名無しさん:2006/01/19(木) 16:42:31
>>883
ありがとうございます
threadとdate_timeとregexです
885884:2006/01/19(木) 18:14:21
BOOST_ALL_DYN_LINKとともにBOOST_THREAD_USE_DLLを指定したら解決しました
886デフォルトの名無しさん:2006/01/20(金) 13:58:54
Library Technical Report
These proposals have been accepted for the upcoming Library Technical Report:
http://std.dkuug.dk/jtc1/sc22/wg21/docs/library_technical_report.html
このあたりを見てると、あるライブラリが boost に採用されて
ゆくゆくは ISO 標準に採用されたときには、名前空間は
boost から std に移されるんだよね?
887デフォルトの名無しさん:2006/01/20(金) 14:05:45
何でもかんでもstdに入れるのはどうにかならんのかね
888デフォルトの名無しさん:2006/01/20(金) 14:13:33
>>887 std 名前空間内で適切に名前空間を
ネスとしてくれるならそれでいい。
むしろトップレベルの名前空間は一つのほうがいい。
889デフォルトの名無しさん:2006/01/20(金) 14:47:57
stdの名前空間ネストして整理してくれると嬉しいなあ。
890デフォルトの名無しさん:2006/01/20(金) 15:05:43
>>877
archive 系のヘッダは他の serialization のヘッダより
前に持ってこないといけなかったはずです.
binary_[i|o]archive などだと #error で文句言ってくれるんですが,
恐らく xml_[i|o]archive にはそれが抜けているのかと思います.
891デフォルトの名無しさん:2006/01/20(金) 17:37:44
boost使ってる有名なアプリってなんかある?
参考までに教えてくれ
892デフォルトの名無しさん:2006/01/20(金) 17:41:42
893デフォルトの名無しさん:2006/01/20(金) 17:42:49
Photoshop
894デフォルトの名無しさん:2006/01/20(金) 17:47:18
>>892,893
サンクス
895877:2006/01/20(金) 21:52:28
>>890
おっしゃるとおり、archiveのヘッダをserializationのヘッダの
前に持ってくることで無事にコンパイルすることが出来ました。
ありがとうございました。
896デフォルトの名無しさん:2006/01/22(日) 04:03:49
bcc32でコンパイルすると

for を含む関数はインライン展開できない

という警告がいっぱいでるのですが、これは仕様ですか?
897デフォルトの名無しさん:2006/01/22(日) 09:28:40
仕様です。
898デフォルトの名無しさん:2006/01/22(日) 13:23:00
ループ系の構文は一般にインライン展開できないことが多い。
899デフォルトの名無しさん:2006/01/22(日) 13:55:53
>>898
「馬鹿なコンパイラだと」
900デフォルトの名無しさん:2006/01/22(日) 14:19:38
VCだといいけど、Borlandだと警告出るよね。
Borlandは出来ないということでしょうがないけど、VCの場合は
どういう展開をしているのかが気になるところ。
901デフォルトの名無しさん:2006/01/22(日) 15:13:06
>>900
CaseByCase。つーか、スレ違い。
902・∀・)っ-●○◎- ◆Pu/ODYSSEY :2006/01/22(日) 16:48:13
ループがなくても数十ステップにわたる関数なら/i 付けてもインライン展開しないケースも多々あるよ。
__forceinlineなら緩くなるけど確実じゃない。
903デフォルトの名無しさん:2006/01/22(日) 18:22:07
当たり前のことをわざわざコテでレスかよ。
904デフォルトの名無しさん:2006/01/23(月) 00:08:01
別に展開しようがしまいがかまわないが、標準ライブラリで警告抑止オプションをつけないと
警告だらけというのはやめてくれってかんじ
905・∀・)っ-●○◎- ◆Pu/ODYSSEY :2006/01/23(月) 00:34:02
#pragmaで抑制できないの?某はあんま使ったこと無いけど。
906デフォルトの名無しさん:2006/01/23(月) 12:52:13
別にレスしようがしまいがかまわないが、専用ブラウザであぼーん設定をつけないと
うざいコテだらけというのはやめてくれってかんじ
907デフォルトの名無しさん:2006/01/23(月) 17:12:22
regexは名前付きキャプチャ使えないのか...



908デフォルトの名無しさん:2006/01/24(火) 12:14:43
>>907
細かいところで不便を感じたりしたから、
結局イテレータベースで名前付きキャプチャとマルチバイト対応、
ヘッダファイルのみで完結する basic_regex 作ったこともあった。

検索結果はすべてまとめて関数オブジェクトに渡すつくりだったから
再帰検索や、構文解析するのにけっこう便利だったよ。
909 ◆Pu/ODYSSEY :2006/01/24(火) 12:29:07
鬼車をラップしたほうが速くね?
boost::onigurumaとか出たら鼻血でそう。
910 ◆Pu/ODYSSEY :2006/01/24(火) 12:33:15
でもregex++は双方向イテレータ定義されてるものにはなんにでも使えるのか。
これはこれで便利なの?
リスト構造になってる文字列とかお目にかかったことがないんだが。
911デフォルトの名無しさん:2006/01/24(火) 12:51:55
vc-8_0-stlportってないみたいだけど
VS2005は付属のSTL使えってことでいいんですか?
912デフォルトの名無しさん:2006/01/24(火) 13:19:47
>>910
charTはコンセプトが合っていれば「文字」じゃなくていい。
913デフォルトの名無しさん:2006/01/24(火) 13:28:49
トークン列のマッチに使えるのは便利だな
914デフォルトの名無しさん:2006/01/24(火) 13:33:07
>>913 文字に相当するものがトークンってこと?
915デフォルトの名無しさん:2006/01/24(火) 14:06:48
>>910
双方向イタレータ=リスト構造ってアホですか?
ゴミレスは不要。
916デフォルトの名無しさん:2006/01/24(火) 14:18:37
UTF-8 は、双方向イテレータ
Shift_JIS は 前方向イテレータ
917デフォルトの名無しさん:2006/01/24(火) 16:05:42
I need Boost NOW!!
I need Boost NOW!!
I need Boost NOW!!

*ghost Fuckin BackFacker!!!
918デフォルトの名無しさん:2006/01/24(火) 16:14:18
BrainFacker!!!
919>∀<)っ-●○◎- ◆Pu/ODYSSEY :2006/01/24(火) 21:31:37
>>915
regex++にはリスト構造「にも」使える。onigurumaやその他正規表現ライブラリは1次元配列前提。
もしリスト構造かなんかで使えないと何か不便なケースでもあるかなと思って言ったんですが、
それすら通じませんでしたかwww
そりゃ失敬wwwwwwうはwwwwテラワロスwwwww
920デフォルトの名無しさん:2006/01/24(火) 21:43:48
必死ですね
921>∀<)っ-●○◎- ◆Pu/ODYSSEY :2006/01/24(火) 22:47:20
ついでだけどさ、
Regex++ってsyntax差し替え(SQLやGROBのワイルドカード文字列からオートマトン生成)
って簡単にできたっけ?
鬼車にはサンプルがあったんで解りやすかったが。

まぁ別にワイド文字かASCIIかなら悪くない選択肢だと思うけど、
コード変換って正規表現マッチングそのものなみに遅いじゃん。しかも一部の漢字は死ぬし。
できあいのライブラリでダイレクトに判定したいってことになると、Regex++は日本語環境には
不親切といわざるを得ないかと。
1.33でようやく大文字小文字区別あり/なしの動的切り替えサポートしたと思ったらますます重くなりやがるし。

ASCIIでも単純な構文なら鬼車のほうが数倍高速だったり。
(固定文字列部分を抽出して先にBM法で絞り込むから速いそうな)
922デフォルトの名無しさん:2006/01/25(水) 11:23:48
鬼車も実はマッチは正確でなかったり('A`)
機能拡張だの豊富なオプションだのはいいんだが
そんなことより照合をばっちりとやってほしいところ。
最低限の機能と正確なマッチングをキボンヌ。
923デフォルトの名無しさん:2006/01/25(水) 18:48:19
Xpressive が正式に Boost に採用されたから、
中途半端な Boost.Regex は最早不要になるだろうと予想。

924デフォルトの名無しさん:2006/01/25(水) 18:53:19
xpressiveのストリームIOを使ったパターン記法に慣れるのにちょいと時間がかかりそうだ
925デフォルトの名無しさん:2006/01/25(水) 19:23:01
>>923
今のところデフォルトインストールではXpressiveはインストールされないんだよね?
926デフォルトの名無しさん:2006/01/25(水) 19:37:26
デフォルトでインストールされないというよりか
リリースブランチにまだ入っていなかったかと.
入るのは 1.34.0 以降でしょうね.
待ちきれないのなら CVS の HEAD 落とせば入ってます.
927デフォルトの名無しさん:2006/01/25(水) 20:27:55
>>923 不要になるってのは、 Boost から外される?
ってことはないよね、基本的に一旦受理されたものは
ずっとメンテナンスされるってスタンスだし。
それにしても正規表現関係では、日本語、というか
非西洋の文字群の扱いに常に不安がつきまとうね。
http://article.gmane.org/gmane.comp.lib.boost.devel/132010
928デフォルトの名無しさん:2006/01/25(水) 20:38:39
boost.filesystemとか日本語ファイル名をきちんと読んでくれないしなあ。
929デフォルトの名無しさん:2006/01/25(水) 20:55:29
>>928 そもそもコンパイラ(というか提供されるライブラリ)
によっては std:: のはずの locale すら
まともに実装されていないしな。
930>∀<)っ-●○◎- ◆Pu/ODYSSEY :2006/01/26(木) 22:07:20
BM法とかAC法とかの汎用ルーチンまだですか。



xpressive書いた人ってMSの研究員でGRETAっていう正規表現ライブラリ書いてたよね。
なぜか(hoge)より(?:hoge)のほうが遅い、不思議なエンジンですた。純粋NFAベースらしいけど。
931デフォルトの名無しさん:2006/01/26(木) 23:27:48
可変長な多次元配列ってないかなぁ。
std::vector<std::vector<T> > hoge
とかマジでセンス無いとか思うし。
932デフォルトの名無しさん:2006/01/26(木) 23:45:51
>>931
boost::multi_arrayでは駄目なん?
933デフォルトの名無しさん:2006/01/27(金) 00:06:07
>>931
探すセンスがない人
934デフォルトの名無しさん:2006/01/27(金) 00:06:42
>>932
あのインターフェース、ありえんと思うのは自分だけかな・・・。
使ったら使ったで、他の仲間に怒られそうだ。
色々な意味で非常に不満。よく使用するが故にシンプル設計が良いんだけどな。
935デフォルトの名無しさん:2006/01/27(金) 01:27:13
Perl互換機能は不要、構文はgrep形式でよい、
ただただ正確に漢字を照合して欲しいだけ。
毛深い機能の塊はイラン
936デフォルトの名無しさん:2006/01/27(金) 03:16:44
>>934
ぶっちゃけ自分で作った方がいいんじゃね?
自分専用ライブラリ
937デフォルトの名無しさん:2006/01/27(金) 07:48:52
Blitz++のArrayとか探せば結構あるぞ。
938デフォルトの名無しさん:2006/01/27(金) 08:19:45
というか、センスが悪いとか言われてもどういうことだかさっぱりわからんので
もうちょっと詳しい説明を希望する
939デフォルトの名無しさん:2006/01/27(金) 08:46:36
boostスレなんで、multi_arrayイヤなら他のスレ行くか、
multi_arrayの気に入らないところ話すか、どっちかだよなあ。
940デフォルトの名無しさん:2006/01/28(土) 13:23:26
やりたいことは

ttp://www.tietew.jp/cppll/archive/6022
ここの2に書いてあることと完全に同じなのですが解決方法が
ttp://www.tietew.jp/cppll/archive/6031
これ以外にないでしょうか?
もうちょっと可読性のあるものが嬉しいのですがw
941デフォルトの名無しさん:2006/01/28(土) 13:53:19
>>940
getを無視して適当にこんなんでいいんじゃないの
std::mem_fun_ref(&boost::weak_ptr<T>::expired)
942>∀<)っ-●○◎- ◆Pu/ODYSSEY :2006/01/28(土) 15:09:43
>>935
(?!マッチさせたくない文字列) は無いと不便かなー。
943デフォルトの名無しさん:2006/01/28(土) 16:10:28
POSIX互換の正規表現で足りてる人はいいだろうけど万能じゃないからな。
Perl互換の正規表現は確かに複雑で理解しにくいが、その分パワフルで魅力的だ。
944デフォルトの名無しさん:2006/01/28(土) 17:34:42
ホントに複雑な場合はプログラム的に処理し、場合によってはパースすれば良い。
機能盛りだくさんだが不具合が多くて、バグフィックスが永遠に続くような
複雑なプログラムだと信頼を置けないって考えもある。

さらにPerl方式は最長一致で無いから複数の解がある場合の$0の長さの予想がやり難い。
945デフォルトの名無しさん:2006/01/28(土) 17:59:39
> 機能盛りだくさんだが不具合が多くて、
これには同意できない。

> さらにPerl方式は最長一致で無いから
これもダウトだな。
946デフォルトの名無しさん:2006/01/28(土) 18:05:38
ダウトは疑義表明でしかないが
事実に反するという指摘をしたかったのかな
947デフォルトの名無しさん:2006/01/28(土) 19:07:20
perlの=~みたいに組み込みならともかく、
C++では好きなの使えばいいじゃん。
948デフォルトの名無しさん:2006/01/28(土) 19:14:37
ちなみにpcreはC++のwrapperあるよ。
大したwrapperじゃないけど。
949デフォルトの名無しさん:2006/01/28(土) 21:28:57
良くも悪くもPerlの正規表現がデファクトスタンダードになりつつあるな。
grep -Pオプションが使えないと腹立たしい。
950デフォルトの名無しさん:2006/01/28(土) 21:35:25
きっちり全経路を取って真の最長一致を見てもらわんと困る。
951デフォルトの名無しさん:2006/01/28(土) 21:39:22
xpressiveってのが入るみたいだけど、
そうなるとC++0xの正規表現には何が
採用されるんだ?
952デフォルトの名無しさん:2006/01/28(土) 21:51:32
>>951
C++0xに採用されるのは仕様であって実装ではない。
953デフォルトの名無しさん:2006/01/29(日) 13:36:44
あの、変態的なコマンドラインオプション解析ライブラリも入るの?
954>∀<)っ-●○◎- ◆Pu/ODYSSEY :2006/01/29(日) 15:39:09
#include <cstdarg>
で十分だからなぁ現状。
argvがchar配列のポインタ配列である以上、C++特有のイテレータとか意識して再実装する必要ないような。

955>∀<)っ-●○◎- ◆Pu/ODYSSEY :2006/01/29(日) 15:47:50
↑ちょwwww寝ぼけて勘違いwwwwwww 
956デフォルトの名無しさん:2006/01/29(日) 18:57:08
boost::iostreams::streamからboost::iterator_rangeをつくりたいのですがうまくいきません

typedef io::stream<T> stream_t;
typedef std::istreambuf_iterator<stream_t::char_type iterator_t;

iterator_t it(stream), end;
aaa(boost::iterator_range<iterator_t>(it,end));

microsoft visual studio 8\vc\include\boost-1_33\boost\range\iterator_range.hpp(61)
:error C2440: '<function-style-cast>' : 'std::istreambuf_iterator<_Elem,_Traits>' から 'std::_String_iterator<_Elem,_Traits,_Alloc>' に変換できません。
957デフォルトの名無しさん:2006/01/29(日) 20:37:55
VC2005EE + PlatformSDKでbjam使ってインストールしたけど、
threadが使えません(´・ω・`)
date-timeは使えるけど…
bjamに特殊なオプションがいりますか?
958956:2006/01/30(月) 01:14:42
できました
エラーはaaaの中のせいでした
959デフォルトの名無しさん:2006/01/31(火) 05:52:33
path.hpp の説明で
separator ::= "/" // an implementation may define additional separators
て書かれてるんだけど、これって、boost のライブラリの
インプリによっては / の他にもセパレータを持っていいってことだよね?
そうすると、そのセパレータでもルートを表せるってこと?
root-directory ::= separator
960デフォルトの名無しさん:2006/02/05(日) 02:19:05
ここまできてdat落ちはやーよage
961デフォルトの名無しさん:2006/02/05(日) 07:15:22
namespace bll = boost::lambda;
bll::bind(f, bll::_1, ...);
こういうことをよくやっていたんだけど、
最近になってADLがあるからこう書けることに気付いた。
bind(f, bll::_1, ...);
特にありがたいわけではないけれど。
962デフォルトの名無しさん:2006/02/05(日) 07:49:51
>>961
何言ってんのありがてーよ
963デフォルトの名無しさん:2006/02/05(日) 08:50:01
>>962
ADL自体はありがたいけど結局ついbll::bindと書いちまう。
自分の癖が未だ抜け切れていないだけ。
964デフォルトの名無しさん:2006/02/05(日) 15:54:00
漏れは
bll::bind(f, _1, ...);
とかってしてる
965デフォルトの名無しさん:2006/02/06(月) 07:42:24
      __
     /    ヽ _____
    l    ´ ̄      `ヽ、_
   _ゝ                   `ヽ、
   -ニ/       ⌒ ト、    , -、   l
     l     , ‐ メ、}    ,L_   _ノ
.     l   ,∠-‐' r- L -∠´ヽゝ__フ
     v‐l |      |  l  l  l  |
    (  ヽ|⊂⊃  `ー'  ヽノ   l
    `ー、          ⊂⊃ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ゝ、_     r-,        ノ   < 次スレまだカナ?
       /   ァェ-_ レ__ -‐     \________
     / |   |   ∨ |
.     /  lィ ̄|   ム-‐|
    ゞ  l   l  ハ  |
966デフォルトの名無しさん:2006/02/06(月) 16:23:10
この速さだと>>980ぐらいでいいじゃないか
967デフォルトの名無しさん:2006/02/06(月) 20:19:17
>>970を超えたら俺の埋め立てスクリプトが火を噴くぜ
968デフォルトの名無しさん:2006/02/07(火) 00:08:00
980だったかを超えて30分ぐらい書き込みなかったら
消えるんじゃなかったっけ?

レス数、時間は曖昧だけどそろそろ危険領域(#゚∀゚)=3
969デフォルトの名無しさん:2006/02/07(火) 03:25:09
Boost 特化の話でもないので、
C++ のスレに書こうかと迷ったのですが、
Boost のヘッダ見て気づいたことなんで
こちらに書かせていただきます。

boost/interval.hpp をみていると

template<class T, class Policies>
class interval
{
    中略
public:
template<class T1> interval(T1 const &v);

    中略
};

というクラスがあり、上のように宣言されている
コンストラクタの定義を見ていると下のようになっています。

template<class T, class Policies> template<class T1> inline
interval<T, Policies>::interval(T1 const &v)
{
if (checking::is_nan(v)) set_empty();
else {
rounding rnd;
low = rnd.conv_down(v);
up = rnd.conv_up (v);
}
}
970デフォルトの名無しさん:2006/02/07(火) 03:26:05
このテンプレートクラスを boost::interval<int> として
使うとき、上のコンストラクタの T1 はどこいっちゃうんでしょうか?
どこで特殊化するんでしょうか?
971デフォルトの名無しさん:2006/02/07(火) 03:42:08
>>970
boost::interval<int> a('c'); // T=int, T1=char
boost::interval<int> b(true); // T=int, T1=bool
972デフォルトの名無しさん:2006/02/07(火) 07:54:54
973デフォルトの名無しさん:2006/02/07(火) 08:53:07
乙と言いたいところだが
靴を語ってどないすねん
974デフォルトの名無しさん:2006/02/07(火) 08:55:24
あ〜あ・・・・・ orzz
975デフォルトの名無しさん:2006/02/07(火) 11:22:17
検索に掛からないのが困るな。
976デフォルトの名無しさん:2006/02/07(火) 11:29:35
検索エンジンなんかでも boots で
検索しないと出てきにくくなるかもね。
もう、なんか、やるせ茄子
977デフォルトの名無しさん:2006/02/07(火) 17:57:02
template統合スレを復活していいかい。
タイトル「template統合スレ -- part7 #include boost/」です。
978デフォルトの名無しさん:2006/02/07(火) 18:06:55
>>977
templateはC++の標準的な機能
C++相談室があるから「template統合スレ」はいらないよ
ポータブルライブラリ統合スレ(BOOST,Loki)
とかの括り方の方がまだよい

閑散としているのだから
STLスレもC++相談室に収束したほうがよいと思う
979デフォルトの名無しさん:2006/02/07(火) 18:43:41
STLスレを統合すべきと言う話はSTLスレが1000に近づくたびに出るのだが、
次スレを立てる馬鹿が絶えず今まで続いてしまっている。
980デフォルトの名無しさん:2006/02/07(火) 19:00:45
C++相談室の今の話題は確かにtemplateだね
「template統合スレ」が仮りに復活した場合
その話題は果たして「template統合スレ」でやるべきなのか?

C++相談室との住み分けが一目瞭然な名前で頼むよ
981デフォルトの名無しさん:2006/02/07(火) 19:22:24
templateなんているかよ
>>978のようにLokiとかも含められるようなスレタイにしたほうがいいかと思われ
982デフォルトの名無しさん:2006/02/07(火) 19:51:42
・STLスレ
  → C++ 相談室スレに統合
  ※ もし馬鹿が立てたとしてもスルーして落とす
・このスレ
  → C++ ライブラリ統合スレ(Boost/Loki/etc.)

で良い?
983デフォルトの名無しさん:2006/02/07(火) 20:05:07
>>982 それやると、何でもかんでもライブラリの
話題全部受け入れるってことになっちゃいそうだが。
984デフォルトの名無しさん:2006/02/07(火) 20:10:21
>>983
ポータブルを入れるか
長いなら前に凖標準ライブラリなんて案もあったな
985デフォルトの名無しさん:2006/02/07(火) 20:12:19
メジャーなLokiすらスレがないわけだし個別に作るよりは
一緒にした方がスレの速度も落ちない程度になっていいんじゃない?
確かにあまりマイナーなライブラリは答えられる人少ないだろうけど、
いろんなライブラリ使ってる人が集まるといろいろ勉強になるかもしれないし
986デフォルトの名無しさん:2006/02/07(火) 20:17:46
>>985 まぁそうかもしれんが、各処理系依存のモノまで
持ち込まれても混乱すると思うんだよな。
だから >>984 のようにポータブルとか準標準とか
っていう言葉は入っていてもいいと思う。

libhogehoge について、とか言われても困る。
987デフォルトの名無しさん:2006/02/07(火) 20:23:45
マニア向けC++ライブラリ議論スレgora!
にしとけ。

boostは必ずしもマニア向けじゃないけれど、
現状、このスレはそうなっているので。
988デフォルトの名無しさん:2006/02/07(火) 20:25:12
俺は、STL と template(boost, lokiなど) をくっつけほしいな。

C++ ライブラリ統合スレ(Boost/Loki/etc.) とかやったら、
Xercesとかtemplateと関係ないライブラリの話題でてくるぞ。

むしろ、template(STL,Boost,Loki)で、etcなしとか。
989デフォルトの名無しさん:2006/02/07(火) 20:28:11
STLは標準ライブラリだからC++相談室でいいよと俺は思ってしまう。
990デフォルトの名無しさん:2006/02/07(火) 20:29:20
いっそのこと C++0x 関連にしてしまうとか
991デフォルトの名無しさん:2006/02/07(火) 20:31:19
>>988
templateって標準機能だから分ける利点が全くわからないよ

>templateと関係ないライブラリの話題でてくるぞ。
環境に依存しないのであればいいと思うよ
992デフォルトの名無しさん:2006/02/07(火) 20:36:29
>>988
vectorのoperator[]とat()の違いもこのスレでやるの?
そうなってくると分ける意味ないんじゃない?
やっぱり一般人に手を出すのに二の足を踏んでいるライブラリのスレだと思う。
993デフォルトの名無しさん:2006/02/07(火) 20:39:51
つーわけで、やっぱり Boost を語れゴラァでいいんじゃね?
って、しばらく BOOTS を使うのも可だけどな。
994デフォルトの名無しさん:2006/02/07(火) 20:43:49
異論はあるでしょうけれど,1000が差し迫っているので
とりあえず新スレを「Boostを語れゴラァ part2」で立て直してきます.
995デフォルトの名無しさん:2006/02/07(火) 20:46:16
ええええ
996デフォルトの名無しさん:2006/02/07(火) 20:55:04
997デフォルトの名無しさん:2006/02/07(火) 21:22:36
>>994
賛成
>>996
998デフォルトの名無しさん:2006/02/07(火) 22:42:02
getBoost()
999デフォルトの名無しさん:2006/02/07(火) 23:13:27
おちんちん↓
1000デフォルトの名無しさん:2006/02/07(火) 23:18:15
私、女です。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。