トップページ⇒tech
988コメント299KB

Boostを語れゴラァ part5

■ このスレッドは過去ログ倉庫に格納されています
0001BOOTS2007/10/18(木) 08:09:35
語って.はぁと part boost::mpl::int_<5>

過去スレ
part 4 http://pc11.2ch.net/test/read.cgi/tech/1175663346/
part 3 http://pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 http://pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 http://pc8.2ch.net/test/read.cgi/tech/1091198276/

■関連サイト■
Boost C++ Libraries
http://www.boost.org/

Boost 翻訳プロジェクト
http://boost.cppll.jp/HEAD/

Let's Boost
http://www.kmonos.net/alang/boost/

boost info
http://shinh.skr.jp/boost/
0529デフォルトの名無しさん2008/02/18(月) 22:17:38
>528
ああ、まさにそれです。
ありがとうございます。
boost自体をまだ勉強しないとダメですね。
0530デフォルトの名無しさん2008/02/18(月) 22:33:30
VC6でboostのヘッダだけ入れてる状態で、boost::array等を使うと
warningエラーが出ますが、正常に動いています。
気にしなくても大丈夫でしょうか?
また、boostをきちんとビルドして入れると違いますか?
ビルドがうまくいかないもので比較ができません・・・。
0531デフォルトの名無しさん2008/02/18(月) 22:53:38
warningエラー
0532デフォルトの名無しさん2008/02/18(月) 23:03:44
http://d.hatena.ne.jp/kaz_kushima/

現在の最新版(Ver 1.34.1)ではVC6はサポート対象外になった…という噂を聞いたので試していない。

初心者には厳しすぎる事実・・・。
0533デフォルトの名無しさん2008/02/18(月) 23:08:35
>532
VC2005EEか2008EE入れればすむ話なのでは
0534デフォルトの名無しさん2008/02/18(月) 23:17:26
>533
NET Frameworkを入れたくないんです・・・。
一度入れたけど、すごくXPが重くなった。
それにバカだからMFCのAPPWizardが無いとちょっときつい。
0535デフォルトの名無しさん2008/02/18(月) 23:42:38
>530
どうやらデスクトップでコマンドプロンプトを使うと、名前が長すぎるか、
それとも日本語に対応していないか?でうまくコンパイルができないみたい。
C:\にしたら問題有りませんでした。
0536デフォルトの名無しさん2008/02/18(月) 23:53:51
>530は『VC6はC++じゃない』ということを理解すべき。
素直にVisual Studio Standard Edition 買った方がいいんじゃない?
2008にするかどうかは悩ましいところだけど。
わざわざ使い物にならないバッドノウハウの世界に突っ込むこともないと思う。
0537デフォルトの名無しさん2008/02/19(火) 00:18:41
>536
わざわざ新しい物買うの?
欲しいのは山々だけどお金が・・・。
Enterprise買ったの失敗だったかな?
MFCに捨てたらほとんどWin32APIの世界で
やらないといけないようなイメージがあって
辛い。
0538デフォルトの名無しさん2008/02/19(火) 01:00:50
>>537
VC6自体というかVC6のC++コンパイラな。だめなのは。
というか、コンパイラだけなら今のSDKのやつが使えないかね。
0539デフォルトの名無しさん2008/02/19(火) 01:05:24
ExpressEditionならタダだろ
0540デフォルトの名無しさん2008/02/19(火) 01:10:12
>538
そうですか?
失礼しました。
ところでlibsのなかにいろいろとできているのですが、ライブラリの拡張子が
何か教えてください。
0541デフォルトの名無しさん2008/02/19(火) 01:11:38
>539
ExpressEditionでALTを使ってやっているんですかみなさん?
0542デフォルトの名無しさん2008/02/19(火) 01:11:58
>537
自分から泥沼にはまるつもりなら止めはしないけど。
まあ、アップグレードでも2万円するしね。

