トップページ⇒tech
1001コメント289KB

Boostを語れゴラァ part2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/02/07(火) 20:53:54
語って.はぁと part boost::mpl::int_<2>

前スレ
BOOSTを語れゴラァ
http://pc8.2ch.net/test/read.cgi/tech/1091198276/
0232デフォルトの名無しさん2006/03/29(水) 10:41:45
>>231
230みたいにほかの使い方をしてもいいだろ。
0233デフォルトの名無しさん2006/03/29(水) 11:10:40
あんなブサイクな方法がいいと思ってんなら、個人の自由だし別にいいけど
0234デフォルトの名無しさん2006/03/29(水) 23:48:23
論理を出せないが引っ込みもつかないので仕方なく煽り始めた模様
0235デフォルトの名無しさん2006/03/29(水) 23:54:30
>>234
え?なになに、悔しかったの?

こんくらいで煽られたとかいってんのかぁ。無菌室で育ったのかなぁ…。
もしくはゆとり教育のせいか…。

今日のニュースで高校教科書策定の話が出てたけど、
それは「脱ゆとり」を目指して作られたらしいよ。

もう一度高校生からやりなおしてみるのはどうだろうか?
0236デフォルトの名無しさん2006/03/29(水) 23:58:55
enable_shared_from_this という名前がすべてを語っていると思う。
トリッキーな使い方をするのは自由だけれども。
0237デフォルトの名無しさん2006/03/30(木) 00:19:34
なんかよく分からんけど、thisからshared_ptrが取れたら便利なケースってあるじゃない。
なんか不味いの?
0238デフォルトの名無しさん2006/03/30(木) 00:27:34
例えば?

>>230のような例になってないのは勘弁してくれな
0239デフォルトの名無しさん2006/03/30(木) 08:20:20
いや、だから自身のスマートポインタを他オブジェクトに配りたい場合とか。
そうしたいということ自体が苦し紛れだ!って話?
別に>>230みたいなのでもいいと思うけど、嫌なの?
0240デフォルトの名無しさん2006/03/30(木) 09:04:29
struct hoge {
auto_ptr<thread> th;
hoge(thread * t) {th.reset(t);}
};

try{
auto_ptr<thread> th(new thread(...));
hoge x(th.get());
th.release();
}catch(...){ ... }

ってやらないと、スレッド関連はいろいろマズいんじゃないの?
0241デフォルトの名無しさん2006/03/30(木) 10:07:54
>>235
ウザw
0242デフォルトの名無しさん2006/03/30(木) 10:42:32
まぁ、enable_shread_from_this を使うような場所では
オブジェクトに参照カウントを持たせて、intrusive_ptr を使うべきではある。

で、counted_base から派生させると楽だったんだけど、
counted_base は非推奨になってしまったのでそういうのは自前で
用意しないといけないが。
02432372006/03/30(木) 21:47:23
>>242
やっぱりintrusive_ptrにするのが筋なのかぁ。
shared_ptrはよく使うけど、intrusive_ptrはほとんど使ったことないんだよね(面倒くさくて)。
thx。調べてみます。
0244デフォルトの名無しさん2006/03/30(木) 21:57:19
>>241
ものすごく悔しかったみたいだから許してあげて。
0245デフォルトの名無しさん2006/03/30(木) 22:00:21
この手のものはちゃんとどういう風に実装されてるか理解して使うべきだよ。
ブラックボックス的に便利だからと使うのはちょっと危険。
0246デフォルトの名無しさん2006/03/30(木) 22:08:34
しかし例えばboost::MPLを読み解けと言われるとちょっと困る

