1 名前:デフォルトの名無しさん [2009/08/28(金) 16:53:36 ] 過去スレ part 7 pc12.2ch.net/test/read.cgi/tech/1232367742/ part 6 pc11.2ch.net/test/read.cgi/tech/1207749841/ part 5 pc11.2ch.net/test/read.cgi/tech/1192662575/ part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/ part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
345 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:53:49 ] Version 1.41.0 New Library: Property Tree. Updated libraries: DateTime, Filesystem, Iostreams, Math, Multi-index Containers, Proto, Python, Regex, Spirit, System, Thread, Unordered, Utility, Wave, Xpressive. Updates to boost build and quickbook. The CMake build system for Boost, still under development here, has been removed from the main release to avoid confusion.
346 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 01:34:40 ] boost::iostreamsを使ってストリームりました。 このストリームを外から見たときはboostを使ったように見えないように、ダウンキャストしてostreamか何かに入れて置きたいのですが、どうにもうまくいきません。 どうしたら良いのでしょうか。 std::ostream a = boost::iostreams::stream<boost::iostreams::null_sink>(); こんなことがしたいです。
347 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 02:01:44 ] >>346 たぶん、C++0xだとそれでコンパイルできると思う。 とりあえず現状ではtypedef boost::iostreams::stream<hogehoge> my_stream_type;みたいにごまかすくらいしかないと思う。 もちろん、オブジェクトを関数の引数として渡すときには、もちろんstd::ostream&やstd::istream&で受け取れるけど。
348 名前:346 mailto:sage [2009/11/24(火) 02:16:53 ] >>.347 解答ありがとうございます。出来ませんか・・・。
349 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 05:18:50 ] メンバ変数なり関数ローカルなstatic変数にして、 std::ostream& を返す取得関数で公開すれば具象型はいちおう隠蔽できるけど。 それで不都合あったり?
350 名前:デフォルトの名無しさん [2009/11/24(火) 18:34:11 ] resizeするときに、fortran_storage_order()のオプションを与える方法を教えていただけないでしょうか? 以下のように、fortran_storage_order()をつけるとresizeでエラーとなります。 #include <boost/multi_array.hpp> int n = 200; typedef boost::multi_array<double, 2>::extent_range erange; boost::multi_array<double, 2> matrix(boost::extents[0][0]); matrix.resize(boost::extents[erange(1,n+1)][erange(1,n+1)], boost::fortran_storage_order());
351 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 19:25:51 ] 更新しました。1.41正式版がリリースされてから一週間経ってもtrunkが1.42に移行しておりませんので、 マイナーバージョンアップ版が出るかもしれませんね。 ttp://booster.x0.to/ 以下更新内容の一部 [Program_options] allow empty values in config file, Fixes #1537 [Spirit] Spirit: moved iter_pos parser to repository, added example Spirit: fixed token_def::what() Spirit: Moving karma::symbols to main code base [Format] fixes new functions (remaining_args, expected_args, ...) in case bound.size()==0 [Regex] Allow std::locale's to not have a messages facet installed (fixes some STLPort issues). Allow match_results to handle singular iterators. [Integer] Add support for long long throughout. Fixes #653. Update Boost.Integer meta-programming classes to work with intmax_t where possible - ie to be 64-bit clean. [Thread] Ensure call_once event is correctly cleaned up A partial fix for issue #2100: use boost::throw_exception for all exceptions except thread_interrupted Don't use timed_lock to do a lock Added missing BOOST_THREAD_DECL for at_thread_exit_function Using BOOST_ASSERT rather than assert [Graph] Changed vertex_iterator to have vertex_descriptor rather than vertices_size_type as its value type Removed old CSR interface; fixes #3135 [Smart_ptr] Add error checking to lwm_pthreads.hpp. Refs #2681. Remove std::move references. Refs #3570. 亦、libs_for_build_boost.rarもICUを4.3.3にアップデート致しました。
352 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 02:46:03 ] intrusive_ptrのコンストラクタにexplicitがついてないのはなんでなんだぜ? デフォルト値があるだけで、厳密には1引数じゃないから?
353 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 03:12:25 ] intrusive_ptr & operator=(T * rhs) があるね
354 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 13:33:43 ] boostのコンパイル済み.libって、同じコンパイラでも内部で使用するクラスの実装、 たとえばSTLが違う場合(VC++で標準STLかSTLPortか)にリンクしても問題ない? 標準STLでもセキュリティ強化の#defineを指定すると実装内容が変わったりするし・・・
355 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 17:13:48 ] STLPortはBoostビルド時に専用のコンフィグコマンドがあるので、 問題があるかどうかは知らんけどとりあえず自前でビルドして使った方がいいと思う
356 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 04:02:55 ] >>353 あー、intrusive_ptrに対応してるクラスなら、 そのポインタから安全に変換できるはずだからexplicitは必要ないってことか。
357 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 19:24:17 ] 更新しました。SVNは1.42に移行しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Program_options] ProgramOptions: added a couple of missing std:: namespace qualifiers [Spirit] Spirit: added karma::symbols generator, updated docs, tests, and example Spirit: removed UB in rule and token_def initialization, added copy constructor for token_def Spirit: added karma::auto_ and related facilities, added test Spirit: added new karma example (auto_facilities.cpp), tweaks to auto_ tests Spirit: added auto based overloads for API functions where possible [Serialization] fixed BOOST_STATIC_WARNING implementation macro name conflict Fix memory leaks in void_caster short cut memory leaks [Uuid] Added uuid library Removed BOOST_STATIC_ASSERT, replaced with a static method [Iterator] Made sure that iterator_facade's nested ``::pointer`` type is always the same as what's returned from operator->. For input iterators, that wasn't always the case (see operator_arrow_proxy).Fixes #1019. [Graph] Fixed missing #endif [Integer] Change long long to boost::long_long_type etc. Make code respect BOOST_NO_INTEGRAL_INT64_T. [Bind] Make mem_fn work with overloaded unary operator&. Refs #3003. Sorry it took so long. [Exeption] Ticket #3211 亦、libs_for_build_boost.rarもbjam.exeをrev.58011にアップデート致しました。
358 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 14:43:24 ] 使ってないが乙
359 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 14:45:35 ] >>357 sankusu otsu
360 名前:デフォルトの名無しさん [2009/12/07(月) 18:00:18 ] VS2008を使っているのですが、なぜかthreadだけリンカエラーがでます。 ↓こんな感じで 1>LINK : fatal error LNK1104: ファイル 'libboost_thread-vc90-mt-sgd-1_40.lib' を開くことができません。 同じcppファイルの中でも、他のやつ(unordered_mapとか)は問題なく使えてるのに、threadだけでます。 だれか解決法を知っている方がいたらご教授を……orz
361 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 18:03:23 ] boostをちゃんとインストールしよう。 そのままだとヘッダだけで使えるライブラリしか使えないよ。
362 名前:デフォルトの名無しさん [2009/12/07(月) 18:47:25 ] >>361 解決しました。 インストールはしていたのですが、どうやらライブラリのパス指定が間違っていたようです。 標準に指定されるディレクトリから変更した場合、そことは別の場所にライブラリフォルダができてしまうようで……。 コマンドプロントのメッセージを追ってたら気付くことができました……。 どうも、ありがとうございました。
363 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 23:50:50 ] #include <boost/spirit/utility/functor_parser.hpp> では警告が出るから #include <boost/spirit/include/classic_functor_parser.hpp> を使うと、 error: expected class-name before '<' token やらのエラーで今度はコンパイル出来ない。(#^ω^)
364 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 00:18:19 ] 自己解決。 namespace が boost::spirit::classic になったのか。失礼した。
365 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 06:37:45 ] ここにもspiritの罠に引っかかった生け贄が一人いたか。 俺もだ。
366 名前:デフォルトの名無しさん mailto:sage [2009/12/10(木) 04:16:08 ] コンテナフレームワークライブラリはどこですか?
367 名前:デフォルトの名無しさん [2009/12/11(金) 13:19:19 ] threadとbindでメンバ関数で引数を取る場合、どんな感じで使えばいいのでしょうか……? たとえばこんなふうに class Hoge{ public: void run(); void fanc(int x, int y); } Hoge tmp; thread thr_tmp(bind(&Hoge::run, &tmp)); runが引数を取らないメンバ関数ならこれで動きますが、 メンバ関数が引数を取る場合(上の例だとfancを実行する場合)はどのようにすればいいのでしょうか? 自分で色々調べてためしてみましがた、尽くコンパイルエラーがでます……orz
368 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 14:00:00 ] boost::thread thr_tmp(boost::bind(&Hoge::fanc, &tmp, 10, 20)); でx=10, y=20になるが あとfancじゃなくてfuncではなかろうか
369 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 14:02:12 ] 368はVC++2008ね。 上記でだめならコンパイラ依存問題かも
370 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 14:19:44 ] >>368 解決しました。 ありがとうございました!
371 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 09:02:35 ] fack youのコピペ思い出した。
372 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:10:20 ] 仲良くなった。
373 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 09:58:14 ] Boost 1.40 + VC++2008 にて #include <boost/serialization/static_warning.hpp> template<typename T> struct hoge { static int const i = 100; static bool const b = i < 0; BOOST_STATIC_WARNING(b); }; typedef hoge<int> hoge_t; hoge_t h; hoge がテンプレートだと BOOST_STATIC_WARNING が働かない。(警告が出ない) hoge が非テンプレート(ただの struct )だと意図通り警告が出る。 BOOST_STATIC_WARNING 以外でも、boost::mpl::print などでも同様。
374 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 10:23:51 ] struct hoge { static int const i = 100; static bool const b = i < 0; hoge() { BOOST_STATIC_WARNING(b); }; }; これでどうだろう
375 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 00:16:47 ] 勉強会のshared_ptrの発表聞きたいんだけど「えっと」が強烈に心を折りにくる。
376 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 00:23:33 ] しばらく聞いてたら慣れたよw
377 名前:デフォルトの名無しさん [2009/12/14(月) 14:17:23 ] lexical_castってwstring型にキャストしようとするとエラーがでるのですが……。 stirng str; std::wstring wstr; wstr = boost::lexical_cast<std::wstring>(str); lexical_cast.hpp(590) : error C2679: 二項演算子 '<<' : 型 'const src' の右オペランドを扱う演算子が見つかりません (または変換できません)。 1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(653): 'std::basic_ostream<_Elem,_Traits> &std::operator <<<wchar_t,std::char_traits<wchar_t>>(std::basic_ostream<_Elem,_Traits> &,const char *)' [引数依存の照合を使用して検出しました]、 1> with 1> [ 1> _Elem=wchar_t, 1> _Traits=std::char_traits<wchar_t> 1> ] 以下似たようなメッセージがずらずらと……。 ちなみに最終的にやりたいことはstring型の文字列をwstring型にキャストし処理した後、 const char*に変換して、関数にわたすことです。 wstr.c_str()ではwchar_t型に成ってしまうので、いったんstringに変換してからc_str()でなんとかしようと方針を立てたらエラーがでて……orz
378 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:37:08 ] lexical_castを読むと、charかwchar_tのどっちか限定で処理するっぽいから stringとwstringの同時使用ができないのでは
379 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:40:26 ] >>377 >stirng str; string str ですね。 本筋ではないのですが一応元ソースではちゃんとしてます。
380 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:44:19 ] >>378 つまり、stringをwstringにキャストしようとしても、 そもそもlexical_cast内ではふたつを同じ型として扱ってるので、 キャストできないということですか……?
381 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:45:55 ] 引数からどちらの文字列型を使うか判定しているので、その結果生成される 内部処理ストリームがWide変換/逆変換をサポートしていない限り非対応ということに。
382 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:55:34 ] >>381 なるほど、ありがとうございました。 設計をみなおすか……。 全部2バイト文字にしたあと処理できたら楽になるのになぁ。 ユニコードは三点リーダーが汚くなるから使いたくないし……。
383 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 15:07:30 ] 本件とずれるけど、lexical_castのドキュメント ttp://www.boost.org/doc/libs/1_41_0/libs/conversion/lexical_cast.htm にあるサンプル >>void log_errno(int yoko) >>{ >> log_message("Error " + boost::lexical_cast<std::string>(yoko) + ": " + strerror(yoko)); >>} yoko? 要項?違うか
384 名前:デフォルトの名無しさん [2009/12/14(月) 21:23:32 ] Boost.Propertytree というlibraryがあるらしいが、もう正規のものなの? いつの間に採用されたんだ。
385 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 18:38:35 ] 1.41から正規
386 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 18:40:34 ] おお、では勉強しなきゃなるまいな。 ありがとう。
387 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 19:04:02 ] C#のプロパティみたいなものかと思ったら、streamの類か。
388 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:37:56 ] >384 余談だけど ttp://www.boost.org/doc/libs/1_41_0 ここの First Release 見ればいつから正規かは分かる。 しかし Property Tree のレビューって 2006 年 4 月だったんだな。
389 名前:373 mailto:sage [2009/12/17(木) 08:08:52 ] MPL_WARNING と STATIC_WARNING を自作してみた。 Boost.Serialization の BOOST_STATIC_WARNING と比較して、 >>373 のような条件下でも警告が働くし、 クラステンプレート内でも typename 無しで依存名を書ける。 VC++2008以外の環境は知らん。 #include <boost/mpl/bool.hpp> #include <boost/mpl/assert.hpp> #include <boost/preprocessor/cat.hpp> #define MY_MPL_WARNING(PRED) \ static bool const BOOST_PP_CAT(mpl_warning_, __LINE__) = sizeof(boost::mpl::assert_arg((void (*) PRED)0, 1)) #define MY_STATIC_WARNING(B) \ MY_MPL_WARNING((boost::mpl::bool_<B>)) // テスト template<typename T> struct hoge { static int const i = 100; static bool const b = i < 0; MY_STATIC_WARNING(b); //おk MY_STATIC_WARNING(boost::is_float<boost::mpl::identity<T>::type/*依存名*/>::value); //おk }; typedef hoge<int> hoge_t; hoge_t h;
390 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 12:20:07 ] unordered_setでgreaterを使ってみたのですが、eraseが失敗しています。 やり方が悪いのでしょうか? どなたかご教授お願いします。 typedef boost::unordered_set<int,boost::hash<int>,greater<int>> u_set_g; u_set_g data; data.insert(1); data.insert(2); for(u_set_g::iterator it=data.begin(), itEnd=data.end(); it!=itEnd; it++) cout<<*it<<endl; data.erase(2); for(u_set_g::iterator it=data.begin(), itEnd=data.end(); it!=itEnd; it++) cout<<*it<<endl;
391 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 12:53:12 ] そこはequal_to<T>を指定するところだから
392 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 13:48:31 ] クラスSからクラスTにキャスト可能であるかどうかを 判定するメタ関数はありますか? is_castable_into<S, T>::value 的な使い方ができる物です。
393 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 13:50:37 ] >>391 おぉ、勘違いしておりました。 unordered_setはstd::setの様に初めから逆ソートは出来ないのでしょうか?
394 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 13:53:12 ] unordered の意味、わかってるの?
395 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 13:59:39 ] >>392 is_convertible<From, To>
396 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:09:56 ] >>395 ありがとうございます。
397 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:43:00 ] 実装を知らずにコンテナを使うのは問題だな
398 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:45:23 ] 完璧に知る必要は全く無いが、原理くらいは知らないとな…
399 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:49:03 ] 実装以前に使うクラスの名前くらいちゃんと読めって話だよ
400 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:11:12 ] >>377 stringの中身がutf8ならto_utf8、from_utf8で wstringと相互変換できるぞ。 sjisは扱えないけど、ASCIIとは互換性がある。
401 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 17:22:44 ] boost::numeric_castを使おうとすると、converter_policies.hppというファイルで、 ceilとfloorのオーバーロード関数の呼び出しを解決することができないという エラーが出るのですが、何か解決策はありますでしょうか? 環境はVisual C++ 2008、Boost 1.41.0です。
402 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 01:47:54 ] >>401 エラーメッセージは正確に。 コピペ推奨。
403 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 04:29:39 ] boostのいくつかのライブラリでは#pragma onceが使われてるけど、 #if defined(_MSC_VER) && _MSC_VER >= 1200 /* VC++ 6.0*/ #if defined(_MSC_VER) && _MSC_VER >= 1020 /* VC++ 4.2*/ の二通りがある。 gccでもたしか#pragma once使えたはずだけど、 MSVC限定なのは何か理由があるんだろうか?
404 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 05:19:05 ] GCCは一応対応してるけど使用は非推奨で警告でたりするからじゃね
405 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 05:39:26 ] VCにpragma指令を入れてるのは単にコンパイルの高速化の為かと GCCはインクルードガードだけで十分
406 名前:403 mailto:sage [2009/12/18(金) 06:17:18 ] ああそうか、そういえばgccはインクルードガード検知すると自動で #pragma once相当の処理をするとかどこかで読んだ。納得。
407 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 13:55:42 ] >>402 失礼しました。 error C2668: 'ceil' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照) c:\program files (x86)\boost_1_41_0\boost\numeric\conversion\converter_policies.hpp error C2668: 'floor' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照) c:\program files (x86)\boost_1_41_0\boost\numeric\conversion\converter_policies.hpp 41 karaokeThread です。
408 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 14:15:33 ] karaokeThread があやしいな。
409 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 14:17:44 ] >>407 まだ変に省略してないか? VC++ だとテンプレート引数の情報とかエラーメッセージに出たような・・・。 常套手段だけど、同じエラーを出す最小のソースを作ってみるといい。
410 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 14:24:13 ] >>407 ja.lmgtfy.com/?q=C2668
411 名前:401 mailto:sage [2009/12/18(金) 22:53:49 ] 自己解決しました。どうやらifstream.tellg()の戻り値を変換させるときに のみエラーが出るようなので、そこだけstatic_castにしました。 どうもお騒がせしました。
412 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 02:08:38 ] 更新しました。今回初めてgraph_parallelのlink=shared, runtime-link=sharedのビルドが可能になり、 同じく初めてビルドエラー無しでフルビルドが出来ました。 ttp://booster.x0.to/ 以下更新内容の一部 [Program_options] consistent handling of namespace std [Spirit] unicode support Spirit: fixed include guard conflict (fixes #3724) [Graph] Factored out declspec code; added BOOST_GRAPH_SOURCE where necessary [Iostream] If a write is going to go past the end of the restricted area, write up to the end before throwing an exception. [Uuid] Fixed name_generator for different sizes of wchar_t [Serialization] 1. Fixed memory leak in shared_ptr loading 2. Fixed error in polymorphic archive implementation Speed up loading of ordered collections [Smart_ptr] Avoid static destruction order issues with quick_allocator. [Proto] fix BOOST_PROTO_EXTENDS to work with elaborated types [Xpressive] disable proto's unary operator& for basic_regex objects, references #3712 [Fusion] corrected reverse_view [Gil] Added gil namespace prefix to at_c<...> calls. [Regex] Symbian patches. Fixes #3764. Fixes #3763.
413 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 05:04:38 ] >>412 いつも乙。 ところで列記してある更新内容のリストはどこで参照できますか?
414 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 06:58:03 ] 全ての更新内容はrarファイル内のchangelog.txtに記してありますが、 TortoiseSVN上の更新情報をテキストデータとして羅列した状態ですのであまり読み易くはありません。 公式サイトの下記ページにも更新情報がありますが、sandboxの更新と一緒になっている為少々読み辛いです。 Boost-Commit mailing page: By Subject ttp://lists.boost.org/boost-commit/2009/12/subject.php ローカルリポジトリを構築して管理ソフトからログを読むのが、一番整頓されていて分かり易いと思います。
415 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 05:18:17 ] >>414 ありがとうございます、参考になります。 ところで、VC9 にて #include <boost/utility/value_init.hpp> #include <boost/wave/util/cpp_include_paths.hpp> をこの順にインクルードするとコンパイルエラーになります。 >e:\library\c++\boost\boost_1_42_vc2008_svn58453\boost\aligned_storage.hpp(79) : error C2872: 'detail' : あいまいなシンボルです。 > 'boost::detail' である可能性があります。 > または 'boost::multi_index::detail' >e:\library\c++\boost\boost_1_42_vc2008_svn58453\boost\aligned_storage.hpp(53) : error C2872: 'detail' : あいまいなシンボルです。 > 'boost::detail' である可能性があります。 > または 'boost::multi_index::detail' おそらく aligned_storage.hpp 内のソースで boost::detail::aligned_storage のスコープで detail::ほげほげ と(boost::detail のつもりで)しているので 他スコープの detail 名前空間と衝突しているのかと。 Boost 1.40〜1.42 で確認。
416 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 07:18:45 ] >415 gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) + Boost 1.40 で再現しない。 Boost trac の ticket には無さげ。 恐らく↓あたりの VC のバグだと思う。 VC++ 8.0 reports unexisting ambiguity in certain context having a using directive connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=311885 あと、細かいけど 1.42 は未リリースだから現時点(あるいは特定リビジョン)での trunk でという表現が 正しいと思う。
417 名前:デフォルトの名無しさん [2009/12/20(日) 09:50:29 ] >>416 ありがとうございます、参考になります。
418 名前:415 mailto:sage [2009/12/20(日) 15:02:25 ] >>415 ticket に挙げたいけど英語力皆無で無理げ。 俺ライブラリのヘッダをまとめてインクルードしたのをコンパイルしたら、 条件によって出たり出なかったりするようなエラーが出るわ出るわ。 VC9 + Boost (1.40 ~ svn58453) ・ boost::operators を使ったクラス Operatable を定義 ・ 適当なテンプレートクラス Overloaded<T> を定義 ・ Overloaded<T>& を引数にとる、グローバルな & (アドレス)演算子オーバーロードの関数テンプレートを定義 ・ boost::throw_exception( ) の使用 この条件が揃うとエラーが出る。 >e:\library\c++\boost\boost_1_42_vc2008_svn58453\boost\throw_exception.hpp(69) : error C3767: '&': 候補の関数はアクセス可能ではありません。 > 'e:\library\c++\boost\boost_1_42_vc2008_svn58453\boost\operators.hpp(260)' の friend 関数である可能性があります : '&' [引数依存の照合を使って検出される可能性があります] > e:\project\vc9\test2\test2\main.cpp(22) : コンパイルされたクラスの テンプレート のインスタンス化 'void boost::throw_exception<std::exception>(const E &)' の参照を確認してください > with > [ > E=std::exception > ] 以下、調べたかぎり最小のコード。 #include <exception> #include <boost/operators.hpp> #include <boost/throw_exception.hpp> class Operatable : private boost::operators<Operatable> { }; template<typename T> class Overloaded { }; template<typename T> Overloaded<T>* operator&(Overloaded<T>& v) { return 0; } void ThrowException() { boost::throw_exception(std::exception()); } // ThrowException() の代わりにこの関数を定義してもエラーになる // どうやら boost::exception_detail::clone_impl<T> の使用がまずいらしい //void TestExceptionDetail() { boost::exception_detail::clone_impl<std::exception> c((std::exception())); }
419 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 16:53:44 ] 追記。 boost::operators<Operatable> の部分が boost::integer_arithmetic<Operatable> などなら問題ない。 どうやら boost::andable<Operatable> が問題らしい。 でも andable って (Lhs & Rhs) の形だよね? アドレス演算子との絡みでおかしくなるのがようわからん。 C3767 について↓でもそれらしい話が出てるけど(ADL関連)なんとも。 ttp://www.freeml.com/cppll/13477/latest
420 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 22:53:17 ] >418 > >>415 ticket に挙げたいけど英語力皆無で無理げ。 大丈夫だ。我々には C++ という共通語がある! とりあえず boost/wave/util/cpp_include_paths.hpp の中にある using namespace boost::multi_index; 直下の get (2ヶ所)を boost::multi_index::get に qualify してやれば #include のみの場合はエラーは出なくなったけど これで正常動作するのかは分からない。 要因としては >416 のバグのせいっぽいね。 >以下、調べたかぎり最小のコード。 やっぱり gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) + Boost 1.40 で再現しない。 実際のコードだとうまく行かないかもしれないけど、 namespace my { class Operatable : private boost::operators<Operatable> { }; template<typename T> class Overloaded { }; template<typename T> Overloaded<T>* operator&(Overloaded<T>& v) { return 0; } void ThrowException() { boost::throw_exception(std::exception()); } } って感じで namespace に閉じ込めたら通ったりしない?
421 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 21:38:43 ] すみません、質問があるんですが 今現在uBLASライブラリを使ってLU分解を行っています しかし,同じ動作を数百回回してると下記のエラーが出てしまいます 毎回違うループ回数でエラーが起きているみたいなんですが,何故起こってしまうのかよくわかりません 分かる方いらっしゃいますか? *エラーメッセージ Check failed in file /cygdrive/D/boost_1_39_0/boost/numeric/ublas/lu.hpp at line 276: detail::expression_type_check (prod (triangular_adaptor<const_matrix_type, upper> (m), e), cv2) Error while dumping state (probably corrupted stack)
422 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 21:57:39 ] probably corrupted stack
423 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 21:59:52 ] よく分からんが、uBLASは1.40でlu.hppも含めてアップデートされているので 1.40で試してみたらどう
424 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 22:22:56 ] >>423 ありがとうございます とりあえず、アップデートして行ってみましたが状況変わらずでした LU分解の後退代入で配列の不正アクセスか,配列が破壊されてるかどちらかが起きてるのはわかるんですが 毎回違うタイミングで起きるので原因が良くわからないです 代入する値はループ毎に変わりますが乱数を使ってるわけではないのでエラーを吐き出すとしたら同じループ回数だとは思うんです
425 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 22:39:03 ] 取り敢えず、デバッグして発生条件を絞っていくしかないな
426 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 01:01:44 ] まさかとは思うがuBLAS最新はVC系はサポートされてないぞ。
427 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 01:06:07 ] ビタミンC?
428 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 05:00:13 ] >>421 もうエラーの内容も覚えていないんだけど uBLASつかってるシングルスレッドのプログラムを 問題を複数に分けてマルチスレッドで分散してやるようにしたらわけのわからないエラーが出始めた 納期があったから細かく調べずにマルチプロセスで逃げたw まったく参考にならんけど思い出した
429 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:17:37 ] 更新しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Regex] Improve recursion branch-prediction. [Spirit] Spirit: comment typo fixes Spirit: minor test adjustment Added note to fix the thing Spirit: expanded the quick hack to include strings Spirit: added new Karma example Spirit: little endian binary test fix [Multi_index] handled serialization of non default constructible values [Selialization] Fix plugin test/demo
430 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 17:07:19 ] Webを検索していて驚きました。 ttp://webdocs.cs.ualberta.ca/~graphics/software/boost/boost/numeric/ublas/traits.hpp ここに boost::complex というテンプレートがあるのですが、これはなんでしょうか? 昔std::complexが標準にない時代にboostに同等のものがあったとか、 そういうことはありますか?
431 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 09:11:03 ] 初歩的な質問で恐縮なのですが… win2000+VisualStudio2005+Microsoft Platform SDK for Windows Server 2003 SP1で、 Boost1.41をダウンロードしてきてbootstrapとbjamを実行し、 www.boost.org/doc/libs/1_41_0/libs/filesystem/example/simple_ls.cpp を試しにコンパイルしてみたのですが、 LINK : fatal error LNK1104: ファイル 'libboost_filesystem-vc80-mt-gd-1_41.lib' を開くことができません。 というエラーが出ます。 指定されたファイルはC:\Boost\bin.v2\libs\filesystem\の下層にちゃんとあるのですが、 これはコンパイラにパスが通ってないということでしょうか? 解決方法を知っている方がいましたら教えていただきたいです。 現在のVisualStudioの設定は以下のとおりです。 オプション→プロジェクトおよびソリューション→VC++ディレクトリ→インクルードファイルにC:\Boostを追加 ライブラリファイルにC:\Boost\bin.v2\libsを追加
432 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 10:08:41 ] ファイル名が微妙に違ったりしてないかい
433 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 11:58:11 ] >指定されたファイルはC:\Boost\bin.v2\libs\filesystem\の下層にちゃんとあるのですが、 >(中略) >ライブラリファイルにC:\Boost\bin.v2\libsを追加 bin.v2 の下は未インストール状態のものなのでその下層のパスまでちゃんと指定するか、install して 一ヶ所にまとめられたディレクトリを指定するかどっちかだと思われ。
434 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 12:34:19 ] おいおい、bin.v2はビルド時の中間ファイル置き場だろ。 bjamのオプション次第だけど、普通はstage\libだろ。
435 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 16:39:47 ] 431です。 ライブラリファイルをC:\Boost\stage\libに変更したところ、コンパイルが通るようになりました。 回答してくださった方々、本当にありがとうございます。
436 名前:デフォルトの名無しさん [2010/01/03(日) 11:53:28 ] boostからMPICH2を使ってみようと思うんだが、 MPICH2(Win32 64bit)をインストールしても binフォルダにmpichコマンドやmpeコマンドが見当たらない。 そういうもの? ttp://www.kmonos.net/alang/boost/classes/mpi.html ここの手順そのままで問題ない?
437 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 18:56:13 ] >>436 俺はやったことないからわからんが、そのページに >MPICH2 では手元の環境ではうまく動かず…。 って書いてあるのに、そのままで問題ないかと言われても…。
438 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 13:41:42 ] >>436 MPIの使い方はよく分かりません。 Boost 1.41 + MPICH2で試してみましたが、ビルドまでは通るものの実行時に例外エラーが発生しますね。
439 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 13:58:53 ] 更新しました。Boost.MPIにつきましては、今後MPICH2以外の使用を検討致します。 ttp://booster.x0.to/ 以下更新内容の一部 [Fusion] associative forward iterators in example and docs [Random] Attempt to fix ranlux failures Try to get more information out of the failing tests. [Spirit] Spirit: fixing a problem in sequences if the attribute is a container of containers, more test cases Spirit: accounting for changed fusion::fold parameter sequence in new Boost version Spirit: fixed SA detection for karma::maxwidth [Iostreams] Don't throw if seeking the end of the restricted area of a file. Add dummy returns after calling throw_exception. [Type_traits] Fixes #3800. [Circular_buffer] circular_buffer: constant complexity of clear method and destructor [Asio] Windows needs the OVERLAPPED structure to be valid until both the initiating function call has returned and the completion packet has been delivered. Don't block signals while performing system calls, but instead restart the calls if they are interrupted. Add boost_ prefix to extern "C" thread entry point function. Refs #3809. Add a workaround for some broken Windows firewalls that make a socket appear bound to 0.0.0.0 when it is in fact bound to 127.0.0.1. [Functional] Rename namespace BOOST_HASH_DETECT_FLOAT_FUNCTIONS to lower case for consistency. [Uuid] optimized seed_rng optimized string_generator
440 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 12:51:23 ] はじめまして。Boost.MultiArray の設計について教えていただきたいのですが、 multi_array_ref や const_multi_array_ref は何のために設計されているのでしょうか? 参照では問題がある場合に使うことを想定しているのでしょうか?
441 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 16:41:32 ] 参照の参照を内部で回避してるんじゃないかとエスパー
442 名前:440 mailto:sage [2010/01/05(火) 19:07:57 ] >>441 どうもありがとうございます。やっぱりそうなんですかね。
443 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 19:28:58 ] 実装読まずに適当に推測すると 名前的にはauto_ptrに対するauto_ptr_refとかと同じ用途なんじゃない?
444 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 19:33:56 ] 用途的には、multi_array_refはトラディショナルな配列のポインタを渡してmulti_arrayとして扱うためのラッパー。
445 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 20:00:51 ] fucktoryパターンってなに?><
446 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 20:11:44 ] fucker
447 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 20:12:21 ] 子作りでインスタンスを増やすパターン
448 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 20:14:58 ] >>443 > 実装読まずに適当に推測すると > 名前的には 現実的にはこれができるのが一番いいよね。 むずかしいけどさ。 俺 名前づけのセンスないし。
449 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 22:48:22 ] 「画像を扱うライブラリが増える」と聞いて、bimapだと勘違いした人、正直に手を上げなさいノシ
450 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 23:52:48 ] Boost.SpiritはV2になって、 結局 何が良くなったのでしょうか? コンパイル速度は悪くなったと思いますが、 実行時速度とかでしょうか?
451 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 12:19:06 ] Spiritのソースのメンテ性(Spiritを使ったソースではない)が上がったんじゃなかったか。
452 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 12:43:56 ] SpiritとExpressiveってコア統合中とか聞いたけど、最近のでは実現してるの?
453 名前:デフォルトの名無しさん [2010/01/07(木) 13:08:45 ] shared_ptrで、別のshared_ptrに参照させる際に weak_ptrのlock関数経由(もしくはshared_from_this関数)と '=' での直接代入経由で参照カウントの挙動に変化がなかったけど これってどっちでもいいの? BoostはVer1_40_0です。
454 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 13:11:05 ] >>453 あたりまえじゃないか。 挙動が変わるはずだという理屈があるなら言ってみれ。
455 名前:デフォルトの名無しさん [2010/01/07(木) 13:21:25 ] 直接代入が参照のコピーか移動かの仕様が自分の中でちょっと疑問でして、 実行結果を見れば一目了然なんですが、 これですっきりしました、有難うございました。
456 名前:450 mailto:sage [2010/01/07(木) 20:11:07 ] >>451 ありがとうございます。 そうですか。 ・・・でもまだ正直v1よりバグが多いとかですかね?
457 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 20:42:56 ] Spiritは毎日のように更新されてるので、バグ多しっつーより未完成ってイメージが
458 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 20:45:32 ] >>457 そうなんですか。 まさかのこれ以上の機能拡充とかですかね。 ありがとうございます。
459 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 21:17:53 ] 更新しました。Boost.MPIのビルドにはMPICH 1.2.5を使用しましたが、>>436 のサンプルは上手く動作しません。 ttp://booster.x0.to/ 以下更新内容の一部 [Unordered] Formatting changes, mostly to fit within 80 characters. Also, some C casts converted to static_cast. [Spirit] Spirit: added concept checks for qi API functions, fixed qi::match functions, added basic_istream_iterator Spirit: added karma::auto_() Spirit: added missing top level include file Spirit: fix for one of the multi_pass policies Spirit: added more tests for Karma auto_ Spirit: adding the matches.hpp[] directive Spirit: adding tests for the matches[] directive [Asio] Include boost/limits.hpp rather than <limits>, to support older compilers. Refs #3743. Drop back to second_clock if microsec_clock is unavailable. Refs #3743. Use sockatmark if SIOCATMARK is not defined. Refs #3743. Disable iostreams-related functionality if BOOST_NO_IOSTREAMS is defined. Refs #3743. Apply fix for reported excessive CPU usage under Solaris. Refs #3670. Support platforms that don't define INET6_ADDRSTRLEN. Refs #3743. [Wave] Wave: updating copyrights, fixing issues introduced by latest changes to multi_pass. [Regex] Fix bug that effects recursive expressions combined with repeats. Speed up the code a little, and stop swapping stream buffers around in case that's the cause of some test failures. [Iostreams] More unreachable returns. This should only be a temporary workaround. 亦、libs_for_build_boost.rarも、bjam.exeをrev.58785にアップデート致しました。
460 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 22:08:02 ] と、改めてMPICH2の使い方を調べてテストし直してみましたところ、 x32, x64双方共正常に動作しました。 管理者権限でコマンドプロンプトを起動して、 smpd -install mpiexec -n 8 test.exe です。 Boost.MPIは次回のビルドからまたMPICH2仕様に戻します。
461 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 22:18:17 ] あ、mpiexecよりGUIであるwmpiexecから起動した方が簡単ですね。
462 名前:440 mailto:sage [2010/01/09(土) 14:59:43 ] >>444 なるほど!仕様を読んでみると確かにそういう風に使えるんですね、というか書いてありますね…見落としてました…すみません。
463 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/01/09(土) 17:03:30 ] boost::lexical_cast<int>("0x12345");のように、0xがついている文字列が 変換できないのですが、うまく変更できるようにするにはどうすればいいでしょうか?
464 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 17:34:08 ] lexical_castは誰もが待ち望んでいて、そしてガッカリした代物だよな・・・
465 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 17:34:14 ] 差し替え更新しました。Boost.MPIはMPICH2 1.2.1仕様に戻しました。 ttp://booster.x0.to/ 以下追加更新内容 [Spirit] Spirit: fixing attribute handling in sequences [regex] Change name of extern "C" function so it's prefixed with "boost_" >>463 lexical_castは16進数の変換には対応しておりませんので、この辺りは如何でしょう。 文字列を数値に変換する関数 (CRT) ttp://msdn.microsoft.com/ja-jp/library/53b7b72e(VS.80).aspx
466 名前: [―{}@{}@{}-] 463 mailto:sage [2010/01/09(土) 17:41:23 ] >>464 >>465 ありがとうございます. lexical_cast は過去に 1e+8 のような形式を変換できずがっかりした記憶が あるのですが、いつの間にかできるようになってて驚きもしました. 0x にもいつか対応してくれると信じて待つとします. stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer
467 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 17:55:57 ] いや、cinなどbasic_istreamでも(hex指定しない限り)十六進法の入力はできないのだから、 いつまで待っても、lexical_castでできるようにはならないだろう。
468 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 22:33:27 ] >466 そのリンクの最後の回答をちょい修正して #include <iostream> #include <boost/lexical_cast.hpp> template<typename T> class from_hex // For use with boost::lexical_cast { T value; public: operator T() const { return value; } friend std::istream& operator>>( std::istream& is, from_hex<T>& outValue ) { is >> std::hex >> outValue.value; return is; } }; int main(void) { std::cout << boost::lexical_cast<from_hex<int> >("0x12345") << std::endl; return 0; } でいいんじゃね?
469 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 22:37:51 ] >>468 0x ついてるときはそれでいいけどついてないときには使えないからな〜 中の人の対応を待ちたい
470 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 23:23:39 ] >469 codepad だと通るんだが。 ttp://codepad.org/nfkFKOZC
471 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 06:39:11 ] >>428 関数の中でグローバルポインタの割り当て/開放をしてるのかね。
472 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 14:55:21 ] strtol・strtoulなら文字列の書式から進数の自動判定が行われるんだし、 CRT使うと死ぬ体質じゃないんならそれ使って実装しときゃいいんでは。
473 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:32:21 ] lexical_cast<std::wstring>にすると、コンパイルエラーになるクラスがあったりして困るね。
474 名前:デフォルトの名無しさん [2010/01/12(火) 23:28:11 ] boost::asioでlocalhostのIPアドレス(自分のアドレス)を取得する方法を教えてください. loopbackアドレス(127.0.0.1)ではなく DHCP等によって割り当てられているアドレスの方です. 以下のような感じでlocalhostへの接続は出来ると思うのですが 一定の範囲のIPアドレス(例えば,192.168.1.1~192.168.1.9)に対して socketで接続を試みる時に 自分自身が範囲にあった場合にはconnectしないようにしたいと考えています. そのため,自分のIPアドレスを情報として持っておきたいのです. const int NUM_PORT = 7757; boost::asio::io_service ioService; boost::asio::ip::tcp::socket socket(ioService); socket.connect( boost::asio::ip::tcp::endpoint(boost::asio::ip::address_v4::loopback(), NUM_PORT));
475 名前:デフォルトの名無しさん [2010/01/13(水) 00:08:33 ] d.hatena.ne.jp/tt_clown/20081225/p1
476 名前:デフォルトの名無しさん [2010/01/13(水) 00:11:50 ] www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/ipaddr.html
477 名前:デフォルトの名無しさん [2010/01/13(水) 00:18:15 ] grayhole.blogspot.com/2008/10/boostasio-syslog.html
478 名前:デフォルトの名無しさん [2010/01/13(水) 00:24:39 ] blog.goo.ne.jp/dc1394/e/a03ed6855fd2ff595ad1990b1c9d067c
479 名前:デフォルトの名無しさん [2010/01/13(水) 00:26:48 ] >>475 boostに固執する意味はないので,本質的にはその方法で解決できそうです. ありがとうございます. 自分でサーベイしたところ 今の時点でboostでもリゾルバに頼れば出来るということが分かりました. groups.google.co.jp/group/boost-list/browse_thread/thread/7142d22d86aa6bd9?pli=1 grayhole.blogspot.com/2009/11/boostasio-udp.html ただ DNS情報がないと駄目なので一部の環境では動かないことが予想されますが...
480 名前:デフォルトの名無しさん [2010/01/13(水) 00:28:28 ] >>476 ,477,478 のろのろ書いてる間にすみません. ありがとうございます.
481 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:15:45 ] std::vector<boost::tuples::tuple<std::string, int, int> > vの中に、 std::string strと、tupleの先頭の要素が等しいものがあるかどうかを、 std::binary_searchで判定したいのですが、どうbindを使えばいいのか 分かりません。 どなたか教えていただけませんでしょうか。よろしくお願いします。
482 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:54:09 ] >>481 その目的なら比較関数オブジェクトを渡してやればいいと思うけど、 ↓みたいなのじゃなくでBoost.Bindを使う意味はあるの? struct comp { typedef boost::tuples::tuple<std::string, int, int> tuple_t; bool operator()(tuple_t const& lhs, tuple_t const& rhs) const { return lhs.get<0>( ) < rhs.get<0>( ); } };
483 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 18:03:19 ] あるいは、binary_searchの比較値にstd::stringを直接渡したいという話? でもbinary_searchに渡せるのは要素の値と決められてるから、bindに限らずそれは無理だね。 std::binary_search(v.begin( ), v.end( ), tuple_t(str, 0, 0), comp()); こうやるしかない。
484 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 18:11:55 ] >>483 そんなの決まってないよ。双方向の operator () が用意されてれば問題ない。 bind じゃ無理そうだけどね。
485 名前:481 mailto:sage [2010/01/16(土) 18:21:55 ] >>482 , 483, 484 ありがとうございました。無理みたいですね。 関数オブジェクトを使うことにします。
486 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:08:19 ] shared_ptrだけが使いたいんだけど その目的のためにBoostを入れるのは大掛かりすぎる、と思うような人に 良い解決策はありますか?
487 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:11:54 ] >>486 そういう用途で bcp っていうツールが用意されてるんだけど、 やってみると shared_ptr だけでもけっこうな依存関係になってて、 結局全部そのまま使うことにしたことがある。
488 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:14:11 ] >>486 Boostを入れるったって、別に全部リンクされるわけじゃないんだから、 普通にBoost入れてshared_ptrだけインクルードするんじゃだめなの?
489 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:39:55 ] だねえ、オブジェクトファイルも使わないし、 shared_ptr.hppをインクルードして使えば 完成したバイナリは希望通りshared_ptrだけを使ったバイナリになるし。
490 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:40:36 ] std::tr1::shared_ptrが使える環境にするとか
491 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:44:47 ] VC++2008ならSP1以降は標準でshared_ptr使えるな
492 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:48:33 ] 俺はstd::tr1::shared_ptrよりもboostの方が信頼できるor同等程度だと思っている。 だがそれはさておきboostの一部分だけ取っていじったのが認められるんなら boostそのものだって認められるだろ? やっぱそのままの方が良いと思うんだぜ。
493 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 18:00:35 ] チーム内のよくわからん奴が 勝手にshared_ptr以外のライブラリをiincludeするのを避けたいんだろ
494 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 18:07:19 ] エスパーすぎる
495 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 18:50:55 ] >Boostを入れるのは大掛かりすぎる 自分もboost入れる前はそう思ってた
496 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:05:31 ] そりゃTR1ライブラリよりBoostの方が格段に信頼性は上だろうな だが世の中には色々な(往々にして訳分からんand/or間違った)理由で「Boostは ちょっと」って奴もいるからなぁ 他人のコードでバグ出た時ってマジきついしー、みたいに言われた時は、そんなら 標準ライブラリも普通にバグ出るから使うなよって思った
497 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:15:41 ] そんなこと言ってるやつのコードよりboostの方がよっぽど信用できるわな
498 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 20:17:47 ] >>496 単に今までのスタイルを壊されるのが嫌だって理由の連中がいたりするからなあ そういうのがいると、バージョン管理ソフトさえ入れられない。
499 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 20:37:11 ] そういうヤツの会社は潰れるか少なくとも競争には負けるから 心配要らないよ。
500 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:29:34 ] >>486 まず数十行程度の自作スマートポインタから始める。 それで事足りればそれでおしまい。 それじゃ足りないと頭を抱えた時になって初めて確信を持ってshared_ptrを使う。
501 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 05:25:49 ] shared_ptrだと生に比べてパフォーマンスも下がるし、かなりサイズも大きくなるってのもあるし、 本当に必要かどうかは考えた方が良いのかも。 特にサイズはポインタ1つあたり10倍以上増えるんだっけ? 生ポインタ 参照カウンタ shared_ptrのvirtual関係 デリータ+virtual ミューテックス で。
502 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:43:23 ] shared_ptrを使わなければ実装できないデータ構造ではそれらのメンバは必須であり 10倍以上という増加も必要な増加だ。
503 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 08:18:04 ] >>501 それは最悪の場合のサイズでしょ。 virtual関係を共通化したり、atomic操作を使ったり、 実装上の工夫でもっと減らせる。
504 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 08:51:26 ] パッと見だとInterlocked系の操作で済ませてるからミューテックスとか要らなくね?
505 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:21:34 ] shared_ptrのミューテックスはマルチスレッドのためのものじゃない。
506 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:23:34 ] えっ
507 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:30:25 ] 何に使うの?
508 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:46:19 ] 日本の参政権は日本人のためだけのものじゃない。
509 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:48:11 ] 僕たちは天使じゃない。
510 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 10:07:51 ] トムは鉛筆ではない
511 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:07:00 ] Tom is a pen.
512 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:15:29 ] >>503 そりゃboostのは使わないで自分で作れと言ってるのか?
513 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:41:26 ] つーかboostのってmutexなんか使ってんの?
514 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 14:40:30 ] mutexではなくspinlockになってた
515 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 14:47:02 ] atomicなintrinsicが使えるような処理系ならその辺使わないんじゃね? 知らんけど
516 名前:デフォルトの名無しさん [2010/01/18(月) 15:35:24 ] spinlockを使うのは排他中の処理が非常に早く完了するだろうと予測しているから?
517 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 16:42:09 ] >>500 1 ひとりプロジェクトならスマートポインタは必要ない。 2 協調作業の場合、自作スマートポインタの仕様を説明するのが面倒だからよそのライブラリを使ったほうが説明しやすい ゆえに自作スマートポインタは必要ない
518 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 16:45:09 ] >>517 > 1 ひとりプロジェクトならスマートポインタは必要ない。 いやいやいや。
519 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 16:55:00 ] scoped_ptr以外はコード毎最適実装が無限にあるからね
520 名前:503 mailto:sage [2010/01/18(月) 19:32:14 ] >>512 誤解させてすまんかった。 boostの環境依存コードにはすでに実装上の工夫がだいぶ入っている。
521 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 20:14:11 ] >>501 それはどこのshared_ptrですか? boostのshared_ptrはカウンタクラスにvtableとuse_countとweak_countしかないよ。 アトミック命令でインクリメントするからミューテックスは必要ないし。
522 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 20:23:32 ] >>521 アトミックも何も使えない環境だと本当に肥大化するよ。 1.35のsp_counted_base_pt.hppを見てみ。
523 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 21:02:05 ] シングルスレッド確定なら #define BOOST_SP_DISABLE_THREADS という手もある
524 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 21:10:38 ] >>523 そんなん初めて知ったわ
525 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 00:05:31 ] shared_ptrだけ使いたいって欲求は少しわかるな。 環境や使用できるライブラリが他人に決められてしまう場合とか。 せめてshared_ptrだけの導入なら説得できるんじゃないかとか思ったことがあるw >>481 find_if()とかでこんなの考えたけど意味が違うか find_if( v.begin(), v.end(), bind( &tuple<string, int, int>::get<0>, _1 ) == str ); binary_search()は思いつかないなあ
526 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 01:03:05 ] ライブラリの普及活動ってデリケートだよな、 失敗時に下手すりゃ関連ライブラリにも飛び火するし。
527 名前:progress_display mailto:sage [2010/01/20(水) 13:10:13 ] まったくですよ
528 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 15:01:57 ] >>527 貴方はお引き取りくださいw
529 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 16:37:42 ] 飛び火するようなアレだっけ?
530 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 16:54:00 BE:480255528-2BP(0)] progress_displayを見たとき ああこれは他のプロセスから進捗状況を取得できるAPIも用意されてるんだな。 そうにちがいない。 まさか表示するだけなんてことはあるまい。
531 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 11:44:45 ] もう許してやれよ
532 名前:compressed_pai mailto:sage [2010/01/22(金) 20:58:00 ] 絶対に許さない
533 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 00:59:47 ] paiってなんかえろいな
534 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/01/23(土) 08:00:23 ] 貧乳ですねわかります
535 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 08:35:21 ] #define compressed_pai 3
536 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 12:58:04 ] せめて浮動少数にしてあげて;;
537 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 19:10:44 ] compressされてるので無理です。有理だけど。
538 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 19:27:42 ] #define compressed_pai (355/113)
539 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 19:28:17 ] 355.0/113.0
540 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 19:34:26 ] そういやこんなスレがあったな。 ttp://pc12.2ch.net/test/read.cgi/tech/1248060999/ 無限精度実数ライブラリなんだとさ。 これさえあればpiも無限精度でいけるぜ。 ・・・いつ使うのかはしらんが、画期的なにおいがある。
541 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 21:18:09 ] ICUサポートを有効にしたままRegexをstatic-staticでビルドってできないのかな? ICUをstaticでビルドしてるからRegexもlink=staticでビルドしたい
542 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 21:42:20 ] ま、無限精度じゃないしな。
543 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 22:08:45 ] >>541 Bjamのソースか関連ファイルを改造しないと無理と思われます。
544 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 22:24:32 ] 更新しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Spirit] Spirit: added compile time assertion diagnosing a configuration mismatch Spirit: working around false static assert on earlier versions of gcc Spirit: fixing tests for qi::matches[] Spirit: fixed signed/unsigned mismatch in Qi's binary parsers Spirit: added spirit::ostream_iterator Spirit: fixed violation reported by inspect Spirit: fixing nasty bug in rule copy constructor Spirit:: adding missing function in multi_pass policies. Spirit: added specialization for signed char - doh! [Bimap] fix missing include headers, ticket #1521 fix count() constness, ticket #2484 [Graph] Changed to BOOST_THROW_EXCEPTION (except in one test case) [Math] Change cbrt implementation to use a better performing algorithm. Change functions named "check" so they don't conflict with Apple macro of the same name. [Asio] Add coroutine::is_complete() and support for "yield break;". [Type_traits] Fixes #3704. [Property_tree] Fix a weakness in the XML whitespace tests. This allows me to have correct tests after fixing PR2855, which is also in this commit. [Python] Support different MS calling conventions, thanks to Nicolas Lelong. Closes #3833. [Mpl] Fix bitand/bitor conflicts with iso64.h header
545 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 01:36:59 ] boost.asio で boost::asio::ip::tcp::socket socket(io_service); socket << "request" << hoge << "\r\n"; とすれば socket.send(std::string("request") + boost::lexical_cast<std::string>(hoge) + "\r\n"); と同じ事をしてくれるような機能はないのでしょうか
546 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 14:53:21 ] boost::iostreams使ってラッパ作るとか
547 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 14:57:15 ] boost::asio::ip::tcp::iostreamは既に存在する
548 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/01/25(月) 19:05:01 ] namespace boost.asio 内に socket& operator<<(socket&, const std::string& request); って関数用意するくらいしか思いつかないな iostreams とか使ってもできそうな気がするけど
549 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 22:13:04 ] asioのマニュアル>Examples>HTTP Clientでもお読み
550 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 22:41:49 ] asioってソケット何個まで同時に開けますか?
551 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 12:06:43 ] boostの使い方じゃなくて実装を中心に解説してる本ってあるの?
552 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:13:17 ] >>550 OSの制限まで使えると思う。Asio自体には特に制限はないのでは?
553 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 23:22:17 ] あっしお(あっそ)
554 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 00:28:44 ] >>552 じゃWinの場合は1スレッド32個までなのかな。
555 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 03:11:51 ] >>554 WaitForMultipleObjectsの制限で64個のほかに何かあるの?
556 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 20:34:31 ] 1.42.0
557 名前:デフォルトの名無しさん [2010/02/06(土) 23:11:24 ] >>556 祝age
558 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 23:38:54 ] えー・・・ 昨日1.41.0入れたばかりなのに ちなみにその前日まで1.38使ってました
559 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 00:34:45 ] ちょっと教えて欲しい。 C言語の getopt(argc, argv, "o::") $ command -oarg <- arg は-oの引数 $ command -o arg <- arg は-oの引数とみなさない を boost::program_options で実現するにはどうしたらいい? desc.add_options()("option,o", value<std::string>()->implicit_value(""), "desc") でいけそうな気もするけど 1.33.1 縛りなので implicit_value が無いらしい(´・ω・`)
560 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:55:40 ] program.optionsは1.42でも更新されてるから最新で試してみれば?悩むのはそれからでもいいんじゃね?
561 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:17:07 ] >>560 とりあえず使える状態だった1.41.0で implicit_valueを試してみたけどダメみたいだね。 次のargvを引数にするみたい(´・ω・`)
562 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:20:18 ] program_optionsは、以前試したら、 unicode対応の意味を分かってないクソ設計だった。 正直、progress_displayと同レベル。
563 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:35:40 ] program_optionsはもうちょっと何とかならないのかな。あとspirit。 定番用途なのにもったいない。 progress_displayは別にいいや。
564 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:51:05 ] >>563 Boost.Spiritはv2になってコンパイル速度が遅く なったのが痛いな。 とはいえCPUがこれから先 さらに進歩すれば十分使えるようになるだろう。 ・・・たぶん。 program_optionsはそもそも事前にビルドしておかないといけないってのが 難点というか、俺はそれで使ったことない。 progress_displayは・・・まあ別にいいや。 rootでなくてどっかのディレクトリに入って欲しいなぁってくらい。
565 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 23:01:06 ] 更新しました。trunkはまだ1.42のままです。 ttp://booster.x0.to/ 以下更新内容の一部 [Exeption] improved memory leak test. [Math] Improve the performance of the Bessel functions, and update docs. [Fusion] Fusion: adding overload for const parameter types Fusion: fixed adapt_class to be usable with Spirit, added adapt_class_named [Spirit] Complete Unicode Level-1 support: table generation. Spirit: adding workaround for MSVC falsly trzing to use multi_pass::operator== for other iterators Spirit: buffer[buffer[...]] does not result in double buffering anymore, added tests [Property_tree] Fix an issue in MSVC for ptree::equal_range.
566 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 23:01:47 ] [Regex] Improve regex performance on msvc by removing statically allocated recursion stack, and using a std::vector instead. [Program_options] fix in winmain, Fixes #3879 [Serialization] Added comment regarding intentional anonymous namespace in header [Statechart] simple_state::context() now also finds bases of state types. [Uuid] switch from the Boost Test Library to boost/detail/lightweight_test.hpp moved uuid generators into their own file [Wave] Wave: added found_unknown_directive preprocessing hook, bumped version number 亦、libs_for_build_boost.rarもICUを4.3.4にアップデート致しました。
567 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 23:07:56 ] boost/exception.hpp が使えなくなってるぅぅぅるうううるるううーorz boost/exception/all.hpp を使えだってさ
568 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 00:35:02 ] >>567 さすがにこの変更はないわ boost/exception.hppでall.hppをincludeしてくれたらよかったのに
569 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 10:08:38 ] >>562 海外製のライブラリはそんなのが多いような気がする。 VisualStudio限定の話になるけど、文字セットを「Unicode文字セットを使用する」に設定するとおかしくなる感じで。
570 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 10:22:46 ] boost::exceptionは破壊的変更やりすぎ もっと練ってから入れて欲しかった
571 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 20:05:03 ] 何も考えずにall.hppに変更してたんだけど、そんなことになってたのか。 spiritに続いてこの仕打ちは酷いよ。
572 名前:564 mailto:sage [2010/02/08(月) 21:31:20 ] boost::exceptionも使ったことないから分からん。 やっぱboostに入るぐらいだから便利なんだろうか。 紹介を見てもそんな例外をばりばりに使用しないしって思っちゃう。。。
573 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 22:52:17 ] 例外でエラー通知する場合は便利じゃない
574 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 05:19:46 ] Boost 1.42 shared_ptr<string>がBoost.Serializationでシリアライズできない。 STATIC_ASSERTにひっかかる。
575 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:04:38 ] >>561 結局、command_line_parserに渡す前に自前で処理しました。 GNU拡張とはいえgetoptにできることぐらいはできないと困るね(´・ω・`)
576 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:05:14 ] shared_ptr まだシリアライズできないバグがあるのかw 何やってんだw
577 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:16:31 ] Boost.Serializationって どんなときに使うのでさ?
578 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:18:30 ] データを直列化し総サイズを算出して現在進行しているアルゴリズムの進捗状況と照らし合わせて progress_displayに情報を渡す。
579 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:35:36 ] 1.41と1.42は本当にちゃんとテストしているのだろうか
580 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:29:12 ] >>578 progress_displayすげー。
581 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:49:53 ] >>577 処理状態をファイルか何かに保存したりしたい時 例えばゲームのセーブロードとか、CGIのセッション保存とか
582 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 06:09:02 ] 設定の保存と読み込みによく使ってるわ iniとか使う気になれんし
583 名前:577 mailto:sage [2010/02/11(木) 11:47:05 ] >>581-582 ありがとう。 なるほど。途中状態の記録とかに便利なのか。。。
584 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 18:53:45 ] 今までBoost無しでスタティックライブラリ開発してたんだけどもうBoost入れるわ・・・ でもさ,Boostに依存しまくったライブラリとかみんな使ってくれるかな・・・
585 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 19:11:18 BE:420223627-2BP(0)] Boostを入れなくても使えるようにすればいいんじゃないか?
586 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 19:26:29 ] そうか分離出来るかわからないけどヘッダにboostに依存する型が入らないようにしてみる 自力ビルドしたい人とかサポート外環境の人には諦めてboost入れてもらうことにしよう・・・
587 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:56:16 ] 矢沢「え?せっかくのC++なのにBoostついてないの・・?・・・・・それはもったいない・・」
588 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:33:38 ] STLでさえ禁止のところあるからなぁ・・・ Qtはおすすめ
589 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:19:46 ] >>584 依存しまくったライブラリでも有用性があるならおkでしょう。 ただしそのライブラリが複数あるなら、依存しないでかけるライブラリは その方が良いのかもしれんけど。
590 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:24:33 ] >>588 > STLでさえ禁止のところあるからなぁ・・・ 別にそんな会社は潰れちまえばいいだけだろ。 ・・・え?ウチの会社・・・?
591 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:34:20 ] テンプレートが使えるだけありがたく思え
592 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 05:18:35 ] Boost使えなす(´;ω;`) ↑STLが使えるだけマシだろ ↑テンプレート使えるだけマシだろ
593 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 06:18:03 ] >>592 この板の「職場で使わせて貰えない」系の嘆きも、そういう順で変化してってるよね。 俺が最初にこの板来た頃はテンプレートで、次にSTLになって、今はBoost。 「C++0x使わせてもらえない」も来るかな。autoくらい使わせてくれよ的な。
594 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:30:16 ] Boost使えなす(´;ω;`) ↑STLが使えるだけマシだろ ↑テンプレート使えるだけマシだろ ↑C++使えるだけマシだろ ↑C使えるだけマシだろ ↑アセンブラ使えるだけマシだろ
595 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:33:03 ] さすがに意味がわからん
596 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:30:18 ] boostの正規表現機能を使いたいのですがあれって性的リンクだそうですが ライセンスとかどうなんでしょう?
597 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:39:48 ] 性的リンク ハアハア
598 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 10:20:21 ] boostライセンスは凄く緩いんで気にすることは無いよ boostライセンスの条文のコピーとboost使ってますっていう記述を readmeにでも書いてればおk
599 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 10:28:39 ] そんな事しなくてもソースコード中(公開しなくてもいい)に boostのライセンスのせときゃいいよ
600 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:15:05 ] 静的リンクが問題になるライセンスってたとえば何だ?
601 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:16:12 ] LGPL
602 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:31:30 ] いうと思った。 それは問題にならない。 LGPLはオブジェクトコードがどういうものかというのを定めてはいない。 動的リンクだろうと静的リンクだろうと、それはLGPLの定義の範囲外にある。 LGPLでは、ソースコードとして、どのように使っているかが問題になる。
603 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:56:02 ] xpressive という話が出ないのはなんでだ?
604 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:09:00 ] え、出る文脈じゃないと思うけどなぁ。
605 名前:regex mailto:sage [2010/02/12(金) 12:20:58 ] 俺は規格にも取り入れられた由緒正しき標準ライブラリだ。 どこの馬の骨とも知らねぇライブラリと一緒にしてくれるな。 そうそう、progress_display君が、今度お前と一緒に飲みに行きたいらしいぜ。 せいぜい付き合ってやれよw
606 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:37:47 ] >>602 「オブジェクトコード」という言葉は定義しなければならない性質のものなのだろうか。 それに「リンク」という言葉はオブジェクトコードという言葉に対しては使われていない。
607 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:50:36 ] >>603-604 いや、boostの正規表現はライブラリをリンクしなければいけない と >>596 が思い込んでる気がしてな。 xpressive 使えばそもそもリンクなんか必要ないだろうと。 >>605 コンパイル時間の増加以外に具体的にまずいところがあるなら教えてくれ。
608 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 17:29:40 ] tr1ならregex入ってるからboost要らないのでは
609 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 19:39:49 ] >>608 大丈夫そうですね d.hatena.ne.jp/yamadila/20080825/1219595555
610 名前:デフォルトの名無しさん [2010/02/13(土) 01:40:16 ] >>596 > boostの正規表現機能を使いたいのですが > あれって性的リンクだそうですが > ライセンスとかどうなんでしょう? 読んでみ? 参考日本語訳はttp://hamigaki.sourceforge.jp/doc/html/license.html 要するに、 1.ソースコードの形で流用するなら ライセンス文全部と著作権表示をすれば流用OK。 2.コンパイルしちゃってバイナリの形で利用・再配布等するなら 全くライセンス文や著作権表示すら不要。
611 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:09:48 ] GoogleIMEはやたらと性的を勧めてくるから困る
612 名前:デフォルトの名無しさん [2010/02/13(土) 02:22:22 ] ublasですが、ublas::vectorをublas::matrixとして 式に組み込みたいのですが、どうすればいいでしょうか? // 例えばvector2をmatrix2x1のように扱う。 ublas::vector< double > v( 2 ); // vector2 ublas::matrix< double > m( 2, 1 ); // matrix2x1 m.assign( v ); // <-これが通るようにしたい。
613 名前:612 mailto:sage [2010/02/13(土) 02:37:45 ] 一応ublas::outer_prod()を使えば vectorからmatrixへ変換出来ることはわかりました。 他にもっと良い方法があれば教えてください。
614 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 03:09:08 ] >ublasですが、ublas::vectorをublas::matrixとして >式に組み込みたいのですが 漏れの読解力じゃここが分からんのだが、結局何がしたいのか??
615 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 03:11:38 ] matrixの一部を更新するのにvectorを使いたいって事じゃないの
616 名前:612 mailto:sage [2010/02/13(土) 03:29:46 ] わかりづらくてすみません。 >>614 さんのとおりです。
617 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 03:31:04 ] それなら ublas::column(m, 0).assign(v) // m の第0列に v を代入 でいける 同じように ublas::row(m, i) で m の第i行が取得できる 他には ublas::slice とか ublas::project とかで部分ベクトルと部分行列も取れるよ
618 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 04:39:35 ] すみません、他スレでも質問したのですが用途が異なるとのことでこちらで聞かせてください 開発環境:vc++ 2008 Express Edtion boostのshared_ptrを使いメモリ管理を楽にしようかと思っているのですが、 shared_ptrによって隠蔽されたポインタはインテリセンス(コード保管)によってpublicな変数や関数を参照できないことに気づきました。 たとえば class Test { public: int a; Test() { a = 100; } ~Test() { } }; というクラスがあり。 コードの一部に以下のようなコードを仕込み試したところ。 shared_ptr<Test> p(new Test()); printf("%d\n", p->a);//インテリセンス無効 Test *p2 = new Test(); printf("%d\n", p2->a);//インテリセンス有効 スマートポインタを介したpはインテリセンスできず、直接のポインタであるp2はインテリセンスでaを参照できました。 僕は隠蔽されているのでインテリセンスができないのは当たり前のことのように感じたのですが、 そのスレではスマートポインタもインテリセンスできるはずと言われました。 なんらかの設定、もしくはアドインのようなものを入れればスマートポインタはインテリセンスできるのでしょうか
619 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 05:23:20 ] Intellisenceによる解析はバックグラウンドで進行してるから、 補完がきかないのはshared_ptr<T>の解析が済んでいないか、 もしくはどこかで解析に失敗してDatabaseが壊れてる。 IDEを開き直すか、あるいはソリューションフォルダ内の.ncbファイルを削除して しばらく待ってればそのうち補完がきくようになる。 再現性100%でIntellisence壊れるようなヘッダを別のところでincludeしていた場合、 (boost::shared_ptrとは関係なく)いつまでも解析が終わらないことがあるが、 その場合はそれがIntellisenceの限界。諦めろ。
620 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 05:34:37 ] shared_ptrだけの話ならboostやめてtr1だけの方がIntellisenceの死ぬ確率低いんじゃないか? 何れにせよ過度な期待はしない方がいいな 動けばラッキーくらい。最初から諦めてれば何とも思わなくなる
621 名前:618 mailto:sage [2010/02/13(土) 05:55:44 ] ありがとうございます。他のtmplateを扱うクラスでIntellisenceしてみたところ有効であることに気づきました。 クラッシュもしくは解析に時間がかかっていると考えます。 tr1ありがとうございます。検討します。 620さんのいうとおり基本的には動かないものと考え、動いたときに「おっ」って言おうと思います。
622 名前:618 mailto:sage [2010/02/13(土) 06:02:21 ] tr1でIntellisenceできました、ありがとうございます!
623 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/02/13(土) 08:22:34 ] 2010のIntelliSenceに期待だな
624 名前:612 mailto:sage [2010/02/13(土) 11:06:00 ] >>617 vectorをmatrixに、ではなくて matrixから部分vectorを得て、という考え方に変えるんですね。 とてもよくわかりました。その方向で修正します。 ありがとうございました。
625 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:26:01 ] >>611 > GoogleIMEはやたらと性的を勧めてくるから困る なるほど。性的と静的を比較して、どっちが多く検索されている かといえば無論・・・。。。ってことか。
626 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 14:50:34 ] >>562 このスレのアイドル progress_display への侮辱はゆるさないよ?
627 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 15:23:34 ] あ?プロディスディスってんの?
628 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 23:39:24 ] Boost1.41.0以降でspiritV1使うときはboost::spirit::classicを使うことになるんだけど、 これって1.41以前のspiritと動作変わってたりする?
629 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 20:04:25 ] 更新しました。trunkは1.43に移行しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Fusion] adapt plain old array types (1) [Typeof] Apply variadic functions patch from Sergey Zubkovsky. [Spirit] Spirit: raw[] and lexeme.hpp[] do not pre-skip anymore Spirit: adding no_skip[] directive, docs, tests, etc. added code for pre-skipping "implicit lexeme" rules [Lexical_cast] Use BOOST_LCAST_THROW_BAD_CAST consistently. [Functional] Stop using the deprecated BOOST_HAS_ macros in unordered and hash. [Unordered] Stop using the deprecated BOOST_HAS_ macros in unordered and hash. [Thread] Changed boost.thread to use BOOST_NO_RVALUE_REFERENCES rather than BOOST_HAS_RVALUE_REFS Overload boost::move for thread& and thread&& [Static_assert] Use BOOST_NO_STATIC_ASSERT [Archive] change to avoid ">>" syntax error when passed a template instance [Property_tree] Make BOOST_PROPERTY_TREE_THROW an alias for BOOST_THROW_EXCEPTION. [Program_options] Robustify disambiguation of full/approximate matches. Fixes #3942.
630 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 12:44:28 ] >>628 名前空間移動した以外の変更はせずに使ってるけど。 名前空間の移動はコードや動作は変えないって意思表示だと思ってる。
631 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 01:09:47 ] 過疎ってるな。どうした?
632 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 01:14:44 ] ネタがない
633 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 01:17:31 ] vaultに沢山あるだろうが軟弱者め。 λ式で脳みそ犯されろ。
634 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 12:43:22 ] C++相談室で大概のboostネタは回答完了してしまうからな。 boostネタを回答するときは、ここのURLも張ろうぜ
635 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 12:47:25 ] ご自由にどうぞ
636 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 12:50:56 ] >>633 vaultのお勧めは何?俺はrangeExに注目している。といいつつoven使ってるが。
637 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 14:15:12 ] C++相談室においてboostに関する質問が出た場合のテンプレってあるの? 「現行C++においてboostは標準のライブラリではないから処理系依存スレかboostスレへどうぞ」
638 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 14:45:35 ] 質問に対する解答でboost使えばできる ってのがたまにある
639 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 14:46:30 ] >>633 vaultとかsandboxとか、そこまで手を広げるのか。
640 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 15:16:27 ] shared_ptrとかstd入りしたクラスもあるし ところでどっちを使えばいいんだ?
641 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 15:17:06 ] std入りしたクラス
642 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 15:19:07 ] >>640 許可されている方。 もうちょっとしたらstdを使えばいいんでね?
643 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 15:38:39 ] boostのほうなら、標準非対応なコンパイラでも気の利いた動作をしてくれそう。 といってもMSVCとGCCしか使ってないけど。
644 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 18:41:36 ] 一応こんなスレもある訳だが… Boost C++ Libraries Sandbox pc12.2ch.net/test/read.cgi/tech/1250396380/
645 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 20:02:13 ] >>644 ウチより閑散としとるw
646 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 20:51:02 ] Oven/Egg総合スレ part1 pc12.2ch.net/test/read.cgi/tech/1231080841/ part1 がむなしい。 STL スレも含めて template 統合で良かったような気がするんだけどね。
647 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 21:01:08 ] 次が出るかも分からないし前スレがあったわけじゃないのにいきなりpart1ってなんだよ・・・
648 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 22:01:20 ] boost::ublas のmatrixへ、C配列からブロックごとコピーする方法ってありますか? ・matrixの使っているメモリが連続しているのか ・sliceか何かでブロックのアドレスを外から代入することができるか の二点が問題になりそうですが。
649 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 02:03:59 ] vaultはその辺のC++よく分かってません的なのが適当に放り込んだクソコードが 普通にあるから論外
650 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 18:55:09 ] >>648 matrix<T, row_major> mはCの2次元配列とメモリ配置が一致してる 初期化なりresizeなりであらかじめメモリを確保しておけば、 &(m(0, 0))で先頭アドレス取り出せるからメモリ配置考えてコピー可
651 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 16:27:23 ] >>650 ありがとうございます。 あと &(m.data()[0]) とかも使えそうですね。
652 名前:デフォルトの名無しさん [2010/03/06(土) 01:12:35 ] 俺もvaultにクソコード突っ込んだけど、誰も反応してくれんな。
653 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 01:41:16 ] >>652 お前みたいな奴が仕事増やしてるんだよ死ねよクズが
654 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 17:27:21 ] Boost 1.42 + VC9 // コード typedef void (alloc_func)( ); #include <boost/property_tree/detail/rapidxml.hpp> // エラー error C2226: 構文エラー : 'alloc_func' 型指定子の前あるいは内部で構文エラーが発生しました。 boost::property_tree::detail::memory_pool内での > typedef void *(alloc_func)(std::size_t); という宣言で引っかかっている。 グローバルのalloc_funcの宣言を、インクルード後に書いたらエラーにならなかった。 VC9のバグだろうか?
655 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 17:44:53 ] >>654 エラーになるところを中心に切り出していけば、もっと条件絞れるんじゃないの?
656 名前:654 mailto:sage [2010/03/07(日) 17:54:26 ] // 最小条件はたぶんこれ typedef void (func)( ); namespace foo { typedef void* (func)( ); } // これならおk typedef void (func)( ); namespace foo { typedef void* pvoid; typedef pvoid (func)( ); }
657 名前:654 mailto:sage [2010/03/07(日) 17:58:52 ] なので、rapidxml.hpp の typedef void *(alloc_func)(std::size_t); // Type of user-defined function used to allocate memory の行を typedef void *alloc_func_result_type; typedef alloc_func_result_type (alloc_func)(std::size_t); // Type of user-defined function used to allocate memory に書き換えてやれば解決するはず。
658 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:15:18 ] >>657 それ解決やない、回避や。
659 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:18:27 ] >>656 そんなのが通らないならコンパイラのバグだろさすがに。
660 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:34:45 ] さすがM$…
661 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:37:42 ] typedef void (*func)( ); じゃなかったっけ? typedef void (func)( ); こう買いてもおkなんだっけ
662 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:40:50 ] typedef void* (func)( ); void*を返す関数 typedef void (*func)( ); 戻り値なしの関数へのポインタ typedef void (func)( ); 戻り値なしの関数 合ってる?
663 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:41:17 ] >>661 上は関数ポインタの型 void(*)(void) 下は関数の型 void (void)
664 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:45:20 ] 昔関数ポインタを引数に取って関数ポインタを返す関数ポインタを引数に取る関数が typedefなしで書かれてて泣いた
665 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 21:08:29 ] func)( が funcX に見えて謎の会話に見えた…
666 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 21:12:49 ] >>664 haskell記法で書けばこうか func :: ((a -> b) -> (c -> d)) -> e
667 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 21:55:31 ] void func(void (*(l*)(void (*)(void)))(void)) ; auto func(auto (*)( auto (*)() -> void ) -> auto (*)() -> void ) -> void ; 新しい関数宣言の文法で書いたら、VC10はクラッシュ。gcc 4.5はコンパイルエラー。 どちらも、一応は実装しているんだが。 まだまだC++0xには程遠いな。
668 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:04:25 ] >>664 signal関数か
669 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:34:31 ] >>667 の解説おねがい
670 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:35:34 ] 心の目で読むんだ
671 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:46:26 ] 誰も実装できないような規格を作ってて どこへ向かうのですか!? と禿を問い詰めたい。
672 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:55:43 ] しかし、規格を作ったら誰かが実装してしまう。それがC++だろ。 exportだって1人くらいは実装したやついたし。
673 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:58:44 ] >>668 「関数ポインタを引数に取って関数ポインタを返す関数ポインタを引数に取る関数」の例。 ただ、上はちょっとtypoした。lが混じってる。 ×void func(void (*(l*)(void (*)(void)))(void)) ; ○void func(void (*(*)(void (*)(void)))(void)) ;
674 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 03:13:19 ] boostスレでやるネタじゃない罠
675 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 19:47:01 ] spirit.karmaってすごい名前だなw
676 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:49:13 ] Uuidちょっとみてみたが、乱数ベースの生成でintかlongか忘れたけどsizeが4byteな処理系ではバグがある。 報告しようとしたら、修正コードもアップされてた。 ただ、乱数ベースが一番ユニークなID生成方法なライブラリというのは使い道あるのか?
677 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 19:22:19 ] uuidは乱数とmacアドレスとtimeスタンプじゃなかったか guidだったかもしれんが
678 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 19:33:43 ] >>677 ふつう使うのはその生成方法だとは思う。 RFCではそのほかに乱数ベース、ネームスペース付の文字列から生成するなどいくつかバージョンがある。 OSの関数を呼び出す処理がコメントでTODOとして書いてあったが、LinuxのuuidパッケージはGPLだった気がする。 ライセンス的に微妙なのかもしれない。
679 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 21:49:57 ] いくつかアルゴリズムがあったのか オープンソースなスタティックライブラリ内でGPLパッケージをリンクすると 前者もGPLになってしまうのか それともライブラリをリンクした人が考える問題なわけだけど ユーザに丸投げするとboost使うひとがメンドくさすぎるから できるだけ外してるんだろうか.よくわからんな
680 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 00:00:33 ] e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.36 e2fsprogsパッケージはGPLだけど、libuuidは修正BSD WindowsのUuidCreate呼ぶ奴もないし、まだ方針が定まってないだけじゃないの。
681 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 20:29:18 ] program_options って desc.add_options() ("hoge", boost::program_options::value<double>(), "") ("hoge_foo", boost::program_options::value<double>(), ""); みたいに他方のオプションが一方のオプション文字列から始まるとコマンドを認識できないんだな (--hoge_foo をオプションで渡しても --hoge と認識される) 細かいオプションも扱えないしマジでゴミだなこれ
682 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 22:37:18 ] オプションにパラメータを連続で記述できる仕様なんだろうね。 オプション名の長いほうから追加したらどうなるん?
683 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 03:47:59 ] lispに浮気してきたけどboostにもどってきましたよ
684 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 02:46:18 ] boost::mplでlispるんですか?
685 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 02:47:13 ] 全知全能の神ッ!
686 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 05:31:07 ] codepad.org/IjaOu3gt すみません,このコードでth3,th4が実行されないのはc++の仕様でしょうか
687 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 05:38:42 ] なんでth6しかjoin()してないんだ?
688 名前:デフォルトの名無しさん [2010/03/14(日) 05:42:10 ] codepad.org/7CodBLpQ すみません,全部joinする感じでお願いします
689 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 07:38:49 ] コンパイルエラーになってないか
690 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 08:19:01 ] codepadだとコンパイルエラーになるようです あと今回問題のth3,th4が原因で th3.join()とth4.join()でエラーになります それを除けば大丈夫だとおもいます.
691 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:24:00 ] >>688 th3とth4の宣言はそれぞれtest0()、ret_test0()という「関数」を引数にとる「関数のプロトタイプ」と認識する th3とth4のjoin()でコンパイルエラーになるのはオブジェクトが生成されていないから 多分テンプレートコンストラクタ特有の現象 ↓で再現するんじゃないかな? struct CTest { template<typename F>CTest(F f){} void join(){} }; CTest tst( test0() ); // プロトタイプ宣言になってしまう tst.join() // コンパイルエラー(これを外せば一応コンパイルは通る)
692 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:43:27 ] >>691 なるほど! boost::thread th3(test0());は 関数型のtest0 noname(void)を受け取って boost::threadを返す th3という名前の関数のプロトタイプになってしまうんですね. boostというよりc++の問題だったみたいで申し訳ないですが ありがとうございました.
693 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 16:01:47 ] >681 www.boost.org/doc/libs/1_42_0/doc/html/boost/program_options/command_line_style/style_t.html ideone.com/yemWObm2
694 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:45:04 ] 更新しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Fusion] adapt template classes/structs [Math] Use the official boost.math check for long double [Spirit] Spirit: fixed #3806 (spirit/home/support/multi_pass.hpp missing functor_input #include) Added buffering_input_iterator to multi_pass suite adding default_wide char_encoding [Graph] Changed to allow characters that are not 8-bit; added one-bit-per-color color map [Random] Rearrange the componenents in libs/random and create a library for random_device. Fixes #3672 [Asio] Reworked implementation. Fix bug where 0-byte reads were incorrectly passing an eof error_code to the handler. Refs #4023. [Proto] fix error in invocation of callable monomorphic function objects, expression self-assignment creates an assign node [Uuid] Fixed bug in basic_random_generator. It wasn't producing random uuids correctly. 亦、libs_for_build_boost.rarも、bjam.exeをrev.60157に、 ICUを4.4に、zlibを1.2.4にそれぞれアップデート致しました。
695 名前:デフォルトの名無しさん [2010/03/20(土) 22:30:15 ] www.ryppl.org/
696 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:15:54 ] ここで ttp://www.kmonos.net/alang/boost/ おお久々の更新だ。 ◆ Version 1.42.0 と 1.41.0 対応 (2010/03/14) 新規ライブラリに関する Let's Boost のページ…: property_tree (汎用木構造型コンフィグ管理) / uuid (ユニークID生成器)
697 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:22:14 ] ありがたや ありがたや
698 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:27:37 ] property_treeって何だ? なんか便利そうだな。property_treeかうーん。
699 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:30:26 ] uuidとかもう自前で作っちゃいましたがな・・・
700 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:34:05 ] UUIDを動的に生成する事なんてほとんどないから VSに付いてる奴で済んじゃってるな
701 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:46:01 ] 現状の uuid は乱数と sha1 しか生成手段がなくて、マシン固有の値とかから生成する手段は提供されてないみたい。 ちょっと衝突が心配。 "ハードウェアやミドルウェアの提供する機能を使った UUID 生成機能は将来的に実装予定" らしいが…。
702 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:50:03 ] VSでいいならguid使うが unilinuでも使える共通インターフェースが必要なんだよ
703 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 12:39:58 ] uuid、WinではCoCreateGUID()を使うようにはなってないのね
704 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 12:58:20 ] じゃあCoCreateGUIDを使うように修正してboostのcommuに挙げろよ
705 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 14:22:22 ] >>701 sha1の衝突を心配してたらSSLも使えないだろう
706 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 15:28:29 ] SHA-1は2010年問題が頭をよぎってあんまり使いたくない まあ暗号じゃないけどさ
707 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 18:23:47 ] sha1の衝突とか、現実には起こらないから大丈夫だよ。 少なくとも俺らが定年するまでには起こらない。
708 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 18:38:35 ] いざとなったらSHA1と他のハッシュアルゴリズムを組み合わせて 同時に満たしているかを調べる感じで・・・
709 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 18:50:01 ] どっちかというと乱数のほうを気にしたほうがいいんじゃないか。
710 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 19:01:18 ] ランダムデバイスから取った種でmt19937使うだけの安直な方法をとっている
711 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 19:54:39 ] それで問題がないなら「安直」ではなくて「分かりやすい」と言うべき
712 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:14:12 ] 問題あるがな
713 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:17:57 ] 問題があるなら「安直」ではなく「粗雑」というべき
714 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:59:15 ] 文字列からuuidを作る方法があるなんてはじめて知った。 ランダムだけかと思った。
715 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 16:23:56 ] boost/serializationを使ってメンバにvectorを含むクラスをシリアライズしたのですが、 データを復元する際 boost::archive::binary_iarchiveから>>を使って読み込む際に std::length_errorが返ってきてしまいます。 これは仕様なのでしょうか?
716 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:50:49 ] まずバージョンと環境と再現コードを貼ったら?
717 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:41:16 ] 更新しました。 ttp://booster.x0.to 以下更新内容の一部 [Asio] Fix epoll_reactor bug where cancelled operations would complete with a "success" error_code. Use cancel() to avoid Windows behaviour where a connection is reset if the socket is closed while there is a pending read operation. [Proto] try again to get proto assignment overloads right add an appendix for release notes [Wave] Wave: added new preprocessing hook: emit_line_directive, added corresponding functionality to wave driver Wave: Fixed the wave driver application to strip leading and trailing whitespace from macro names specified on the command line using -U. [Spirit] Spirit: Fixing bug in display_attribute_of_parser utility. Straight UTF-8 implementation Spirit: Added missing namespace qualification When supplying 3 arguments for the adder, require the third (val) argument. Otherwise, it will be ambiguous with the 2-param version. Spirit: renaming directory [Unordered] Add quick_erase to the unordered containers. Refs #3966. [Graph] Fixed warning (and probable bug) in test case Re-enabled Spirit-based parser (but not by default) and cleaned up Graphviz reader implementation [Numeric] storage.hpp: see #3968, applied patch to use references instead of copies in swap implementations [Functional] Remove optimization which causes 0.5 to hash to 0. Refs #4038. [Python] Handle the destructor call in a way that keeps msvc happy. Fixes #4003 亦、libs_for_build_boost.rarも、bjam.exeをrev.60778にアップデート致しました。
718 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:49:25 ] 関係ないけど boost.progres_timer で catch (...) {} // eat any exceptions ってコードがあるんだがwww すごい潔すぎる
719 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 00:53:31 ] 動けばよかろうなのだ
720 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 09:18:00 ] デストラクタでよくやる方法ジャマイカ
721 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:18:00 ] >>720 さすがに空っぽはねーよ。ログなりなんなり出すだろ。
722 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:20:12 ] >>718 納期寸前によくやる方法ジャマイカ
723 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 11:21:04 ] エラー忘却型コンピューティング - Wikipedia ttp://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%BC%E5%BF%98%E5%8D%B4%E5%9E%8B%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0
724 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 13:03:51 ] 単に握りつぶすのとエラー忘却するのは意味合いが違うことないかw
725 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 13:54:11 ] > エラー忘却型コンピューティングにおいては、 > データの不整合が発見されても不整合が発見されたというログだけを残し、 > 処理を継続させるのが特徴。 ということで、 catch (std::cerr << "error!" << std::endl;) {} // eat any exceptions で解決!
726 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 13:56:05 ] せめてどこでどんなエラーが出たか書かないと意味ないと思うの
727 名前:725 mailto:sage [2010/03/31(水) 14:00:41 ] >>726 さすがにジョークですお
728 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 14:17:18 ] >>725 文法おかしいよ。
729 名前:725 mailto:sage [2010/03/31(水) 14:22:19 ] >>728 ちょーはずかすい catch (...) {std::cerr << "error!" << std::endl;} // eat any exceptions
730 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 23:49:31 ] 更新しました。 ttp://booster.x0.to 以下更新内容の一部 [Spirit] Spirit: added Karma generator for outputting arbitrary sexpr Spirit: improving customization points for karma alternatives [Asio] Change the resolver implementation to no longer require the typedefs Don't allow speculative reads when message_out_of_band is specified. Don't perform a speculative read when an out-of-band read is pending. New kqueue reactor implementation using one-shot event registration. Fix so that lock is not held while reactor is running. [Mpl] Fix for #1992 [Range] Boost.RangeEx merged into Boost.Range [Graph] Added missing include [Property_map] Converted dynamic_properties to use boost::shared_ptr instead of std::auto_ptr Added vertex_bundle and edge_bundle property maps, plus fixed some property map allocation bugs [Detail] Uncomment ifdef test that was accidentally left commented. [Unordered] Use boost::throw_exception in unordered. [Iostreams] Explicitly qualify call to equal for compilers which find it ambiguous. [Thread] Fix use of rvalue ref in futures
731 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 19:17:43 ] 困った、ちょっと質問。 tempはテンプレート型で、x、yをメンバに持つ構造体が今入っている。 const static char *SPEACE = {"^"}; char line[256]; std::list<std::string> str; while( !ifs.eof() ){ ifs.getline(line, sizeof(line)); boost::algorithm::split( str , line, boost::is_any_of( SPEACE ) ); temp.pos.x = boost::lexical_cast<float>( str[0] ); temp.vec.y = boost::lexical_cast<float>( str[1] ); } とするとエラーが出る…。 vectorにすると通るんだけど、この後のremove_ifの問題でlistでやりたい。 どうにかする方法を教えて欲しい。
732 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 19:30:12 ] ttp://www.boost.org/doc/libs/1_42_0/doc/html/boost/algorithm/split_id614972.html
733 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 19:54:24 ] できそうだけどなぁ
734 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:14:25 ] >>732 あ、簡単に解決したw 一瞬作り直しかと思ってヒヤっとした、騒がしてすまん
735 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:38:25 ] 何をどうしたんだい
736 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 05:40:43 ] boostのpendingってフォルダの中にあるファイルは使ってもいいんですか? 説明を読むと「簡単だが少し遅い。テンプレートで高速に書き直す必要が ある」とか書いてあるんですけど、タイムスタンプが既に3年前で放置されています
737 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 06:02:06 ] >>736 仕様が不明確だったりバグ持ちだったり将来のバージョンで同じように使えなくなっても 文句は言えないけど、それを承知で使うんならかまわないでしょう。
738 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 11:04:35 ] >>737 レスありがとう 実はboost::stringtokなんですよ strtok()は便利だけどこのstd::string版がpendingフォルダに 入っているので不安になったのです
739 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 20:52:59 ] >>738 boost::tokenizerって知ってるか?
740 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 00:00:51 ] >>738 boost::tokenizer ttp://homepage2.nifty.com/c-labo/boost_tokenizer.html この解説を読んでこっちを使うべし!
741 名前:デフォルトの名無しさん [2010/04/10(土) 14:40:24 ] Old Nabble - Boost - Dev - GSOC BigInt Licensing Issues old.nabble.com/GSOC-BigInt-Licensing-Issues-td28070540.html このやりとりって結局どういう事になっているのでしょうか? 質問者swagat konchada :: Boost.BigIntはGMPを使っているからLGPLじゃないのですか? 解答者Rob Stewart :: ??? 解答者Felipe Tanus-2 :: ??? 後2つが分かりませんでした。 どなたか教えていただけますでしょうか。
742 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 20:52:27 ] swagat: BigIntはGMPのラッパーじゃん。boostのライセンスと互換性ないよ。 どうすべ。当面の間GMP周りのラッピングを進めるか、それともBigIntのboost版を始めるかい。 rob: GMPとかその類が提供しているものを再実装しないで GMPはBigIntがサポートする バックエンドの一つにすべき。うんぬん。 felipe: スクラッチから作るなんてバカでかいことをする時間はたぶんない。現実的になろうぜ。 ※当方は英検3級の語学力しかないので上記の内容は全く保証できない
743 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 22:57:02 ] となると Boost.BigInt はまさか Boost Software License でリリースできないわけですか? しかもbigintディレクトリを見てみると全てのファイルの最終更新日が 2009年8月21日になっていて、全然更新しようという気が見られないですよね。 ・・・バグならともかくライセンスが死んでいるとなると かなり致命的でBoost.BigIntは来ないんでしょうか。 泣きたくなりました
744 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 23:03:23 ] GPL汚染はマジ勘弁
745 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 23:07:45 ] Boost.BigInt みたいに自動で無限精度整数まで扱ってくれる ライブラリって他にあるのかねぇ? 割と簡単に作れそうだが。 ・・・いや俺には無理だがな!
746 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 23:10:18 ] RealLibでいいんじゃね 実数だけど
747 名前: ◆qZPJp5tL6Q mailto:sage [2010/04/10(土) 23:14:48 ] >>746 無限精度実数ライブラリRealLib ttp://pc12.2ch.net/test/read.cgi/tech/1248060999/ というスレを立てた俺が来ましたよ。 あのライブラリは上方向にも下方向にも実は限界がある。 下方向(絶対値が小さい方;0に近い方)は実質的に問題にならないほどの精度があるが、 上方向(絶対値がでかい方;±∞の方)は結構すぐオーバーフローする。 あとそもそもRealLibのライセンスってGPLとかだった気がする よーしらんが。
748 名前:デフォルトの名無しさん [2010/04/10(土) 23:15:06 ] 無限精度ってグラハム数の任意の桁とか求められるわけ?
749 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 23:23:16 ] >>748 だから>>747 なんだってば。 無理っす!
750 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 23:28:27 ] 俺は自分で多倍精度整数ライブラリ作ってるよー 平方とkaratsuba法で乗算の折り合い付けるのめんどかった
751 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 23:35:50 ] せっかくだからbigintの話はこっちで Boost C++ Libraries Sandbox pc12.2ch.net/test/read.cgi/tech/1250396380/
752 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 23:36:39 ] >>751 下らない画像スレになってるぞ
753 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 00:00:28 ] >>751 保守が半端ねぇw 荒らしすら来ないってよっぽどだな
754 名前:741 [2010/04/11(日) 00:24:24 ] Boost.BigInt のソースコードを読んできました。 ・・・デフォルトでGMP非依存になってますね。 #define BOOST_BIGINT_HAS_GMP_SUPPORT を定義した上で #include <boost/bigint/bigint.hpp> とした場合に限り、GMPが使われるようです。 ということで、特に Boost.BigInt を Boost Software License でリリースする事には 問題は無いようです。
755 名前:741 [2010/04/11(日) 00:26:31 ] 私は念のために 大文字小文字を区別せずgmpの文字を含む部分を全て削除した bigintを使って見ましたが正常にどうさするようです。 ・・・だと思うのですが、 私以上にBoostのソースコードを読む事に長けている方は 必ずやいらっしゃると思うので、 有識者の方、ご確認いただけますでしょうか。
756 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 01:39:47 ] Blight って何だと思ったら BigInt だた
757 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 07:17:11 ] とりあえずRealLibとか言い出す奴は全く完全に的外れだからもう少し調べてくれ
758 名前:デフォルトの名無しさん [2010/04/11(日) 13:22:48 ] ところでBoostBigintがBoost C++正式リリースに入れないのは何故? ドキュメントがないから? もしかしてバグがある?