1 名前:BOOTS [2007/10/18(木) 08:09:35 ] 語って.はぁと part boost::mpl::int_<5> 過去スレ part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/ part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
2 名前:デフォルトの名無しさん [2007/10/18(木) 08:10:02 ] ■関連書籍■ Boost C++ Libraryプログラミング www.amazon.co.jp/exec/obidos/ASIN/4798007862/ Beyond The C++ Standard Library www.amazon.co.jp/exec/obidos/ASIN/0321133544/ C++ Template Metaprogramming www.amazon.co.jp/exec/obidos/ASIN/0321227255/ The Boost Graph Library www.amazon.co.jp/exec/obidos/ASIN/0201729148/ ■関連スレ■ C++相談室 part58 pc11.2ch.net/test/read.cgi/tech/1190745673/ 【C++】STL(Standard Template Library)相談室 7 pc11.2ch.net/test/read.cgi/tech/1185986999/
3 名前:デフォルトの名無しさん [2007/10/18(木) 08:10:07 ] Loki sourceforge.net/projects/loki-lib/ JTC1/SC22/WG21 - The C++ Standards Committee www.open-std.org/jtc1/sc22/wg21/ POCO, the C++ Portable Components www.appinf.com/poco/info/ sourceforge.net/projects/poco/ The unofficial BCB Boost patches bcbboost.sourceforge.net/
4 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 12:31:01 ] >>1 乙
5 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:28:37 ] ,、ヽl |l | l| l || l| l | ビ ク ッ ミ お っ 立 も __ノ _,.ヘ _,,... -- ─--「::「 {i:.:.:`'、_/:.:.:.:.:.[/-...,,_ ソ ,' い Ξ っ あ て っ ) /::7ヽ、ヘ,.-ァ'^ヽ∠ヽ,/L__`|:::|/}!.:.:.:.:r7=-:.:.:.:.!7::::::::::::`ヽ. ッ i け ニ 立 ぁ な も !::::!´ア「>'‐''"´ `"'<LL_,'i>:'へ、:.:.:.:.:.:.r/::::::::::::::::::::::':., .|. な Ξ て ん い う /´\「>'" ァ':::::::::::::::\__」}:::::::::::::::::::::::::::::ヽ.! い 三 ち ・ っ 糞 ,' _」ア´ / /! ! /! / ;'::::!:::::::';:::';::::::::ヽ::::::':;::::::::::::::、::::! 子 = ゃ ・ て ス i 'ヽ! / 7, 'イハ /! メ、,!__ハ, 'i::::::ト,::::::!::::i::::i:::::::':;:::::';:::::::::::::::ヽ;| ね 三 ぁ ら 約 レ ', .,' / /!,!-'、:レ' |/ァ' レ ヽ!::!:::! ':;:::|ー!-ハ::::::::i:::::::!::::::::':;:::::::ヽ: = ら め 束 は !/ ;' ,ヘ!i. i,.ハ 、,_ !!::!:;ハ ヽ,jァr-;、!_ハ」:::::;':::::::::::::ヽ,::::::::;ゝ、.,__ ニ め っ っ ・ ノへ,/レヘ, ! ゝ' ....::::::... '  ̄´゚o'レヘjソ :::.. 」_r!`> 7__/:::::i:::::::::::::: 三 ぇ ・ ・ ・ ! ノ; ./7''"/// /// !/. ! '"'",':::::::!::::::i:::::::::::i 変 = ぇ も ・ ・ ノ; / ,' ゝ、 ( ヽ u ( ) ハ !:::::;'::::::::':;::::::!. 態 三 ぇ う ・ あ 〈,へレ'〈ジi/ミ>.、..,,____ ,. イ ( )`ヽ. ̄フ !:::/i_;;::;;_:::::< さ ≡, ぇ 糞 は ぁ i `:、レ'"´ !_r'"レ'/:::::::::>ァ、/|ヘ ヽ,__,..,.-''" ̄`ヽ、_ヽ:::':;! ん Ξ, ぇ .ス ぁ っ ':, `ヽ、 ,r;く:::::::!/::::::::::::/」;' `ヽ. _>'" Yヽ:::::!. ? 彡 ! レ ん っ ヽ、 ,.kヘ_!::::ム:::::::/]/ ,ァ-'‐''"´ ヽ!、_ 〉:.!.
6 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 11:59:31 ] >>1 乙
7 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 20:36:20 ] >>5 乙
8 名前:停止しますた mailto:停止 [2007/10/24(水) 12:55:39 ] 真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
9 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:56:17 ] ?
10 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:37:43 ] 来たよ!
11 名前:停止しますた mailto:停止 [2007/10/26(金) 11:38:17 ] 偽・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
12 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 03:28:33 ] 12
13 名前:745 mailto:sage [2007/10/27(土) 03:54:01 ] #include <boost/lambda/lambda.hpp> #include <boost/lambda/bind.hpp> #define BOOST_MEM_FN_ENABLE_STDCALL #define BOOST_BIND_ENABLE_STDCALL #include <boost/bind.hpp> struct F { int __stdcall f(int) { return 0; } }; int main(void) { namespace bll = boost::lambda; F f; boost::bind( &F::f, &f, bll::_1 )(1); // bll::bind<int>( &F::f, &f, bll::_1 )(1); <- error!! } __stdcallの関数はboost::lambda::bindでは呼びだせないんでしょうか? boost.usersで次のような古い記事を見付けたのですが ttp://tinyurl.com/34cv9e この通りに戻り値を明示的に指定しても無駄なようです
14 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 06:25:20 ] boostにLokiのディスパッチャのような物はありますか?
15 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:41:25 ] _」, -─ .:. :. :. :.::::::::::::::::::::::::.:.`ヽ 〈 ,.'"´ ̄  ̄`ヽ、.:::::::.:.:./ V´ .::l:|:. `、ヽミミヽ、 ヾ:./ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / .::l::从ト、 `ヾ_ミミヽ、 ヽ < 君さぁこんなスレッド立てるから l/l.:l.:リ仁リニトト、仁≧ミヽ:::ト、 .:::| | 厨房って言われちゃうんだよ `Y::{fトッソ ``ト。ッソ` 1:l:|::`、:::::! \______________ |.::l´¨ 、 ´ ̄ /::リ::::::::V ヽ:ヽ、 ー , タ::l:;:::::::/ , -‐─‐‐- 、 , -─-、 __ , イ/.::j:|:::/l/ , ィ"´ ‐f ‐ \ /., `トい、_,/^i.:l:|/ .// , -──‐- 、`ヽ\ /.:::/ .:i {{i^Y^YYy'l/ 〈 〃 ,ィ´ .:.:.:.:.::.:::::i::l:.\j ト、 /.:.::::/ .:.::| k1 |:l ,ム;、ハ、 V__/:::l/::::/:/.::::,イ.:::ハ!:l::::::.:V / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ L.::::厂ヽ .:.:::::| / {j! ーイ:介;l/ ,ハ /ハ!::/l:::/:/.::;ィイ/:::ハ:::|:::i.:.::{/ < おまえのことを必要としてる奴なんて {7 / \::::! / jfl |:1j! |:|{ Vi l:1ホ{:::l:i;:ィニー 、//-十1:,'.:.:,リ | いないんだからさっさと回線切って首吊れ // ,.イ:::l/ jf| l;」jl j:」| |::H:| {::l:iイヒリソヽ イヒッソl/, イ/ \_________________ /´ ̄ /::::|:;:;.\ kiL, H fj 〉; |:ト、_,{::ト.、_' ' ' '  ̄ / /i _>ーー- ,.イヽ、::l;;;:;:;:;(:::/タ^Tニム、_ ,';{:/ |:|:::Y´「 ̄`ハ、 `´ , .イ _j/::| /。 ̄`¨`ヽ_ソ `1>‐-ヽ{:::::/><!::::::7 |i::ノ { /.::`K T.::::/ /.:::| ,/。 / 〉ニ三云\:.ヽ<ノ::::::」ヽ. Y ,レ'´.::::::::::.〉ハコ``Y::.ヽ / / /¨´ ̄ ̄`ヽ、三三ミ<::::| | //.:::::::::::::::://´j}ト、 _」::::::|
16 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:47:44 ] >>15 不覚にも噴いた
17 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:54:09 ] >>14 boost::type boost::bool_ boost::int_ boost::integral_c あたりをどうぞ。これもFAQ気味だな。
18 名前:745 mailto:sage [2007/10/27(土) 22:59:46 ] そういう用途ならboost vaultにdispatcherという名前からしてそのものズバリのがあります これを適当にカスタマイズして使うのがよろしいんじゃないでしょうか?
19 名前:14 mailto:sage [2007/10/28(日) 08:11:33 ] レスありがとうございます。 >>17 すみません説明不足でした。 多重ディスパッチによるマルチメソッドです。(Loki::BasicDispatcherとか) >>18 boost vaultは初めて知りました。(よくみたらLet's Boostにもリンクはってありますね) ソース見たところ、Lokiの物よりかなり機能が弱く感じます。 Lokiを使うのがいいのかもしれません。
20 名前:デフォルトの名無しさん [2007/10/28(日) 18:48:54 ] boost/type.hppって何に使うんでしょうか? // Just a simple "type envelope". Useful in various contexts, mostly to work // around some MSVC deficiencies. ファイルには上記のように書いてありますがどういうこと?
21 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 20:11:24 ] template<class T> T f(); を f<int>(); と呼べない場合があるので template<class T> T g(boost::type<T>); を g(boost::type<int>()); と呼ぶ
22 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 14:56:29 ] >>20 ディスパッチのユーティリティとして使うとか。 boost/type_traits/detail/wrap.hpp とかもあるね。 template <class T> struct type {}; template <class T> struct tester { template <class U> static char (&test(U*))[1]; template <class U> static char (&test(type<U>*))[2]; template <class U> static char (&test(...))[3]; template <class U> static size_t f1(const U&) { return sizeof(test<T>(static_cast<U*>(0))); } template <class U> static size_t f2(const U&) { return sizeof(test<T>(static_cast<type<U>*>(0))); } }; struct X {}; struct XX : X {}; tester<X>::f1(X()); // => 1 tester<X>::f1(XX()); // => 1 tester<X>::f2(X()); // => 2 tester<X>::f2(XX()); // => 3
23 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:24:10 ] struct char_p_less : std::binary_function<const char*, const char*, bool>{ bool operator()(const char* left, const char* right) const{ return std::strcmp(left, right) < 0; } } typedef std::map<const char*, std::string, char_p_less> QueryMap; これをLambdaを使って実現したいんですが、Lambda式で書いた結果は関数オブジェクトの値であって、型ではないので typedef std::map<const char*, std::string, (bind(std::strcmp, _1, _2) < 0) > QueryMap; このようなことが出来ないです。 typedef std::map<const char*, std::string, function2<bool, const char*, const char*> > QueryMap; boost::function2<bool, const char*, const char*> compare = (bind(std::strcmp, _1, _2) < 0); こうしてから使うときに QueryMap foo(compare); するしかないですか?
24 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:28:50 ] いいえ、他の方法があります。 template<class T> void use_query_map(const T&){ typedef std::map<const char*, std::string, T> QueryMap; QueryMap foo; // fooを使う } これで、この関数内では使い放題です。
25 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:30:05 ] use_query_map(bind(std::strcmp, _1, _2) < 0); を書くのを忘れていました。
26 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:21:10 ] boost.testのBOOST_PARAM_TEST_CASEマクロの第一引数に boost::function1のオブジェクトを指定することはできないんでしょうか? >error C2660: 'boost::unit_test::make_test_case' : 関数に 4 個の引数を指定できません。 のような具合にどうにも通らないようです #include <boost/test/unit_test.hpp> #include <boost/test/parameterized_test.hpp> #include <boost/bind.hpp> #include <boost/function.hpp> #include <list> void test_mask (int, int){} struct sub_test_suite : public boost::unit_test::test_suite { sub_test_suite() : test_suite("sub_test_suite") { BOOST_PARAM_TEST_CASE( (boost::function1<void,int>(boost::bind(&test_mask, _1, 0x80))) , params.begin(), params.end()); } private: std::list<int> params; }; using boost::unit_test::test_suite; test_suite* init_unit_test_suite( int, char* [] ) { test_suite* test = BOOST_TEST_SUITE( "Parameterized boost::function based test case" ); // add test cases to test_suite test->add( new sub_test_suite ); return test; }
27 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 07:55:35 ] boost::functionからboost::unit_test::callback1への変換が上手くいかないだけのようなので、 このように直接callback1のテンポラリを作って渡してやれば一応コンパイルはできました boost::functionに対する依存も減りますし、この方法使ってればいいんでしょうかね… #include <boost/test/unit_test.hpp> #include <boost/test/parameterized_test.hpp> #include <boost/bind.hpp> #include <list> // user definition test function void test_mask (int, int) {} // user definition test class std::list<int> params; using boost::unit_test::test_suite; test_suite* init_unit_test_suite(int, char* []) { test_suite* test = BOOST_TEST_SUITE("test"); BOOST_PARAM_TEST_CASE( (boost::unit_test::callback1<int>(boost::bind(&test_mask, _1, 0x80))) , params.begin() , params.end() ); return test; }
28 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 23:22:17 ] VC++7.1でboost1.33.1ですが std::wstring sNumber = L"2007"; unsigned short wValue = boost::lexical_cast<unsigned short>(sNumber); でbad_lexical_castが投げられてしまいます。 unsigned short以外の型では問題は無いのですが。 見あたらなかったのですが既知の問題ですか?
29 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:28:59 ] コンパイルオプションの wchar_t をビルトイン型として扱う (/Zc:wchar_t) じゃない?
30 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:53:53 ] emacs + gtags でboostのコード閲覧がvisula studioみたいにできるけど debugで変数の動きとか追いかけるのもemacsでVisualStudioみたいに できる方法ないのかな
31 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 13:20:49 ] VisualStudioほど便利じゃないと思うけど、gdbで↓ ttp://www.coins.tsukuba.ac.jp/~yas/coins/compsys-2000/gdb-4.17-doc/gdb_6.html#SEC30 ttp://www.coins.tsukuba.ac.jp/~yas/coins/compsys-2000/gdb-4.17-doc/gdb_9.html#SEC57
32 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 13:25:53 ] .NET Frameworkでvisual Studioの操作を外部プロセスから行う事が出来るから それをEmacsから操作できるようにするってのがまぁ妥当な方法かも ただし無駄に面倒だから恐らくやってる人は極少数 なんでVSにはコマンドラインデバッガが無いんだろうね…
33 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 14:46:43 ] Visual Studio は統合開発環境で、ホスト・アプリケーションだから。
34 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 16:27:52 ] むしろ Visual Studio にプロファイラがついていないことが疑問。 gprof みたいなやつって Windows だとなに?
35 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 16:54:25 ] 2005から、ガイド付き最適化(GPO)ができた けど、使いにくいと個人的には思う
36 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 17:04:00 ] 悔しい、2003なら無料のdevpartnerが使えるのに…!!
37 名前:28 mailto:sage [2007/11/09(金) 21:01:15 ] >>29 ありがとうございます、その通りでした。 もう一度、そこら辺のドキュメントがないか見てみます。。。
38 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:01:39 ] 以前のサイト移動しただけだったみたい ttp://syrinx.q.t.u-tokyo.ac.jp/hashimoto/graph/
39 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:07:41 ] >>34 >むしろ Visual Studio にプロファイラがついていないことが疑問。 Team Editionの一部にはついてるよ。
40 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:25:43 ] VTune + プロファイラー が intel からでていますよね? 結局それ以外使い物にならないのでは?
41 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:28:41 ] VTUNEはAMDのCPUでは使えないのだよ…
42 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:24:14 ] CodeAnalystでいいじゃん
43 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:05:23 ] bjam ver3.1.15-1経由でcl.exeのメッセージやワイド文字をコンソールに出力するアプリケーションでワイド文字を表示したら悉く???????と表示され、 いかにもロケール設定できてませんよって事態になります。 bjamを使わずに直接cl.exeやワイド文字を使うアプリを起動して表示すればちゃんと表示されのにも関わらずです。 以前のバージョンなら確かにcmd.exe以外のターミナルだろうが、cygwinのbashやzsh上だろうがNTemacsの中のシェルだろうが、 ちゃんと表示されてたんですが、皆様の環境ではどうでしょう?
44 名前:43 mailto:sage [2007/11/11(日) 18:53:03 ] もろbjamの問題でした 適当なリビジョンのやつを落としてビルドしたバージョン3.1.14だとこの件に関しては正常に動作しました
45 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:50:17 ] boost 1331ではboot.pythonでnumpy使えないないのかね コンパイルは通るけど実行時にエラーでる
46 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:02:53 ] 最新のstableの1.34.1もしくはSVN Headで試してみればどうでしょうか?
47 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:41:47 ] centosなのでpythonを2.4から2.5にあげるとシステムに不具合でるのです どうやら boost1.33.1 python2.4の組み合わせでしか動かないみたいです
48 名前:デフォルトの名無しさん [2007/11/21(水) 19:49:45 ] boost::formatの逆のような処理を行うライブラリはありますか? try { unsigned short us = 0; int i = 0; (format("%1%, %2%") %us %i) = "0xABCD, -1234"; BOOST_CHECK_EQUAL(0xABCD, us); BOOST_CHECK_EQUAL(-1234, i); } catch(const format_error& e) { } 見たいな感じが理想です
49 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 19:50:48 ] それは正規表現の仕事だな 強いて挙げるならregexとかxpressiveか
50 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 19:52:29 ] >>48 要するにscanf()のboost版が欲しいわけだ 一言で言えば、無いよ
51 名前:48 mailto:sage [2007/11/21(水) 20:07:58 ] 了解しますた xpressive->lexical_cast戦法でいきます
52 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 20:10:20 ] なんでlexical_castなんぞ使うんだ?
53 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 21:08:07 ] intとかに変換したいからでしょ? 悪かないと思うが。
54 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:15:23 ] xpressiveを使うならそこはSemantic Actionだろ。 ちょうどいいサンプルもあることだし。 ttp://boost-sandbox.sourceforge.net/libs/xpressive/doc/html/boost_xpressive/user_s_guide/semantic_actions_and_user_defined_assertions.html
55 名前:48 mailto:sage [2007/11/22(木) 16:09:45 ] >>54 こんなのあったのかー すごい・・・ でもasのなかでも呼ばれてるlexical_castが16進数とかを良きに計らってくれなくて俺涙目w
56 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 19:04:45 ] >>55 spirit と bind に触発されて昔作ったもの。 sprintf や sscanf みたいなことを spirit っぽく静的に記述する。 string strA, strB; sprint( strA, "1 " % !_x[6] % "/" % _s, 10, "aaaa" ); sprint( strB, "2 " % (!_0x[6]) % "/" %_s, 10, "aaaa" ); cout << strA << endl; // 1 0xa/aaaa cout << strB << endl; // 2 0x000a/aaaa int xA, xB; string yA, yB; sscan( strA, "1 " % _ws % _x % "/" % _s, xA, yA ); sscan( strB, "2 " % _x % "/" % _s[3], xB, yB ); print( cout, "xA = " % _d % "\nyA = " % _s % _endl, xA, yA ); print( cout, "xB = " % _d % "\nyB = " % _s % _endl, xB, yB ); // xA = 10 // yA = aaaa // xB = 10 // yB = aaa kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5317.zip
57 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:37:26 ] notizキターw
58 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:48:11 ] notizと聞くと某ゴーストとか火狐のテーマとかを思い出す俺は異端かな
59 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:49:16 ] tupleをsinkやsourceにしてそれに対するfilterにしたらとても面白いかも・・・ でも今の僕にはその技術はありませんでしたというオチ
60 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:17:00 ] MFCやCLIを基本として、BoostだのLokiだのSTLだのATLだのWTLだのを 覚えなきゃならないなんて、C++は大変だな。 おまけにXMLやるならXML用のライブラリ、SQLやるならSQL用のライブラリと キリがない。 C++もういいよ。終了。
61 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:19:41 ] >>60 頭おかしいのかお前。 例えば、何の言語を使えば MLやるのにXML用のライブラリを覚えなくていいのか SQLやるのにSQL用のライブラリを覚えなくていいのか言ってみろ。
62 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:19:58 ] そうだね、プロテインだね。
63 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:21:20 ] そこはだがそれがいいと返すべき
64 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:23:27 ] 全部言語仕様に入れたプログラミング言語作ろうぜ。 俺は見てるから。
65 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:23:54 ] Java厨乙が適切だと思う。そういう俺はD言語厨。
66 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:25:38 ] どんなにいいライブラリがあっても使いこなせない低脳さん乙と言ってあげるべき
67 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:26:08 ] MFCが基本と言ってる時点で(ry
68 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:29:11 ] 大体基本って何だよ。 MFCはライブラリで、CLIは実行環境ジャン。
69 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:48:17 ] 最近プロテインをプロティン(どちらかというとプロチン)と発音しているCMを見たんだけどこれって正しい?
70 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:48:25 ] 俺は凡人だから、ちょっと頑張れば>>60 が挙げたようなものは片っ端から使えるけど、 並外れて悪い頭を持って生まれてきた人には厳しいかもね。
71 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:17:29 ] ここはいい釣堀ですね
72 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:23:36 ] ↑はいはーい、いつもの「カレ」のご登場でーす。パチパチ
73 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:35:05 ] 恥かいた時のために、いつでも釣り竿を用意してます 「あ、ヤバ!」と思った時、どれだけ自然に「さっきから竿を構えていた」かのように振る舞えるかがコツ
74 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 03:07:55 ] >>73 後から釣りでしたって言った奴の負けだと思いますぅ〜♪
75 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 04:46:35 ] 相手して付き合ってしまってる時点で負けだろ わざわざ同じレベルに堕ちる必要はあるまいて
76 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 15:52:12 ] >>75 おまえもな
77 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:16:34 ] おまえら、しょうがないなぁ unit nYakuso = 7; //薬草1個の値段 unit nFukuro[10]; //持ち物を入れる袋 wstring strIppai(L"持ち物が\nいっぱいです><") ; という文字列を以下のように変換するプログラムを30秒以内で記述できるか? unit、nYakuso、=、7、;、unit、nFukuro、[、10、]、;、wstring、strIppai、 (、L、"、持ち物が\nいっぱいです><、"、)、;
78 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:39:14 ] 変数名の前に n とか str とか、自分は低脳ですって言ってるようなもんですよ
79 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:43:33 ] こういうのはperlとか使った方がよさそう
80 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:55:10 ] >>77 //以下の文字列を無視するのと クォーテーション文字で囲まれた文字列内で エスケープ文字を無視するのは標準Boostでは無理。
81 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:02:10 ] spiritなら頑張れるかも 30秒以内は無理そうだが xpressiveは知らない
82 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:26:59 ] ノcomment_p( )
83 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 19:04:27 ] >>82 だな
84 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 05:43:59 ] 30秒以内に記述してもコンパイルに30秒以上かかるんだよ・・・・
85 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 14:51:55 ] boost.pythonでboostとpythonのバージョン違いに悩まされるより swigの方がいいと思った swigと比べたboost.pythonの利点って何?
86 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:25:04 ] python コード呼び出すのがらくなことじゃねーの?
87 名前:デフォルトの名無しさん [2007/11/26(月) 18:27:45 ] cmathの関数群とbindについて教えてください。 double x = 25; cout << bind(sqrt, _1)(x) << endl; このコードは、VC++2005では実行できるのですが、 g++ 4.0.0 (boost 1.34) だと以下のように明示的に キャストしないとコンパイルできません。 cout << bind(static_cast<double (*)double>(sqrt), _1)(x) << endl; これはg++用boostライブラリ固有の制限なんでしょうか?
88 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:44:44 ] std::cout << boost::bind<double>(&std::sqrt,_1)(x) << std::endl; bindがオーバーロード解決に失敗するときは戻り値の型をテンプレート引数で明示的に指定してやればいいらしいです
89 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:48:02 ] あごめん、やっぱ無理っぽい
90 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:49:07 ] >>87 もしかしたら、VCにはcmathのfloat版関数の宣言がないのではないか?
91 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 19:30:10 ] >>88 >>89 >>90 レスありがとうございます。 やはり複数の関数定義があるからなんでしょうかね。 実行はできるので、実装を受け入れることにします。
92 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:39:40 ] template特殊化じゃなくて、overloadだとね。 template<typename _Tp> inline _Tp mysqrt(_Tp __x) { return sqrt(__x); } なら、 cout << bind(mysqrt<double>, _1)(x) << endl; できるけど。doubleで特殊化されてようとされてなかろうと。
93 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:46:48 ] ただオーバーロードの名前解決ルールに従うとビッチリdoubleを 指定してるわけだからdouble sqrt(double)を特定できる はずなんですけどね。コンパイルエラーにもambiguousとは出ていない ようですし。
94 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:07:10 ] >93 double を指定しているのは戻り値の型であって、sqrt() の引数の型には寄与してないから特定できないんじゃない? x の型は bind の解釈には無関係だよね?
95 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:58:51 ] >>94 _1 は確か引数じゃないかな?戻り値ではないと思ったけど。
96 名前:デフォルトの名無しさん [2007/11/29(木) 03:42:26 ] xpressiveを勉強しているのですがa|b(aまたはb)がうまく動きません using namespace boost::xpressive; sregex tok = as_xpr("hoge") >> (("!">>~before(eos)) | ("!!">>~before(eos)) | eos); smatch m; const std::string addr("hoge!hoge!!hoge!"); std::string::const_iterator it = addr.begin(), end = addr.end(); for( ; regex_search(it, end, m, tok, regex_constants::match_continuous) ; it = m[0].second ) { std::cout << m[0] << std::endl; } このコードで hoge! hoge!! hoge! と出力されると思ったのですが hoge! hoge! で終わってしまいます
97 名前:96 [2007/11/29(木) 03:46:41 ] 申し訳ございません 間違えました 検証に使った文字列は const std::string addr("hoge!hoge!!hoge"); です
98 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 10:35:19 ] sregex tok = as_xpr("hoge") >> (("!!">>~before(eos)) | ("!">>~before(eos)) | eos); だろ。普通は
99 名前:デフォルトの名無しさん [2007/11/29(木) 12:35:47 ] ファンクたを合成したいんだけど、 compose_f_gx_hx とかって Visual C++ 2005 の STL には入ってないの? ファンクタの合成って boost::compose か何かが必須? なんか俺勘違いしてるのかな。
100 名前:99 [2007/11/29(木) 12:38:12 ] あれ?Boost.Compose って deprecated ?
101 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:40:01 ] lambda::bindを使って bind(&f, bind(&g, _1)) な風に でも>>13 のように呼び出し規約が__stdcallの関数については使えないようだ mlには使えるって書いてあるんだけどねぇ・・・誰か使えた人いないのかなぁ
102 名前:99 [2007/11/29(木) 12:48:31 ] #include <boost/lambda/bind.hpp> boost::lambda::bind #include <boost/bind.hpp> boost::bind どちらを使うべきなのでしょうか?
103 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:53:19 ] 合成関数目的ならどっちでもいけるけど __stdcallのものにでも使えるという点でboost::bindかな・・・
104 名前:99 [2007/11/29(木) 12:56:54 ] THX. ところで、ファンクタの合成って標準のSTLには入ってないよね? SGIのだけに入ってるとか、そういうことあるのかな? 少なくとも Visual C++ だと compose_f_gx_hx などはありませんでした。 boost::bind のほうがもっと柔軟だから compose_f_gx_hx いらないけど。
105 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:56:21 ] >104 標準化される前の SGI STL には compose1, compose2 があった。っていうか今もある。 現行の標準規格には入っていない。 compose_f_gx_hx は Boost.Compose での名前。 C++0x では Bind が標準に入るので今後は bind 使えになると思われ。
106 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:01:44 ] Scott Meyers' Effective C++: TR1 Information www.aristeia.com/EC3E/TR1_info_frames.html 266 tr1::bind Function Object Binders n1455
107 名前:99 [2007/11/30(金) 15:00:08 ] _1 とか _2 って boost::lambda 名前空間以下にしかないよね? boost::bind も併用しているんだけど、 そうすると ambiguous って言われる?
108 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 15:12:46 ] 言われる
109 名前:99 mailto:sage [2007/11/30(金) 15:15:54 ] だは〜 無名名前空間の下に見えてる _1 はどっから来たものか・・・ #include <boost/bind.hpp> だろうなぁ。 ::_1 って指定してやらないとダメみたい。
110 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:50:17 ] Visual C++ 2008 Express Edition だとさらに 果敢に IntelliSense が攻めてくれるね. だけどまた boost をリビルドしなきゃならんのか… 今からやろうと思うんだけど, svn trunk から とってきたのを直接ビルドしてみようと思う.無謀?
111 名前:110 mailto:sage [2007/12/02(日) 18:58:00 ] svn.boost.org/svn/boost/trunk/boost/config/auto_link.hpp #elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1500) # define BOOST_LIB_TOOLSET "vc90" ってことは,すでに trunk では対応しているのか. 退行テストも通ってるのかな.しかし svn から export して持ってきたものをどうやってビルドするのかわからん・・
112 名前:110 mailto:sage [2007/12/02(日) 19:24:56 ] bjam ビルド中。 あっさり toolset 名として vc9 が検出されたみたい。 つーか、bjam をビルドしようとして build_dist.bat を 実行したらすでに本体のビルドまで勝手にやってくれているのだが・・・ 以前ビルドしたときとは大違いに楽になってる気がする。
113 名前:110のチラシの裏 mailto:sage [2007/12/02(日) 19:31:29 ] ごめん、ウソ。いま改めて bjam.exe --build-dir=builddir --toolset=msvc-vc9express stage やってます。Express Edition は固有の toolset 名を持ってるのか? もしかして 64 ビット版のライブラリをビルドするか否かを決定してる?
114 名前:110のチラシの裏 [2007/12/02(日) 19:37:30 ] しかし Graph とか正規表現ライブラリの Unicode サポートとか 使おうと思ったら expat や icu4c も vc9 でビルドしなおさなきゃ らんのかなぁ。 って、記憶をたどってみると、両ライブラリとも単独で使った ことがあるんだけど、vc7 と vc8 で同じバイナリをリンクしてた きがするのだが・・・ boost はなんでリビルドしなきゃならないの? とはいえ、 vc8 用にビルドした boost を vc9 でビルドしてる アプリケーションからリンクするとリンカが怒るので仕方ない。
115 名前:110のチラシの裏 mailto:sage [2007/12/02(日) 19:59:26 ] Visual C++ 2008 Express Edition で 1.35 ビルド終了。 failed 2 って出たけど、どこで失敗したのかわからん。 bjam はログを残してくれないのか?
116 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 20:10:38 ] (bjam ほにゃらら 2> err.txt) > log.txt
117 名前:110のチラシの裏 mailto:sage [2007/12/02(日) 20:17:39 ] え、Windows の cmd.exe でも stderr のリダイレクトできたのか。 bash ばっかりだからしらんかった。
118 名前:110 mailto:sage [2007/12/03(月) 00:12:14 ] bjam で --toolset=msvc-vc90 にしてるのに libboost_graph-vc-mt-gd-1_35.lib みたいにライブラリファイルの名前中のツールセット名が -vc- になるのは、なぜ〜〜〜? 自分で変更するのタルい。
119 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:34:06 ] Boost.BuildがV2になった直後はそんな話も出てたような まぁperlかPowerShell使えばリネームなんて簡単だろ
120 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:34:49 ] 前に同じような減少に見舞われたときは 原因を調べるもの面倒だったからファイル名を一括置換した なんでそうなるんだろうなあ
121 名前:110 mailto:sage [2007/12/03(月) 05:34:34 ] >>119 まぁリネーム自体は簡単なんだろうけど,そもそも ツールセット名ってどっかで正規化されていないのかと. bjam で指定するツールセット名も msvc だけでも 受け入れられるし, msvc-vc8 や msvc-vc80 なども 変に柔軟に受け入れられるけど,オートリンクでは vc80 とか指定してくるし… 「自分でつけた名前だろ!自分でオートリンクできずにどうするよ!」 って突っ込みを入れたくなった.
122 名前:110 mailto:sage [2007/12/03(月) 09:08:54 ] ツールセット名は msvc-8.0 と msvc-9.0 にすると ちゃんと vc80 と vc90 って文字がライブラリのファイル名に含まれます。 msvc / msvc-vc80 / msvc-vc90 も受け入れられるけど、 そうするとライブラリのファイル名におけるツールセットの部分が vc になってしまってオートリンクなどで都合が悪いです。
123 名前:110自分用メモ mailto:sage [2007/12/03(月) 09:41:13 ] V:\boost-vc8>bjam --builddir=builddir --build-type=complete --toolset=msvc-8.0 stage V:\boost-vc9>bjam --builddir=builddir --build-type=complete --toolset=msvc-9.0 stage
124 名前:デフォルトの名無しさん [2007/12/05(水) 12:27:20 ] BOOST_STRONG_TYPEDEF マクロって,テンプレート版ないのかな? typedef StrongTypedef<int> MyIntType; みたいに使いたい.自分で勝手に上のような使い方をしてるけど, 標準があるならそちらに従いたい. あと,BOOST_STRONG_TYPEDEF って totally_ordered しか 持っていないけど,もっと一般に additive とかそういうのを 持っているバージョンもあればいいと思う. さらに serialization にも対応してたらいいなぁ. #全部「おまえがやれ,自由に」と言われそうだけど #標準が決まってるほうが可読性が上がると思う.
125 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:12:06 ] >>124 > もっと一般に additive とかそういうのを > 持っているバージョンもあればいいと思う. 具体的にはどういう型の時なの? additiveが有効なのは。 この辺は、 class NAME##_archetype { ってマクロでやってるから、 テンプレートに文字列処理がないとテンプレートだけでやるのは厳しいね。
126 名前:デフォルトの名無しさん [2007/12/05(水) 21:17:01 ] bjamでビルドするときコンパイラに追加で渡したいフラグを設定するにはどのようにすればよいですか? warning C4996: 'std::XXX': Function call with parameters that may be unsafeとうるさいので bjam --toolset=msvc-9.0express "--cxxflags=/wd4996" stage としてみたのですがガンガンwarning C4996が報告されてしまいます できればboost/config/user.hppとかをいじくらずbjamのオプションとかで渡したいです
127 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:20:50 ] bjamのオプションもたぶんあるんだろうけど、 わかんなかったら環境変数CLを使えばよいんじゃないかな。
128 名前:126 mailto:sage [2007/12/05(水) 21:45:28 ] わぉ 環境変数はずっとCFLAGSに設定してました ありがとうございます
129 名前:デフォルトの名無しさん [2007/12/07(金) 07:57:36 ] scoped_ptr の実装を見て operator! が定義されているから safe bool idiom にしようとおもって scoped_ptr を 継承した my_scoped_ptr を作ったら conversion が ambiguous だって怒られた.
130 名前:デフォルトの名無しさん [2007/12/07(金) 10:07:16 ] class A : public B のようにクラスを継承しています。 B に非侵入型の serialize が定義されている場合には A の serialize も非侵入型にしなくてはならないのでしょうか?
131 名前:130 [2007/12/07(金) 11:04:41 ] すみません、自分の勘違いだったようです。 boost::serialization 関係でもうひとつですが, BOOST_STRONG_TYPEDF で定義した型はそのまま シリアライズできないのでしょうか? 自分で非侵入型の serialize を定義するべきですか? boost.org/libs/serialization/doc/wrappers.html ここを見ると BOSOT_STRONG_TYPEDEF(T,D) で作った型 D をシリアライズする際には T に自動的に変換されるので そのままでいい、ということのようですし、実際 BOOST_STRONG_TYPEDEF マクロの定義を見ても そこで定義されている構造体には確かに変換が用意されているようなのですが
132 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 12:44:00 ] Boost.Preprocessorで、BOOST_PP_CAT(t, Foo)が tFoo でなく tWFoo と展開されたのだが・・・ t が他の文字ならおkで、また別のプロジェクトだと tFoo と正しく展開された。 ずっと解決できないので誰かご教授ください m(_ _)m
133 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 13:06:20 ] >>132 tっていうマクロかtFooっていうマクロが定義されてるとか?
134 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 21:19:07 ] boost::bindで拘束する変数はコピー可能なオブジェクトでないと駄目ですか?
135 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 21:39:51 ] >>134 ref、cref
136 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 21:43:20 ] >>135 ありがとう
137 名前:132 mailto:sage [2007/12/09(日) 05:28:54 ] >>133 左手のトークンの末尾が 't' だと駄目なようです。 BOOST_PP_CAT(Get, Hoge) とか BOOST_PP_CAT(Object, Piyo) とか。
138 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 08:20:28 ] >>137 それはもしかしてプリプロセッサのバグじゃないか? 使ってるプリプロセッサ何?
139 名前:132 mailto:sage [2007/12/09(日) 08:59:35 ] >>138 VC++ Express 2005 です。 新規プロジェクト作り直して丸ごと移したら正常にコンパイル出来ました・・・ 何か気持ち悪いけど、どこかプロジェクトの設定が壊れてたのだと思います。 お騒がせしました。
140 名前:132 mailto:sage [2007/12/09(日) 09:49:06 ] と思ったらまた再発したorz 何だこれ
141 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 10:28:26 ] 2005でboost使うのは辞めてくれ。 stdとtr1だけにしとけ
142 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 10:37:55 ] >>141 VC++7.1 は対応度高かったと思うけど 2005 だともしかして劣化してる? 2008 beta はどうなんだろ。
143 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 11:51:47 ] 初耳だな
144 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 12:04:45 ] >>142 2008はもう正式版出ているw
145 名前:デフォルトの名無しさん [2007/12/09(日) 12:56:18 ] >>141 何の問題もないが. 時々 IntelliSense が黙るだけで. VC9 ではかなり賢くなってる. それでも boost::bind つかいまくりで ファンクタ合成しまくりとかで黙ることもある.
146 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 14:09:37 ] VC8だとuBLASにlambdaにfunctionにmplまで使ったらclがエラーで落ちたことがあったな。 SP1当てたら大丈夫になったけどさ。
147 名前:デフォルトの名無しさん [2007/12/10(月) 14:24:36 ] boost::shared_ptr の参照カウンタがゼロになったときに、 delete 以外の解放処理を行わせる方法はありますでしょうか。 extern IMalloc* allocator; { boost::shared_ptr<ITEMIDLIST> pidl((ITEMIDLIST*)allocator->Alloc(10)); } //ここでallocator->Freeを呼ばせたい
148 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 14:36:59 ] >>147 デリータを指定できるコンストラクタがあるよ。 template <typename U, typename D> shared_ptr( U* ptr, D deleter);
149 名前:147 mailto:sage [2007/12/10(月) 15:08:43 ] おぉぉ、ありがとうございます。 解決しますた。 クラス全体のテンプレート引数 (1個しか無い) にしか目がいってなくて、 コンストラクタのところを見てなかったです。orz
150 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 00:49:05 ] >>149 焦っている時にありがちな罠だから落ち着いて資料を読めばいいと思うよ。(自分への叱咤でもありorz)
151 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 02:45:26 ] msvc+stlportの環境下で、Boost Build v2で、boostをインストールした人って いませんか? VC++8 + STLport-5.1.4 に boost-1.34.1 を入れようとして、 Boostビルドまでは何とかこぎ着けたのですが(コンパイルエラーなしで)、 いざ、boostを使ったプログラムをメイクしようとすると、 error LNK2019: 未解決の外部シンボル "bool __cdecl boost::filesystem::native(class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> > const &)" (?native@filesystem@boost@@YA_NABV?$basic_string@DV?$char_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@@Z) が関数 _main で参照されました。 なんていうリンクエラーが出てしまいます。
152 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 03:53:33 ] ライブラリをリンクしろ。
153 名前:デフォルトの名無しさん [2007/12/11(火) 08:58:58 ] 環境の判定に BOOST_PLATFORM マクロを使おうと 思ってるんだけど、プリプロセッサって 文字列の比較できないよね? 環境の判定によいアイディアあったら教えてプリーズ。
154 名前:151 mailto:sage [2007/12/11(火) 09:54:39 ] >>152 [ツール]→[オプション]→[プロジェクトおよびソリューション]→[VC++ディレクトリ]で、 ライブラリファイルのディレクトリとして、 C:\Boost\lib を追加済みです。 さらに、プロジェクトのプロパティページで、 [構成プロパティ]→[リンカ]→[入力]→[追加の依存ファイル]で、 boost_filesystem-vc80-mt-gdp-1_34_1.lib を追加してみたのですが、ダメでした。(:_;)
155 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 11:39:13 ] >>154 =151 普通は「追加の依存ファイル」なんて設定しなくても オートリンクで適切なライブラリをリンクしてくれるはずなんだけどなぁ。 って STLPort 使ってない俺が言っても意味ないよね。
156 名前:151 mailto:sage [2007/12/11(火) 14:38:29 ] >>155 のはずなんだけど・・・。 v1のときは、普通にリンクできていたので。 なんというv2。 何も情報を出さないのはアレなんで、 ビルドフロー(失敗している奴)をここにまとめておきます。 Visual C++ 8.0 with SP1 STLport-5.1.4 → C:\STLport-5.1.4 として解凍。 boost-1.34.1 → C:\boost-1_34_1 として解凍。 OS: Microsoft Windows SP2 CPU: Intel
157 名前:151 mailto:sage [2007/12/11(火) 14:39:01 ] ■STLport stlport/stl/config/user_config.h の #define _STLP_USE_BOOST_SUPPORT 1 を有効にする。 > "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat" を実行。 環境変数に、 STLP_BUILD_BOOST_PATH=C:\boost_1_34_1 を追加。 > cd build\lib > configure -c msvc8 --use-boost=C:\boost_1_34_1 > nmake /fmsvc.mak install でSTLPortをビルド。
158 名前:151 mailto:sage [2007/12/11(火) 14:41:47 ] ■boost stlport.jamファイルの不具合を修正する。 lists.boost.org/boost-build/2007/08/17123.php 参照 user-config.jamファイルを編集する。 using msvc : 8.0 ; using stlport : 5.1.4 : C:/STLport-5.1.4 ; 環境変数を設定する。vsvars32.bat @set STLPORT_PATH=C:\STLport-5.1.4 @set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\S TLport-5.1.4\stlport;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\ Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include;C:\Program File s\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE% @set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\STLport- 5.1.4\lib;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\M icrosoft Visual Studio 8\VC\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB% (実際はそれぞれ1行です) vsvars32-stlport.batにリネームして保存。 > "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32-stlport.bat" ビルド。 > bjam --toolset=msvc stdlib=stlport --without-python install > build.log build.logを見たら、 ...updated 5631 targets... でビルド成功。
159 名前:151 mailto:sage [2007/12/11(火) 14:43:59 ] ■試しに動かしてみる。 stlport、boostともインクルード・ライブラリそれぞれのディレクトリ を追加。 int _tmain(int argc, _TCHAR* argv[]) { using namespace std; using namespace boost::filesystem; boost::filesystem::path outputFilePath( "C:\\hogehoge.txt", native ); boost::filesystem::fstream outputFile( outputFilePath ); //string s; //double d; //s = "53.0"; //d = boost::lexical_cast< double >( s ); //cout << "Hello world" << endl; //outputFile << "Hello world!" << endl; return 0; } でビルド。 すると、>>151 のようなエラー。 チラシの裏みたいでごめん。
160 名前:151 mailto:sage [2007/12/11(火) 14:46:34 ] ↑にあるコメント行はゴミです。すまん。削除するのを忘れた。。 ビルドの要らないboostライブラリは普通に動きます。lexical_castとか。
161 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:52:53 ] multi_index_container.hpp なんてのがあるのか orz 俺の一週間の苦労はなんだったんだ…… お前ら、先に教えてくれよ…… λ....トボトボ
162 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:01:52 ] >>161 どんまい。。。
163 名前:161 mailto:sage [2007/12/12(水) 08:08:55 ] さすがにインデックス3つ使って複雑なコンテナ作ると, Visual C++ 2008 でも IntelliSense が死ぬね. でも補完機能は IntelliSense がぴか一だと思うんだけど, それでも追い切れないとは…
164 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:14:29 ] うーむ、2008はそんなにIntelliSenseがいいのか 2005Pro持ってるけどどうしようかなあ…
165 名前:161 mailto:sage [2007/12/12(水) 08:46:11 ] >>164 俺も自前で頑張って買った 2005 Professional 使ってたけど, 今は 2008 Express Edition 使ってます. VC++ スレでは IntelliSense 糞とかいう書き込みを見かけるけど マクロとテンプレートでの変態プレイにここまで対応してるのは 2005 レベルでもすげぇとおもう. 単に自分が Eclipse の設定をちゃんとしてないからかもしれません. 標準ライブラリまで指定してフルインデックスすれば Eclipse の CDT でもちゃんと型追っかけてくれるんでしょうかね.
166 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 11:03:02 ] ええ。 けど使い慣れたのを使うのが一番だと思います。 ちとスレ違いだしね。
167 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:35:23 ] 2008ってExpress出てるのかよ
168 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 16:22:35 ] 英語版だろ
169 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 16:32:16 ] 英語版でもいいよ
170 名前:デフォルトの名無しさん [2007/12/12(水) 19:51:46 ] 以下のように、可変個引数(モドキ)をとる関数をtupleを使って作りたかったんですが、 行き詰まりました。関数内でtuple要素全てにアクセスする方法はありますか? 可変個引数が可能ならばtupleじゃなくても構いません。ちなみに、引数の型はすべて一緒です。 template<typename T> void multi_args(const T& arg){ for(int i = 0 ;i< tuples::length<T>::value ;++i){ //tuple要素すべてにアクセスしたい //arg.get<i>() は当然だめ } } int main(){ multi_args( make_tuple(1,2,3) ); return 0; }
171 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:23:21 ] >>170 素朴な疑問なんだが、std::vectorじゃいけない特別な理由でも? # まぁ、vectorだと即値を列挙することはできないわけだが。
172 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:19:47 ] >>170 boost::fusionならfor_eachができるんだが ループ内で全要素にアクセスってのは無理だな。
173 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 08:02:53 ] boost fusion について日本語で解説したページってある?
174 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 14:14:22 ] NiceBoost
175 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:19:04 ] >>170 boost::assign::list_of
176 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:31:39 ] >>170 tuple って単に car が get_head で、cdr が get_tail なので、 tuple_for_each(t, f) { f(t.get_head()); tuple_for_each(t.get_tail(), f); } tuple_for_each(null_type, f) {} とかを作ってしまえばいい で、なぜか iterator/zip_iterator.hpp の detail 内にあったりするわけだが
177 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 07:11:53 ] boost::multi_index_container で boost::multi_index_container::tag を使うと Visual C++ 2008 ではエラーになる. C1001 なので原因がよくわからない.
178 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 10:41:48 ] bindとlanbdaを同時に使うとき #include <boost/bind.hpp> #include <boost/lambda/lambda.hpp> using namespace boost; using namespace boost::lambda; とすると、_1 を使ったときコンパイルできなくなる。 boost::lambda::_1 なんてやるとコンパイルできる。 プレースホルダー _1 ってbind.hppでもlambda.hppでも 重複して定義されてる?
179 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 10:46:27 ] 俺、ファンクタの合成くらいにしか使わないので、 結局 boost::bind だけしか使わないようにした。 って、それじゃ根本的な解決になってないか。
180 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 12:10:44 ] >>178 その通り usingの代わりにnamespaceの短縮名を使うと良いと思う
181 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 12:32:47 ] >>180 ありがとう。 で、namespaceの短縮名とは何ですか? boost::lambda::_1のように常に明示的に 指定するということですか?
182 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 12:35:49 ] >>181 namespace bl = boost::lambda;
183 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 13:33:53 ] >>182 ありがとう。 別名を与えられることは知りませんでした。 これで対応していきます。
184 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 15:48:19 ] bjamのv2の使い方が良く分からないんですが、例えば以下をv2で 書く場合、どのように書いたら良いんでしょうか? #bjam -sTOOLS=mingw "-sBUILD=release <runtime-link>static <threading>multi <native-wchar_t>on" --prefix=/c/msys/1.0/local install
185 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:59:08 ] libcgi とか libcgi++ とか libcurl の asio 利用版 なんてのもでてくるのかね?
186 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:14:30 ] sregex r = sregex::compile( "A([1-9]*|[a-z]*)A" ); string str1 = "A123A AaaaA A3b3A A9A"; if( regex_search( str1, m, r ) ) { ... } で、 "123" "aaa" "3b3" "9" という文字列を取り出すにはどういう記述をすればいいでしょうか? m[2].str() とか書いても、aaaとか取得できないんです。 sregexでなくxpressive利用でもいいです。
187 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:35:19 ] const_iterator begin()const; Effects: Returns a starting iterator that enumerates over all the marked sub-expression matches stored in *this. const_iterator end()const; Effects: Returns a terminating iterator that enumerates over all the marked sub-expression matches stored in *this.
188 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:35:19 ] regex_searchじゃなくてregrex_iteratorでも使っとけ
189 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:40:01 ] regex_searchで 最小マッチ?を指定するとダイアログ出て落ちるんです
190 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:46:33 ] エスパー魔美
191 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 20:10:54 ] pastebin.windy.cx/?page=view&id=1197803292 boost::serialization::base_object を経由せずに (Base&) で型変換してシリアライズするのはダメ? 一応読み込むこともできているようなんだけど. ちなみに (Base) で型変換するとスライシングのせいか 読み込んだ時に正しく読み込むことができません.
192 名前:デフォルトの名無しさん [2007/12/16(日) 20:37:23 ] Resist the temptation to just cast *this to the base class. This might seem to work but may fail to invoke code necessary for proper serialization. マニュアルにはこう書かれているけど,かといって private で 継承した基底クラスをシリアライズするためには >>191 みたいにしないとだめだよねぇ?
193 名前:デフォルトの名無しさん [2007/12/17(月) 10:40:42 ] www.boost.org/libs/serialization/example/demo_shared_ptr.cpp ここには基底クラス A の shared_ptr に派生クラス B のポインタを 持たせてシリアライズしています。なお、 A は仮想デストラクタを 持っています。このとき boost::archive::text_oarchive oa(ofs); oa.register_type(static_cast<B *>(NULL)); oa.register_type( static_cast< boost::detail::sp_counted_base_impl< B *, boost::checked_deleter<B> > * のように register_type しなければならないようなのですが、 BOOST_CLASS_EXPORT マクロのようなもので登録できない ものでしょうか? archive を生成してから毎回登録するのは 忘れてしまいがちなので。
194 名前:193 [2007/12/17(月) 11:14:31 ] というか、register_type で何を登録すればいいのかがわからん。 archives.free.net.ph/message/20071129.235833.ba9e02a9.en.html でまさしく同じ問題についてQ&Aがあるんだけど、 結局上の URL の例をみろってことだけなんだよなぁ。
195 名前:193 [2007/12/17(月) 11:24:03 ] pastebin.windy.cx/?page=view&id=1197858127 どうやらこれだけでいいみたい。 でも文字化けしてしまった… #そのうち他言語対応しておきます。
196 名前:193 mailto:sage [2007/12/17(月) 11:25:44 ] 他言語→多言語 orz しかも sage てなかった orz-----3
197 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 16:56:24 ] Boost と POCO ってなかよしなの? asio とか filesystem とかかぶってるみたいだけど.
198 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:34:06 ] VS 2008 EE 日本語版
199 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:06:51 ] class B{ public: virtual void mf(); }; class D : public B { public: void mf(); }; のように継承関係にあるクラスについて shared_ptrはポリモルフィックに動作しますか? つまり、 shared_ptr<B> bp(new D); bp->mf() で D::mf() が呼ばれることはboostの仕様として 保障されてますか?
200 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:09:44 ] はい
201 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:12:42 ] thx
202 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:25:47 ] #include "stdafx.h" #include <iostream> #include <boost/lambda/lambda.hpp> #include <boost/lambda/if.hpp> #include <vector> #include <algorithm> using namespace std; namespace bl = boost::lambda; int main() { unsigned int a[] = {0, 1, 1, 0, 1, 0, 0, 1}; for_each(a, a + sizeof(a)/sizeof(a[0]), bl::if_(bl::_1 % 2 == 0) [cout << "偶数\n"].else_[ cout << "奇数\n"] ); } これをコンパイルすると private メンバ (クラス 'std::basic_ios<_Elem,_Traits>' で宣言されている) にアクセスできません。 とエラーが出てコンパイルできません。原因は何でしょうか? VC++ 2008 コンソールアプリケーションです。
203 名前:202 mailto:sage [2007/12/21(金) 00:44:29 ] 自己解決しました。
204 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:54:37 ] わざわざ通知ありがとうございました。
205 名前:デフォルトの名無しさん [2007/12/21(金) 12:42:34 ] boost::bind(&ClassA::MethodB, this, _1) みたいなファンクタを生成するとき,ClassA に MethodB が複数 (void MethodB(int) と void MethodB(double)とか) 定義されていたら,どちらのメンバ関数ポインタになるんでしょうか?
206 名前:デフォルトの名無しさん [2007/12/21(金) 12:57:01 ] 内輪で使うために作ったWindows版のバイナリパッケージを晒します. ビルド環境 Visual Studio 2005 Professional SP1 日本語版 Visual C++ 2008 Express Edition 英語版 vc8 と vc9 でビルドするスクリプト svn.windy.cx/websvn/listing.php?repname=Building.boost-trunk&path=%2F&sc=0 trunk の Windows 用インストーラつきバイナリパッケージ C:\Program Files\boost\boost_1.35_20071202 以下に展開されます アンインストールはディレクトリごと削除するだけ ヘッダ(共通) svn.windy.cx/index.php?plugin=attach&refer=SVN.WINDY.CX&openfile=boost_1_35_20071202-header.exe vc8用スタティック svn.windy.cx/pub/boost_1_35_20071202-vc8.exe vc8用DLL svn.windy.cx/index.php?plugin=attach&refer=SVN.WINDY.CX&openfile=boost_1_35_20071202-vc8-dll.exe vc9用スタティック svn.windy.cx/pub/boost_1_35_20071202-vc9.exe vc9用DLL svn.windy.cx/index.php?plugin=attach&refer=SVN.WINDY.CX&openfile=boost_1_35_20071202-vc9-dll.exe 自分はスタティックライブラリしか使わないのでDLL版の動作は未検証. GMP, MPFR, MPFR++ などのバイナリパッケージも. svn.windy.cx/
207 名前:205 mailto:sage [2007/12/21(金) 13:06:06 ] パッケージは exe だけど,実体は自己展開 cab なので 拡張子を cab に変えればたいていのアーカイバで開けます. あと,ランタイムに関してですが /MD と /MDd です.
208 名前:206 mailto:sage [2007/12/21(金) 13:06:56 ] 名前欄間違えた.
209 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:17:17 ] >>205 static_cast<void (ClassA::*)(int)>(&ClassA::MethodB) みたいに明示的にキャストしないと通らないと思った。
210 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:11:54 ] >>209 ∩ ( ⌒) ∩_ _ /,. ノ i .,,E) ./ /" / /" . _n グッジョブ!! ./ /_、_ / ノ' ( l _、_ / / ,_ノ` )/ /_、_ グッジョブ!! \ \ ( <_,` )( /( ,_ノ` ) n ヽ___ ̄ ̄ ノ ヽ |  ̄ \ ( E) / / \ ヽフ / ヽ ヽ_// VC9用をいただきました
211 名前:210 mailto:sage [2007/12/21(金) 19:13:04 ] 間違えた >>209 × >>206 ○
212 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 16:13:54 ] 正規表現で調べる文字列にcharやwchar_tの配列は使用できないのでしょうか
213 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 17:06:19 ] >>212 char*やイテレータを取るバージョンがあるはずだが
214 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:15:20 ] >>213 以前のバージョンということですか? できればxpressiveで書きたいので、最近のバージョンを使いたいのですが それでは無理ってことでしょうか
215 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:34:45 ] バージョンと言うかオーバーロードな と言うかリファレンス見たら?
216 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 22:54:20 ] >>215 つ 特殊化
217 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:22:28 ] つか入力にイテレータ取るバージョンがあれば当然ポインタ食わせられるだろ。
218 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:55:17 ] sregexがstd::string版なら、cregexがconst char*版。 Xpressiveでは、イテレータの型をテンプレート引数で指定する。 boost.org/doc/html/xpressive/reference.html#header.boost.xpressive.xpressive_fwd.hpp
219 名前:デフォルトの名無しさん [2007/12/24(月) 08:12:02 ] std::vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); std::for_each(v.begin(), v.end(), boost::bind(operator<<, std::cout, _1)); このようにして各要素を出力することはできないのでしょうか? なぜだか error C2065: '<<' : undeclared identifier と言われてコンパイルできません.
220 名前:219 [2007/12/24(月) 08:54:23 ] boost::bind に関するこのコードでなぜ最後のコメント部分の コンパイルが通らないのでしょうか? pastebin.windy.cx/?page=view&id=1198454028
221 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:25:58 ] コンパイルできない理由はちょっとわからんけど、これじゃダメなん? std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout));
222 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:38:51 ] >>220 g++だと<unresolved overloaded function type>と言われたのでstatic_castしたら通った。 std::for_each(v.begin(), v.end(), boost::bind( static_cast<A &(A::*)(int)>(&A::operator =), &a, _1));
223 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:43:23 ] >>219 intを出力するoperator <<は、cout (std::basic_ostream)のメンバ関数だから、 そのコードでは、正しいoperator <<へ辿り着けない。 もっとも、それ以前の問題でコンパイルエラーになっているようだが。 今回は221のいうとおりostream_iteratorもあるし、 その他演算子一般の場合は、bind使えなくてもlambdaがある。
224 名前:219 mailto:sage [2007/12/24(月) 09:48:19 ] >>221 いや,もちろんそれでやりたいこととしてはOKなんですが, 一般的な演算子を指定できれば応用範囲も広がるかなと思って. >>222 VC9 だとテンプレートを検索しまくって 「あれでもない,これでもない」と C2780 を連発した揚句, 時々 ambiguous だというエラーも出るんですよ. なるほど, g++ でもそのままでは通らなくて, static_cast すれば通るんですね. operator() だと問題なくて operator= だと問題になる理由がわからないですが. 既定の代入演算子が別途用意されてしまうからかなぁ. 自前で = をオーバーロードした時って既定の = は 定義されないんでしたっけ? でも独自にコンストラクタを作ってもコピーコンストラクタは 勝手に作られていたような気がする.
225 名前:219 mailto:sage [2007/12/24(月) 09:51:05 ] >>223 なるほど,それで operator<< が見つからないと怒られてるんですね. たぶんグローバル名前空間の operator<< を探しに行って「無い」 と怒ってるように思います. 自分はてっきりストリームの << 演算子はグローバル名前空間に 定義されていて必要なクラスに friend 指定されているのだと 思っていました.
226 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:35:14 ] >>224 boost::bindはlambdaと違って一旦メンバーポインタにするから。 だからoverloadされてるとまずい。