何あのマクロの嵐
0247デフォルトの名無しさん2006/03/30(木) 23:02:33
Boostの功罪を少し語れ
0248デフォルトの名無しさん2006/03/30(木) 23:57:55
>>244
ウザw
0249デフォルトの名無しさん2006/03/31(金) 21:56:58
>>247
C++奥深すぎ、と思い知らされた
0250デフォルトの名無しさん2006/03/31(金) 21:58:59
つ コンパイル時間
0251デフォルトの名無しさん2006/03/31(金) 22:55:00
日本人は低能知能なのには呆れますね。
私達中華人民はあなたたちの掲示板を拝見して笑ってみてますよ。ではありがとうございました。
0252デフォルトの名無しさん2006/03/32(土) 04:28:04
功:まあ面白い、はたから見る分には
罪:しらん。使ったらろくな目にあわないだろう事は目に見えてるから、スルーしてるし
0253デフォルトの名無しさん2006/03/32(土) 10:49:09
今のC++でboost使わない奴は大アホ。センス無し
0254デフォルトの名無しさん2006/03/32(土) 15:28:51
あおりのセンスねえな
0255デフォルトの名無しさん2006/03/32(土) 15:33:51
boostよりいいライブラリ持ってるからboost使う必要無いんだが
0256デフォルトの名無しさん2006/03/32(土) 15:41:26
うp
0257デフォルトの名無しさん2006/03/32(土) 15:43:24
買ってこいとか言われるに3カノッサ
0258デフォルトの名無しさん2006/03/32(土) 15:45:22
http://pc8.2ch.net/test/read.cgi/tech/1040050740/
ここにある
0259デフォルトの名無しさん2006/04/02(日) 04:47:53
中途半端な連中はソース公開しない方が良いよ
恥ずかしいしね
0260デフォルトの名無しさん2006/04/02(日) 09:32:37
>>259
どんな下手くそなコードだろうと、本人がこっ恥ずかしいコードだろうと。
自分と違う考え方が表記されてるので常に参考になるものだ。
0261デフォルトの名無しさん2006/04/02(日) 10:24:54
>>260
激しく同意。

まぁプログラミングに限らない話だけど。
0262デフォルトの名無しさん2006/04/02(日) 12:50:49
下手なレスを書いてる奴が下手なコードくらいで恥ずかしがっちゃ駄目だよな。>俺
0263デフォルトの名無しさん2006/04/06(木) 10:05:11
正規表現の置換で2パス以上かかる処理を
1パスにまとめる機能ってないんでしょうか?

a...(略)... b...
A...(略)... B...

0264デフォルトの名無しさん2006/04/06(木) 10:45:57
>>263
> a...(略)... b...
> A...(略)... B...

この例の意味がわからんが、

s/a\(.*\)b/A\1B/ ってことなのか?
0265デフォルトの名無しさん2006/04/06(木) 10:46:45
というか、スレ違いだな。

正規表現 part2
http://pc8.2ch.net/test/read.cgi/tech/1131028296/
02662632006/04/06(木) 11:31:35
>>264
(a|b)でマッチさせたときに
置換文字列で順序付きでA、Bを指定できるようなイメージのつもりで書きました。

regex_iteratorの正規表現に(a|b)を指定させて
コールバックさせればいいのは分かるのですが、
置換文字列の方でそのような方法は確立されてないのでしょうか?
0267デフォルトの名無しさん2006/04/06(木) 13:59:11
いません
0268デフォルトの名無しさん2006/04/06(木) 15:16:30
boost::regexってことでいいんだよな?

「順序付き」の意味が曖昧なんだけど、 (説明が下手すぎ)
regex_replaceで、
"(a)|(b)"
"(?1A)(?2B)"
とは違うのか?

http://www.boost.org/libs/regex/doc/regex_replace.html
02692632006/04/06(木) 16:50:10
>>268
できました、ありがとうございます。
(なぜかデフォルトの引数のmatch_defaultだけだととだめでした。)

boost::regex_replace(std::string("abc"),boost::regex("(a)|(b)"),"(?1A)(?2B)",boost::match_default | boost::format_all);//ABc


[a-z] -> [A-Z]
にしたいときはやっぱり
"(a)|(b)|.....(z)"
"(?1A)(?2B).....(?26Z)"
というおそろしい事態になってしまうのでしょうか?
0270デフォルトの名無しさん2006/04/06(木) 17:04:32
>>269
boost::string_algo
0271デフォルトの名無しさん2006/04/06(木) 18:03:24
>>269の冒頭が

「なぜか、ありがとうございます」

に読めて無意味にワロタww
02722632006/04/07(金) 15:58:35
>>270
正規表現マッチ部分の置換をファンクタ指定できないぽ・・・


template <typename IteratorT,typename OutIteratorT,typename RegexT,typename ReplaceFnT>
void ReplaceRegexCopy( IteratorT ,IteratorT ,OutIteratorT ,const RegexT& ,ReplaceFnT);

template <typename MatchResultT,typename OutItr,typename NumT> void Replace(....);
0273デフォルトの名無しさん2006/04/12(水) 09:07:19
ptr_vectorに constポインタを入れるとき,みんなどうしてる?
vc 7.0 でコンパイルすると,

boost::ptr_vector<const int*> pVect(1);
const int* i =new const int(1);
pVect.push_back(i); // コンパイルエラー
pVect[0] = i; // OK