そういや、前のバージョンならExpressEditionからもアップグレードできるのね。知らんかった。
0543デフォルトの名無しさん2008/02/19(火) 01:17:49
なぜいきなりATL(だよな?)の話が
0544デフォルトの名無しさん2008/02/19(火) 01:43:15
>542
NETFRAMEWORKいれるの覚悟でなんとかやってみる。
まずはフリーから。
0545デフォルトの名無しさん2008/02/19(火) 01:59:30
ELTは良い曲だすよね
0546デフォルトの名無しさん2008/02/19(火) 02:04:43
よくキーボードマニアでやったなぁ>ELT
0547デフォルトの名無しさん2008/02/19(火) 08:16:22
MFCを捨ててWTLをやってみないか。
0548デフォルトの名無しさん2008/02/19(火) 08:23:30
>>537
MFCのことはさっさと忘れろ
VC2005の無料版でboost+wxWidgetsで幸せになろうぜ
0549デフォルトの名無しさん2008/02/19(火) 09:44:05
GUIはC#で書いて、マネージ/アンマネージ間をC++/CLIで橋渡しする。
0550デフォルトの名無しさん2008/02/19(火) 11:07:10
GUIはguile-gtk
0551デフォルトの名無しさん2008/02/19(火) 15:02:48
そういや、Boost GUI ってどうなったんだろ
0552デフォルトの名無しさん2008/02/19(火) 17:58:19
Boost.Actもどこいったのやら
0553デフォルトの名無しさん2008/02/19(火) 18:03:11
Boost で GUI ってまさか GUI Buider?
全然似合わないけど。
0554デフォルトの名無しさん2008/02/19(火) 18:16:43
Boost 1.35ってどこで入手すればいいですか?
0555デフォルトの名無しさん2008/02/20(水) 00:37:54
svn
0556デフォルトの名無しさん2008/02/20(水) 10:16:18
>>549
C++/CLIだとC#からダイレクトに橋渡しするより楽なん?
0557デフォルトの名無しさん2008/02/20(水) 10:17:51
橋渡しは、WinDNAの悲劇の再来。
0558デフォルトの名無しさん2008/02/20(水) 14:07:07
>>556
クラスとかC++の機能を使ったライブラリが難なく取り込めたり、
<windows.h>ほか多数のヘッダが存在するから
関数プロトタイプをいちいち調べて書かなくてよかったりする。
0559デフォルトの名無しさん2008/02/21(木) 00:06:52
Boostをsvnから取ってきて数日たったあとsvn更新するとけっこう変更ファイルあるみたいなんだけど、
みんなはどのタイミングのをビルドしてる?
0560デフォルトの名無しさん2008/02/21(木) 07:52:59
自分が使うライブラリが更新された時。
あとは気が向いたら。
ビルドしたものは全部残しているから何か挙動がおかしければ
自分のプログラムのユニットテストで引っ掛かるからすぐ戻す。
いままで戻したことは無いけど。
ユニットテストは特にフレームワークを使っている訳じゃなくて
単にアサーションの連続だけど。
0561デフォルトの名無しさん2008/02/21(木) 14:18:47
Boostの正規表現で(?<!)や(?<=)は使えますか?
0562デフォルトの名無しさん2008/02/21(木) 16:42:20
regexでもxpressiveでも使えたはず。
0563デフォルトの名無しさん2008/02/21(木) 23:57:33
>>562
boost::regexpを利用したテストツールらしいのですが、
ttp://www.vector.co.jp/soft/winnt/util/se385428.html
(?<=)が使えなかったので。
このソフト固有の問題ですかね
0564デフォルトの名無しさん2008/02/22(金) 00:14:29
boost のドキュメント見ればサポートしている表現は書いてあるだろ
0565デフォルトの名無しさん2008/02/22(金) 01:34:09
enable_shared_from_this
は1クラスしか対応してない?