となるのだが…
0274デフォルトの名無しさん2006/04/12(水) 09:11:14
あー,俺アホだ・・・. orz
0275デフォルトの名無しさん2006/04/12(水) 09:16:24
Boost 新バージョンまだ〜チンチン
ところで、boost::program_options で
インタラクティブなモードがあったら便利だなぁ、とか思いません?
いまはオプションの値をコマンドラインと設定ファイルから供給することが
できるわけですが、インタラクティブにキーボードから受け付けてくれるとべんりだなぁ。

あ、でも画面制御が必要なら curses とか使うハメになるから
Boost の枠内では無理なのかな。別に画面制御が必要な方式じゃなく、
単にライン読み込みでいいんだけどな。
0276デフォルトの名無しさん2006/04/12(水) 09:40:25
http://lists.boost.org/boost-users/2005/11/15042.php
The story behind this question is that I would like to be able to build a simple
GUI parameter dialog based on the options_description, and I want to map
different types to different widgets.
こんな話題も出てましたね。
0277デフォルトの名無しさん2006/04/12(水) 17:24:08
CppUnit と Boost のユニットテストライブラリと
でrftgyふじこpl
0278デフォルトの名無しさん2006/04/20(木) 12:31:23
イタレータの終了条件となる特別なイタレータって、
コンテナだと、こんてな.end()で得て、
イタレータだとイタレター名()でコンストラクトってことになってるけど、
boost::iterator::filter_iteratorはend()を持っています。
どうしてなんでしょうかね?
0279デフォルトの名無しさん2006/04/20(木) 13:20:52
要素を飛ばすタイプのイテレータアダプタは,
自分が止まるべき場所を知っていないとまずい場合があるからです.
実際に作ってみればすぐ分かりますが,
最後の要素のいくつかが filter_iterator の条件に合致した場合,
filter_iterator が終了場所を知っておかないと
increment において overrun してしまいます.
0280デフォルトの名無しさん2006/04/20(木) 13:32:46
いたれたーな
0281デフォルトの名無しさん2006/04/20(木) 14:08:20
全部end()にしとけばよかったのにな。
0282デフォルトの名無しさん2006/04/24(月) 23:53:37
165 :デフォルトの名無しさん :2005/12/05(月) 02:37:52
ここんとこC++でいやいや仕事させられてるんで変なライブラリとかも見る機会が
あるんだが、BOOSTとか見ると何であんな複雑怪奇なことをしてGeneric Programmingに
取り組んでいるのか理解に苦しむ。素直にLisp/Scheme使えばいいのに・・・
アレは理解できない・というよりしたくない。エラーメッセージもわけわからんし、
修正→コンパイル→デバッグのサイクルに費やす時間が異常に長いしで不毛なことこの上なし。


166 :デフォルトの名無しさん :2005/12/05(月) 03:40:22
>>165
確かに boost の lambda は笑った。すべてをコンパイル時にやろうという
C++ の執念は凄いが、実用性は?だよね。
0283デフォルトの名無しさん2006/04/25(火) 00:36:20
>>282
Lisp/Scheme が素直だとは言えない環境も多くある。
ネイティブバイナリが必要なマイナーな環境でも
C++ と boost で Generic Programming の恩恵が受けられる。
十分な実用性だと思うよ。
0284デフォルトの名無しさん2006/04/25(火) 00:41:33
>>283
そこまでして C++ で偽 Generic Programming をやること自体が実用的だろうか、
という問題提起だろ。環境云々は別にして。
Generic Programming 自体が目的(そういう状況が想像できないけど)なら別だが。
0285デフォルトの名無しさん2006/04/25(火) 00:45:55
>>284
Generic Programming をすると実用性が下がるという前提がおかしい。
0286デフォルトの名無しさん2006/04/25(火) 00:56:11
ま、Lisp系から見たら単なる「Generic風」でしかないからねぇ。
あんな中途半端な機能で生産性が向上したりプログラムが読みやすくなったり
するのか、という意味での実用性だよ。速度的なペナルティは少ないからいわゆる
実用プログラムで使っても何ら問題はないと思うけど、使おうという気が起きない。
0287デフォルトの名無しさん2006/04/25(火) 01:23:41
>>286
さっきから C++ での Generic Programming じゃなくて、 boost::lambda に限った話だよな。
まさか std::vector 使う気がおきないからって可変長配列を自分で書き起こすわけも無いだろうし。

boost::lambda の「使おうという気」はこんな感じ。
http://www.boost.org/doc/html/lambda/s03.html#id2707350

これ読んで使う気にならないなら使わなくていい。
むしろライブラリの設計自体と思想が合わないだろうから使わないほうがいい。
0288デフォルトの名無しさん2006/04/25(火) 01:32:40
>>287
もちろんC++のテンプレート一般の話ではなく、Boostのlambdaの話ね。
その例は知ってるけど、正直言って実際に仕事のプログラムで使おうという気は
起きなかった。C++でここまでできるんだという面白さはあるし、ある意味Boost
らしいなとも思うけどね。
0289デフォルトの名無しさん2006/04/25(火) 02:54:46
templateを関数内で宣言できるだけでもいいのになぁ……
ローカルクラスが普通のクラスと同じように扱えるだけでも十分です……
0290デフォルトの名無しさん2006/04/25(火) 06:47:00
>>286
CLOSのdebugもたいがい苦しいが。
daemon methodやcall-next-method駆使してある
他人のプログラムは追っていてもわけがわからなくなるよ。

boost::lambdaで一番困るのは、
何故コンパイルエラーになるかすぐに分からない時。
3行くらいになる型同士を比較したり。文句言う人がいるのも分かる。
0291デフォルトの名無しさん2006/04/25(火) 20:14:57
C最強
0292デフォルトの名無しさん2006/04/25(火) 23:07:32
Lispって遅過ぎてビジネス向きじゃ無いよ
研究室で遊んでる分には楽しいけどね
0293デフォルトの名無しさん2006/04/25(火) 23:09:38
>>292
もっと遅い言語がいっぱいビジネスで使われている現状は無視するのね
02942922006/04/25(火) 23:10:33
>>293
具体的に
0295デフォルトの名無しさん2006/04/25(火) 23:17:55
Lispの速度の話をするなら、最近のcmuclの性能でも調べてから発言したほうが恥を
かかんと思うぞ。>>293はPerlとかPHPとかRubyとかPythonとかそういう系だろ。
0296デフォルトの名無しさん2006/04/25(火) 23:38:04
MMX/SSE Intrinsicsのようなコンパイラ拡張(とはいえC++のインライン関数展開などに依存している)
まで考慮すれば速度的にC++を超える言語なんかアセンブラ/機械語だけだろ。
0297デフォルトの名無しさん2006/04/25(火) 23:53:46
Cを速度的に超える言語はアセンブラ/機械語だけだが、
C++を速度的に超える言語はいくつかあると思う。
某サイトのベンチマークではHaskellよりも遅いと出てるし、
速度的にはCとC++は分けて考えないと。
0298デフォルトの名無しさん2006/04/26(水) 00:04:02
>>293
Javaが遅いのは許せるがLispが遅いのは許せない
0299デフォルトの名無しさん2006/04/26(水) 00:05:12
>>295
PerlとかPHPとかRubyとかPythonは、言語というよりWeb向けのスクリプトでしょ
Lispと比べてどうする?
0300デフォルトの名無しさん2006/04/26(水) 00:08:27
C++は(本当はCも、だけどC++は特に)使い方次第でしょ。
言語自体の問題とコンテナ等ライブラリの実装の問題も分けて考えないと。
0301デフォルトの名無しさん2006/04/26(水) 00:08:29
Lispをビジネス用途に採用するにはRiskがあるんだよねえ
0302デフォルトの名無しさん2006/04/26(水) 00:09:55
>>300
そうだよね
C++なんて幾らでもパフォーマンスを上げられるよね
生産性は落ちるかもしれないけどね、まあトレード・オフって奴だ
0303デフォルトの名無しさん2006/04/26(水) 00:11:12
>>299
最近のビジネスアプリケーションの多くがそういう「スクリプト言語」で記述されて
いるのは事実だぜ。
0304デフォルトの名無しさん2006/04/26(水) 00:13:53
>>301
速度云々よりもランタイム環境(ライセンスなども含めて)の問題が大きいかもね。
0305デフォルトの名無しさん2006/04/26(水) 01:07:39
そんなあなたたちにD言語でしょ。
0306デフォルトの名無しさん2006/04/26(水) 01:19:26
Dは論外。
開発できるツールとして成立してないじゃん。
0307デフォルトの名無しさん2006/04/26(水) 01:33:58
D使うくらいならC#でいいや。w
0308デフォルトの名無しさん2006/04/26(水) 01:44:05
>>307
この露出狂が!
0309デフォルトの名無しさん2006/04/26(水) 13:26:49
プログラマなんて最終的には一山いくらの世界だから、
その言語を使える人間が簡単に確保できることがもっとも重要なのさ。
0310デフォルトの名無しさん2006/04/26(水) 15:58:14
boost::lexical_castでは+52.0000E-03のような文字列は数値に変換できないのですか?
0311デフォルトの名無しさん2006/04/26(水) 16:29:08
少なくともVC++7.1では
printf("%E\n", lexical_cast<double>("+52.0000E-03"));
で、
> 5.200000E-002
と表示されたが。
0312デフォルトの名無しさん2006/04/28(金) 15:14:12
gccのtypeofって標準にならないのか?
0313デフォルトの名無しさん2006/04/28(金) 22:27:51
たまにはLokiも使ってやれ
0314デフォルトの名無しさん2006/04/30(日) 02:37:12
Lokiはもう忘れ去られたよ
0315デフォルトの名無しさん2006/04/30(日) 14:44:25
Lokiはすでに役目を終えた
0316デフォルトの名無しさん2006/04/30(日) 18:52:52
ロキでも無かった
0317デフォルトの名無しさん2006/05/04(木) 03:39:43
Lokiは優れたライブラリだったけど、バージョンアップしないから
忘れ去られたな。
一人で作ってるライブラリだとこうなることが多い。
0318デフォルトの名無しさん2006/05/04(木) 03:52:52
LokiはSingletonHolderだけ使ってる
似たようなのが他にあればそっちを使っても良いけど
0319デフォルトの名無しさん2006/05/04(木) 10:50:04
おいらもLoki::SingletonとLoki::Factoryを使っている。
SingletonはBoostでも作成中みたいだけど、どうなったんかね?
0320デフォルトの名無しさん2006/05/04(木) 15:54:04
Loki::GenScatterHierarchyは初めて見たときは驚愕した
0321デフォルトの名無しさん2006/05/04(木) 19:18:33
boost、singleton作ってるの?
どんなんなるか早く見てみたいな
0322デフォルトの名無しさん2006/05/04(木) 19:53:12
最近、久しぶりにC++に戻ってきたんでBoostの日本語サイトチェックしたんだけど
もう2年以上更新が止まってるんだね
もう日本語サイトは用済み? みんな本家を見てるの? 
0323デフォルトの名無しさん2006/05/04(木) 20:09:57
>>322
テコ入れに君が翻訳に参加すれば状況は変わるお。
頑張ってくれ、応援してるお。
0324デフォルトの名無しさん2006/05/04(木) 20:21:20
>>322
Boost自体がもう停滞気味
0325デフォルトの名無しさん2006/05/04(木) 22:30:05
>>322
ツール使ってジェネれートされたhtmlソースを見たら
翻訳する気が失せた。
03263222006/05/04(木) 22:43:38
>>323
Javaだと皆直接英語を見ることが多いなあ
インド人とかと仕事する機会が多いことも英語への拍車をかけてるかも