class MyName
:public IClass
,public IName
,boost::enable_shared_from_this<IClass>
,boost::enable_shared_from_this<IName>
{
public:
virtual boost::shared_ptr<IClass> get_class()
{
return shared_from_this();
}
virtual boost::shared_ptr<IName> get_name()
{
return shared_from_this();
}
};
0566デフォルトの名無しさん2008/02/22(金) 01:42:23
エラーになる理由はpublic継承でないからに見えるけど、そもそも単にこうでいいと思う。
class MyName
:public IClass
,public IName
,boost::enable_shared_from_this<MyName>
{
public:
virtual boost::shared_ptr<IClass> get_class()
{
return shared_from_this();
}
virtual boost::shared_ptr<IName> get_name()
{
return shared_from_this();
}
};
T*からU*へ暗黙の変換が可能なら、shared_ptr<T>からshared_ptr<U>への暗黙の変換も可能。
0567デフォルトの名無しさん2008/02/22(金) 01:42:46
って俺もpublicにしていないしorz
05685652008/02/22(金) 02:09:54
コンパイルは通るけど実行すると
bad_weak_ptr飛んでくる
0569デフォルトの名無しさん2008/02/22(金) 02:20:29
まさかとは思うけど、shared_ptrに入れていないMyNameインスタンスに対して
get_classやget_nameを呼んでいるなんてことはないよね?
05705652008/02/22(金) 02:28:38
>>569
そういうことかああー
ありがとう。
0571デフォルトの名無しさん2008/02/22(金) 02:40:49
みんなBoost v1.35をsvnから取ってきて自前でコンパイルしてるのですか?
0572デフォルトの名無しさん2008/02/22(金) 02:55:00
みんなって言われても俺一人じゃ答えられない(><)
0573デフォルトの名無しさん2008/02/22(金) 02:59:54
最近あちこちでウザいアンケート多すぎ
0574デフォルトの名無しさん2008/02/22(金) 03:05:35
>>206使ってるんじゃないの?
0575デフォルトの名無しさん2008/02/22(金) 16:34:29
ウザくてごめんなさい
もう消えます・・・
0576デフォルトの名無しさん2008/02/22(金) 17:10:02
最近同じやり取りが>>559-560でされてるから煽られても仕方ない。
消える必要までは感じないが、過去レスを見てから、死ぬがよい。
0577デフォルトの名無しさん2008/02/22(金) 17:43:18
色々過去ログを見てきたので消えます。
皆さん達者で
0578デフォルトの名無しさん2008/02/22(金) 18:43:17
boost::bindでstdcallな関数使う場合はBOOST_BIND_ENABLE_STDCALLを定義すればいいんだけど、
lambda::bindでstdcallな関数を使いたい場合は方法ってあるんでしょうか。
VC++2008です。

vector<ATL::CString> v; ってのを使ってて大文字小文字無視ソートがしたくて、

 sort(v.begin(), v.end(), boost::lambda::bind(lstrcmpi, _1, _2) < 0);

これだとエラー。cdeclなCRT関数使うと動く…

 sort(v.begin(), v.end(), boost::lambda::bind(_tcsicmp, _1, _2) < 0);

もちろん大文字小文字を無視しないソートするだけなら

 sort(v.begin(), v.end(), _1 < _2);

なんだけど…
0579デフォルトの名無しさん2008/02/23(土) 17:09:40
boost::Poolライブラリ使ってる人いる?
ちょっと使ってみたら、確かにデフォルトnew、deleteより
全然速かったんだけど、手放せないという人いる?
0580デフォルトの名無しさん2008/02/23(土) 17:42:29
コピーすると自動的にディープコピーになる
boost::scoped_ptr の変種って便利じゃね?
0581デフォルトの名無しさん2008/02/23(土) 18:14:53
「ディープコピー」の振舞いを決めるのが難しい。
普通にコピーコンストラクタ組むのとあんまり手間変わらんし。
0582デフォルトの名無しさん2008/02/23(土) 18:17:45
難しい?コピーコンストラクタを呼ぶだけじゃないか?
>>580は要するに最大sizeが1のvectorだから、設計上の困難はなさそうだけど
0583デフォルトの名無しさん2008/02/23(土) 18:27:10
深い構造体は同値性一つ取っても、
多種多様な意味付け方があるし、コピーだって同じだよ。