>>324
Javaだと例えばJBossとジェロニモが覇権争いをしてる、みたいな感じでイノベーションに
休む暇が無いって感じなのにね

JavaからC++に来て思ったのがデザインパターン知ってる人がおそろしく少ない点
知っててもホントに基本的なsingletonとかfactoryとかその程度だし
0327デフォルトの名無しさん2006/05/04(木) 22:49:15
>>326
昔の話だから今はどうか知らないけど、Javaの場合、日本語訳がウンコだったてのもあるからじゃない?
03283222006/05/04(木) 22:51:39
でも俺はC++の方が可能性を感じるよ
優秀な奴がプログラムすると素晴しいものができる、と信じてる

最も成功してるGoogleとかは、開発にC++使ってんのかなあ?
0329デフォルトの名無しさん2006/05/04(木) 22:54:40
C++にもJavaのeclipseのようなIDEがあればいいんだが、
無いからな。
0330デフォルトの名無しさん2006/05/04(木) 23:07:25
>>328
ttp://goog-sparsehash.sourceforge.net/

使ってないのにこんなもん造ってるならそれはそれで笑えるな
03313282006/05/04(木) 23:35:13
>>330
俺は使ってると信じてるよ、間違い無く使ってるはずだと
Google的なイノベーションを起こすのはC++だってね
だからC++に可能性を感じてるんだが

でもGoogleの基盤システムのソースコードを読んでないから確信のままなんだけどね
でもこれからのイノベーションはこっちの方向なんだろうね
■ このスレッドは過去ログ倉庫に格納されています