Lispみたいにメモリ管理については無視していい言語でさえ、
同値性は4つの述語関数がある。

>>581はそういうこと言っていると思う。

まあどれか決め撃ちで作ったり、
テンプレートでコンパイル時に選べるのを作るのは面白いと思う。
0584デフォルトの名無しさん2008/02/23(土) 18:41:17
>>583
その色んな意味付けから一つ選んでコピーコンストラクタの振る舞いを決めるのがC++のやりかたじゃないか?
実際にコピーを行う側は盲目的にコピーコンストラクタを呼んで、実際にどこまで深くコピーするかはコピーコンストラクタが決める

同様に、C++には標準的な同値性は二種類しかない
オブジェクトとしての同一性と、operator==
05855812008/02/23(土) 18:59:10
>580 >584
むむむ?なんかハッキリしないなぁ
値の振舞いとの違いは何?boost::scoped_ptrに何を期待してるの?
0586デフォルトの名無しさん2008/02/23(土) 19:04:58
optional使えよ
05875842008/02/23(土) 19:05:26
>>585
俺は>>580じゃないよ
値との違いは、NULLになり得るとか、resetが使えるとか、コピーなしでswapできるとか、そんなんじゃね
05885812008/02/23(土) 19:58:46
>587
その程度だと「boost::any使ってみたら?」でお仕舞いだなあ。
多態は使えんけど。
0589デフォルトの名無しさん2008/02/23(土) 20:02:38
class A {
...
scoped_ptr<B> p;
...
};

A a;

で,p の指している先のオブジェクトに dereference するには
*(a->p) って書くと思うんですが。a->p まで書いていちいち
前に戻って *( って書くしかないですかね。
左から右に自然と書きたければ a->p.operator*() とか?
0590デフォルトの名無しさん2008/02/23(土) 20:04:51
あ、ごめん、A a じゃなくて A *a と読みかえてください。
0591デフォルトの名無しさん2008/02/23(土) 20:14:30
普通に最初から * ( と書き始めればいい。
0592デフォルトの名無しさん2008/02/23(土) 20:20:28
なんで括弧使うの?
0593デフォルトの名無しさん2008/02/23(土) 20:24:05
内部データの「ハンドル」を返え、
あ、いや、なんでもないです。。。
0594デフォルトの名無しさん2008/02/23(土) 20:24:14
あれ?優先度間違って覚えてる?俺。
0595デフォルトの名無しさん2008/02/23(土) 20:34:30
あっても無害だけど不要。
0596デフォルトの名無しさん2008/02/23(土) 20:41:29
*a->p; だとまず * は a に作用するんだと思ってた。
先に -> が働いてから * が働くのか。
0597デフォルトの名無しさん2008/02/23(土) 22:30:58
boostやるんだったら、暗記しなくてもいいから演算子の優先順位表くらいはすぐに出せるようにしておこうな。
0598デフォルトの名無しさん2008/02/23(土) 22:35:48
分かってても俺なら括弧つけるね。
0599デフォルトの名無しさん2008/02/23(土) 22:53:07
おれも括弧つけるね。
言語ごとに演算子の優先順位が違ったりするし。
0600デフォルトの名無しさん2008/02/23(土) 22:53:08
他人が読む可能性のあるコードにはオレも括弧つけるな
0601デフォルトの名無しさん2008/02/23(土) 23:12:00
俺もカッコつけたら動いたからつけてる
0602デフォルトの名無しさん2008/02/23(土) 23:17:07
おまえらカッコばかりつけやがって
0603デフォルトの名無しさん2008/02/23(土) 23:43:11
どうせコンパイラが最適化するんだから、ワークの変数にして短い変数で使う。
0604デフォルトの名無しさん2008/02/24(日) 02:10:18
*a->bと*a++は定型句に近いと思うんだが
0605デフォルトの名無しさん2008/02/24(日) 03:23:54
ここで*++aの出番だな
0606デフォルトの名無しさん2008/02/24(日) 06:23:10
intrusive_ptr にはなぜ reset() が無いんだろう
shared_ptr のノリで書いてるとついつい reset で代入しようとしてしまう
0607デフォルトの名無しさん2008/02/24(日) 10:45:24
俺は reset できない scoped_ptr が欲しいのだが.
単に reset しなけりゃいいじゃんといわれればそれまでだけど.
0608デフォルトの名無しさん2008/02/24(日) 11:21:25
resetのないインターフェースをscoped_ptrで実装
0609デフォルトの名無しさん2008/02/24(日) 11:58:03
resetをprivateにして継承する
0610デフォルトの名無しさん2008/02/24(日) 12:14:18
class A {
std::scoped_ptr<X> pX;
A : pX(new X) {}
}

もうね、コンストラクタの初期化リストで初期化した後は
一切触りたくないわけさ。ところで new X に失敗したら
コンストラクタ中で throw std::bad_alloc() していい?
0611デフォルトの名無しさん2008/02/24(日) 12:15:41
古いコンパイラでもなければ new が bad_alloc 投げるだろう。
0612デフォルトの名無しさん2008/02/24(日) 12:16:55
>>610
pXをconstにすればresetできなくなる。swapもできなくなるけど。
0613デフォルトの名無しさん2008/02/24(日) 12:49:57
>>612
そ、そうじゃん・・・
なんで今まで気づかなかったんだろ、俺。
0614デフォルトの名無しさん2008/02/24(日) 18:19:40
boost.pythonはお題目だけであんまり開発進んでないのか
期待してたのに
0615デフォルトの名無しさん2008/02/24(日) 18:31:28
C++からpythonのコードを呼び出す方の解説ページとかありますか?
逆は良く見るんだけど。。。
0616デフォルトの名無しさん2008/02/24(日) 19:24:55
動的結合図書館
0617デフォルトの名無しさん2008/02/24(日) 19:58:55
>>614
よく知らんけど、あれって汎用の言語ラッパとしては使えないんだっけ。
SWIGみたいな。でないとあまり Boost でやる意味ないような…
0618デフォルトの名無しさん2008/02/24(日) 20:02:13
Python以外のスクリプトは死滅するから問題ない
0619デフォルトの名無しさん2008/02/24(日) 20:30:51
個人的には JavaScript が好きなんだが・・・
だってプロトタイプが他の言語で C++ とずいぶん毛色が違うから.
まぁ boost 関係なく Mozilla のつくってる JavaScript の
エンジン使えばいいんだけどね.
0620デフォルトの名無しさん2008/02/24(日) 21:31:50
Mozilla以外にも実装はいくらでもあるしな
0621デフォルトの名無しさん2008/02/24(日) 22:04:07
ECMAScriptって言おうぜ
0622デフォルトの名無しさん2008/02/24(日) 22:09:31
>617
Boost.LangBinding というプロジェクトがあるそうだが停滞してるみたいね。
0623デフォルトの名無しさん2008/02/24(日) 22:30:22
あんなの粋狂でしょ。
そもそもboostはC++べったりだから。
0624デフォルトの名無しさん2008/02/24(日) 22:34:18
べったりて
当たり前だろ
0625デフォルトの名無しさん2008/02/24(日) 22:46:14
コンパイル時のC++の挙動にべったりなのに
他の言語でどうのこうの言う方がまぬけだよな
0626デフォルトの名無しさん2008/02/25(月) 02:09:33
boost.pythonを有効活用している具体例or実体験を聞きたいです
0627デフォルトの名無しさん2008/02/25(月) 02:18:37
boost.python の object, list, dict なんかのラッパクラスは結構便利
0628デフォルトの名無しさん2008/02/25(月) 02:20:49
現状ただ単にCインターフェースにちょっとラッパ被せただけだよね。 まぁ便利なんだけどboostでやることかと聞かれると首を捻る。

>>615
pythonドキュメントのapi.pdf参照
■ このスレッドは過去ログ倉庫に格納されています