[過去ログ] Boost総合スレ part8 (1001レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
289: 2009/10/24(土) 13:15:03 AAS
外部リンク[html]:www.boost.org
にあるwaveのサンプルプログラムの、while(first != last) のiteratorの比較で
boost::wave::preprocess_exception例外投げるんだけど、なんで?
context の設定だけ
ctx.add_macro_definition("_WIN32");
ctx.add_macro_definition("_MSC_VER=1500");
ctx.set_language(boost::wave::language_support(boost::wave::support_cpp));
ctx.add_sysinclude_path("E:\\lib\\boost\\boost_1_39");
ctx.add_sysinclude_path("C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\include");
な風にしたけど・・・
290: 2009/10/24(土) 16:46:27 AAS
>>287
別サイトから、CMakeの分だけダウンロードするようになった
291: 2009/10/24(土) 17:07:41 AAS
cmakeみたいなゴミ使わずにbjam使いましょう
292(1): 2009/10/24(土) 17:11:27 AAS
bjamとかカスだし。
293: 2009/10/24(土) 17:58:44 AAS
ゴミクズじゃないビルドシステムなど無い
294(1): 2009/10/24(土) 18:01:27 AAS
bjamなんてドキュメント読めば2秒で理解できるぞ
295: 2009/10/24(土) 20:16:13 AAS
ドキュメント読むのが億劫で読んでいなくてごめんなさい。
296(1): 2009/10/24(土) 20:26:11 AAS
事実上CMake対応は放棄か。
297: 2009/10/24(土) 20:48:02 AAS
なんでCMakeでビルドしたがるの?
bjamがあるじゃん。
Boostのビルドにおいて
CMakeがbjamを上回ることってなんかあるの?
特に>>292
298: 2009/10/24(土) 21:13:38 AAS
>>294
2秒でドキュメントは読めない
299(1): 2009/10/24(土) 21:18:03 AAS
ドキュメントを隅々まで読み終えてから、もう2秒必要ということなんだろう。
300: 2009/10/24(土) 21:21:11 AAS
えっくすこおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおど
301: 2009/10/24(土) 21:22:05 AAS
CMAKEなんてドキュメント読まなくても理解できたぞ。
ところで、なんで>>296みたいなアホがいるんだ。
ほんとに質が低いなこのスレは。
302: 2009/10/24(土) 21:36:33 AAS
自分で書くのならbjamよりcmakeの方が楽だった
y-hamigakiさんの書いた資料のおかげというのもあるけど
CMakeはprecompiled headerを使うのだけでも一苦労、
flymake用のsyntax check用の高速にビルドできるタスクを定義するのは並大抵のもんじゃないときた
cmake .とかするだけの使い方するなら問題ないけどな
303: 2009/10/24(土) 22:19:51 AAS
>>299
なるほど。
なら可能だ
304: 2009/10/25(日) 00:26:41 AAS
cmakeは使ったことないけど、bjam(+boost-build)はそこそこ対応コンパイラが多いのと、
自動的にdebug/releaseビルドのobjファイルを別場所に配置してくれるので切り替えが楽という利点があるな。
逆に問題はドキュメントが異様に少ないこと。
でもビルドに必要な大抵のことは(きちんとドキュメント化されているかは別として)できるかな。
305(1): 2009/10/27(火) 05:02:38 AAS
Check failed in file /usr/include/boost/numeric/ublas/vector_expression.hpp at line 548:
size1 == size2
terminate called after throwing an instance of 'boost::numeric::ublas::bad_argument'
what(): bad argument
Aborted
このエラーの対処法教えてください
306(1): 2009/10/27(火) 07:00:59 AAS
>>305 外部リンク[html]:osdir.com
307: 2009/10/27(火) 11:27:08 AAS
>>306
ありがとうございます
参考にしてみます
308(1): 2009/10/28(水) 23:41:26 AAS
bool pred(int n) { return n; }
struct hoge { int foo() { return 0; } };
struct bar { hoge hoge_; hoge fuga() { return hoge_; } };
std::vector<bar> bars;
std::count_if(bars.begin(), bars.end(), pred(bind(&bar::fuga, _1)().foo()));
bars の各インスタンス _1 のうち、pref(_1.fuga().foo()) を満たす物の個数を数えたくて
上記 std::count_if のように boost.lambda を用いて呼び出してみたのですが,
コンパイルエラーとなってしまいました.
上記のような目的を達成するにはどうすればよいのでしょうか?
C++ 0x 対応であればなんとか出来そうな気がしますが、環境が VC2008 なので使え
ません.lambda や bind で書けるのでしょうか?詳しい人教えて下さい・・・
309: 2009/10/29(木) 00:03:07 AAS
>308
これでどないでしょ。
bool pred(int n) { return n; }
// 恐らく一時オブジェクトに対する参照が必要になるので const が必要
struct hoge { int foo() const { return 0; } };
struct bar { hoge hoge_; hoge fuga() { return hoge_; } };
std::count_if(bars.begin(), bars.end(), bind(pred, bind(&hoge::foo, bind(&bar::fuga, _1))));
310: 2009/10/29(木) 00:16:06 AAS
こうなると名にやってんのか逆に分かりにくいな
311: 2009/10/29(木) 06:55:58 AAS
#define _ bind
std::count_if(bars.begin(), bars.end(),
_(pred,
_(&hoge::foo,
_(&bar::fuga,
_1))));
#undef _
312: [―{}@{}@{}-] 2009/10/29(木) 14:14:43 AAS
というか0xならもっと分かりやすく書けるの?
313: 2009/10/29(木) 14:22:38 AAS
std::count_if(bars.begin(), bars.end(),
[] (bar& x) -> bool { return pred(x.fuga().foo()); })
314: 2009/10/29(木) 14:24:00 AAS
あ、戻り値の型はコンパイラにまかせてもいいんだったっけ。
std::count_if(bars.begin(), bars.end(),
[] (bar& x) { return pred(x.fuga().foo()); })
315: 2009/10/30(金) 22:23:22 AAS
更新しました。今週はsmart_ptr, thread, regex, xpressiveといった割と使われていそうなライブラリに
fixや仕様変更が入っています。
外部リンク:booster.x0.to
以下更新内容の一部
[Spirit]
Spirit: more work on attribute traits,
allowing optional for alternatives, maxwidth supports extracting overhang
[Fusion]
fix for #2355: discrepancy between std::accumulate and fusion::accumulate
[Regex]
Tighten up error handling and checking.
[Unordered]
Remove 'grouped' from hash_table as it isn't used and is a bit confusing.
[Circular_buffer]
circular_buffer: added erase_begin and erase_end methods
316(1): 2009/10/30(金) 22:24:35 AAS
Fix for bug #2067 --- use shared_mutex for thread_group rather than a simple mutex
Fix for move assignment of unique_lock if rvalue refs supported
More fixes for compilers with rvalue ref support
[Xpressive]
nested results uses a custom list type that allows incomplete types,
does no dynamic allocation in the default constructor,
and has a guarnteed O(1) splice; fixes #3278
[Smart_ptr]
Renamed enable_shared_from_this2 to enable_shared_from_raw and
added shared_from_raw free function. These changes fix the pointer
value in shared_ptr which were obtained before an external shared_ptr has
taken ownership of the object (for example when a shared_ptr to
this is obtained in an object's constructor).
[Numeric]
see #3501: Reusing concepts from different compile units yields multiple defined symbols (Incomplete)
* removed inlines that were added with the last commit
* added anonymous namespace to make functions local to compilation unit
317: 2009/10/30(金) 22:27:06 AAS
すみません、>>316はミスです。315の後こちらを続けて下さい
[Thread]
Fix for bug #2067 --- use shared_mutex for thread_group rather than a simple mutex
Fix for move assignment of unique_lock if rvalue refs supported
More fixes for compilers with rvalue ref support
[Xpressive]
nested results uses a custom list type that allows incomplete types,
does no dynamic allocation in the default constructor,
and has a guarnteed O(1) splice; fixes #3278
[Smart_ptr]
Renamed enable_shared_from_this2 to enable_shared_from_raw and
added shared_from_raw free function. These changes fix the pointer
value in shared_ptr which were obtained before an external shared_ptr has
taken ownership of the object (for example when a shared_ptr to
this is obtained in an object's constructor).
[Numeric]
see #3501: Reusing concepts from different compile units yields multiple defined symbols (Incomplete)
* removed inlines that were added with the last commit
* added anonymous namespace to make functions local to compilation unit
318(1): 2009/11/06(金) 22:04:19 AAS
外部リンク:booster.x0.to
以下更新内容の一部
[Spirit]
Spirit: fixing lex::tokenize_and_parse functions
Fix. Disallow alpha or underscore after "int"
Spirit: fixing usage of plain functions as lexer semantic actions
Spirit: replaced long long by boost::long_long_type
[Ptr_container]
外部リンク:svn.boost.org
[Fusion]
Fusion: adding a missing 'const'
associative_sequence_tag -> associative_tag
[Regex]
Added support for function objects as well as strings when formatting.
[Program_options]
Fix 'ambiguous else clause' compiler warning. Fixes #3556.
Put description to next line if we'd overflow otherwise. Fixes #689.
Use extra parens to silence warnings re &&/|| on same level.
[Xpressive]
fix infinite loop with some uses of \Q...\E quotemeta, fixes #3586
[Math]
remove surplus const-qualifiers.
[Wave]
Wave: added missing header file and special handling for stlport
[Smart_ptr]
Added weak_from_raw(), for use in conjunction with
enable_shared_from_raw base class.
亦、how_to_build.txt及びlibs_for_build_boost.rar内bjam.exe, readme.txtも併せて更新致しました。
それから、公式でのリリース版バイナリの配布が開始されました。
同じくBoost 1.41 betaの配布も始まっています。
外部リンク:sourceforge.net
319: 2009/11/07(土) 05:42:37 AAS
>>318乙
320(2): 2009/11/10(火) 10:06:18 AAS
template<class F>
struct is_lambda_impl
{
static const bool value = false;
};
template<class F, class A0>
struct is_lambda_impl<boost::lambda::lambda_functor<F>(A0)>
: public boost::lambda::lambda_functor<F>::template sig<boost::lambda::tuple<boost::lambda::lambda_functor<F A0> >
{
static const bool value = true;
};
template<class F, class A0, class A1>
struct is_lambda_impl<boost::lambda::lambda_functor<F> (A0, A1)>
: public boost::lambda::lambda_functor<F>::template sig<boost::lambda::tuple<boost::lambda::lambda_functor<F A0, A1> >
{
static const bool value = true;
};
template<class F>
bool is_lambda_(F)
{
return is_lambda_impl<F(????)>::value;
}
int main()
{
std::cout << is_lambda_((boost::lambda::_1 * 2)) << "\n";
std::cout << is_lambda_(std::plus<int>()) << "\n";
}
321: 2009/11/10(火) 10:07:50 AAS
お遊びですが・・・
>>320 のプログラムは、lambdaか否かを判断するmeta function を作ろうとした
のですが、???? の部分で困っています。
boost::lambda::_1 * 2 とある時、引数の型が知りたい。
でも、これは無理ですよね。
簡単言うと、is_lambda_implをlambda式に応じて呼び分けしたいのです。
何かいい案ないですか?
322(1): 2009/11/10(火) 10:14:14 AAS
>>320
is_lambda_impl<F>::value じゃないの?
そうじゃなければ何がしたいのかよくわからん。
323(1): 2009/11/10(火) 10:26:39 AAS
>>322
それじゃ駄目ポ。
template<class F>
struct is_lambda_impl
{
static const bool value = false;
};
にいっちゃいます。
324(2): 2009/11/10(火) 10:29:47 AAS
>>323
なら ???? の部分じゃなくて特殊化ができてないんじゃないの?
325(1): 2009/11/10(火) 10:34:21 AAS
>>324
あんまり、そこに拘る必要はないです。
lambdaか否かを判断するmeta function が作れればおk。
326: 2009/11/10(火) 10:40:42 AAS
>>324
F(????)としてるのは、F(int)とすれば
template<class F, class A0>
struct is_lambda_impl<boost::lambda::lambda_functor<F>(A0)>
が選択されるからです。
int 部分にはboost::lambda::_1の型か何か別のものが入ると思う。
_1 や _2 の数によって F(A0) F(A0, A1) の様な形になると思う。
327(1): 2009/11/10(火) 11:00:54 AAS
こゆこと? (動作確認してないけど)
template<template <class f> class T, class F>
bool is_lambda_(T<F>)
{
return is_lambda_impl<T<F> >::value;
}
template<template <class f, class a0> class T, class F, class A0>
bool is_lambda_(T<F, A0>)
{
return is_lambda_impl<T<F, A0> >::value;
}
template<template <class f, class a0, class a1> class T, class F, class A0, class A1>
bool is_lambda_(T<F, A0, A1>)
{
return is_lambda_impl<T<F, A0, A1> >::value;
}
328(2): 2009/11/10(火) 11:01:01 AAS
>>325
まずは、何か lambda expression だけの特性を探すことだね。
unlambda してみて違う型が返ってくるようなら true になる関数とか?
329: 2009/11/10(火) 11:23:13 AAS
>>328
unlambdaすると false になります。
330: 2009/11/10(火) 20:24:31 AAS
>>327
駄目ポ。
template<template <class f> class T, class F>
bool is_lambda_(T<F>)
全て↑が選択されて、falseになる
331: 2009/11/11(水) 01:34:45 AAS
>>328
遊びだとか実装方法は問わないとか言ってるから、 unlambda() のソースから
扱いを分けてるところパクってきたほうが早そう。
332: 2009/11/11(水) 11:41:35 AAS
できた。でもg++でコンパイル通らないorz
外部リンク:codepad.org
333: 2009/11/11(水) 17:16:17 AAS
g++でもできた。単純なミスだった。
外部リンク:codepad.org
334: 2009/11/13(金) 23:53:06 AAS
更新しました。今週はコンパイル時の警告の抑制が中心の様です。
外部リンク:booster.x0.to
以下更新内容の一部
[Spirit]
Spirit: fixing bug in alternatives taking optionals
Spirit: started to integrate re2c style code generator for lexer
[Regex]
Improved error messages generated for thrown exceptions.
[Program_options]
Fix wordwrapping in presense of default parameters.
Don't strip quotes from values.
[Smart_ptr]
Fixed access to enable_shared_from_raw::weak_this_ when
BOOST_NO_MEMBER_TEMPLATE_FRIENDS is defined.
[Unordered]
Change unordered move tests to be more lenient on compilers without NRVO.
[System]
System: Correct too_many_symbolic_link_levels misspelling. Fix #3559.
335: 2009/11/13(金) 23:53:49 AAS
[Graph]
Changed to boost::unordered_* containers instead of compiler-specific ones;
made hashed containers enabled always
[Integer]
Reverted Integer back to Release branch state - as per devel-list discussions.
[Xpressive]
do NOT copy singular iterators, fixes #3538
[Iostreams]
Allocate exceptions on the stack, not the heap. Refs #3612, by Richard Smith.
Fix unthrown exceptions. Refs #3311.
Fix mapped file errors in windows. Refs #3505.
[Exeption]
Prevent ADL from finding other dispatch functions or types. Required for #2094.
[Fusion]
avoid iterator invalidation in segmented_range, fixes #3583
亦、libs_for_build_boost.rar内bjam.exeも併せて更新致しました。
336(2): 2009/11/14(土) 15:45:45 AAS
Boost 1.41 の
boost/function_types/detail/synthesize_impl/arity20_0.hpp
boost/function_types/detail/synthesize_impl/arity30_0.hpp
がおかしくね?
なんかソースが途中で切れたみたいになってる。
手元で確認できるかぎりでは、svn56164 で正常。
svn57242 ではおかしくなってる。
337: 2009/11/15(日) 02:14:23 AAS
お前だけじゃね?
こっちはそんなことないが。
338: 2009/11/15(日) 09:23:37 AAS
>>336
ちゃんとSubversion使ってる?
339: 2009/11/15(日) 10:12:48 AAS
>>336
ほんとだ。
リビジョン番号 56305以降がおかしい。
stefanが更新してる
340: 2009/11/15(日) 11:08:03 AAS
まったくもう、ステフったら……
341: 2009/11/16(月) 16:27:52 AAS
外部リンク:codepad.org
Boost.Propertyを使ったお試しコードを書いたのですが、Property用のメンバーをstringにすると以下の様な
エラーになるんだけど、原因分かる人いる?
error C2679: 二項演算子 '<<' : 型 'Person::_PropertyNamaeImpl_' の右オペランドを扱う演算子が見つかりません (または変換できません)。 e:\property_test.cpp 57
property_get::operator return_type()まで来ないので、ADL系の様な気がする・・・
なぜ、来ないのか分からない。
342: 2009/11/18(水) 06:38:03 AAS
boost::function、bind、refの組み合わせってboost::spiritのセマンティックアクションに
渡せますが、tr1の物だとダメなようです。
これらのようにtr1とboostの物での違いの、一覧みたいなのは無いでしょうか?
343: 2009/11/20(金) 23:35:32 AAS
[Spirit]
Spirit: more static lexer updates
Spirit: added new Qi example
Spirit: updating example
Don't match substrings in symbols::find.
Added Nabialek Trick Example
typeof example
Implement prefix_find.
BOOST_SPIRIT_AUTO added
Spirit: bumped version number after the release of 1.41
Spirit: fixed references to corresponding articles at Spirit site.
[Xpressive]
use boost::optional's swap instead of std::swap
[Random]
Allow arbitrary values to be used as seeds for linear_congruential,
linear_feedback_shift, and any generators that depend on them. Fixes #3516
Fix min/max problems
344: 2009/11/20(金) 23:36:07 AAS
[Exeption]
Fixed unqualified use of size_t in object_hex_dump.hpp
Bug ticket 3641, also merging other fixes from the Release branch.
[Format]
copy-constructor now copies .dumped_ , fixing Ticket #3610
fixing elementary syntax error introduced in rev. 57734
[Functional]
Turn on warnings as errors for the hash tests.
[Program_options]
Add option name to a few exception classes. Fixes #3423. Patch from Sascha Ochsenknecht.
correct usage of tokenizer, memory bug, Fixes #3525
[Graph]
Fix compilation error due to undefined fprintf/stderr.
[Unordered]
Use 'E' for key extractor, freeing 'K' for key.
Support incomplete template parameters to unordered containers.
以上更新内容の一部
外部リンク:booster.x0.to
345: 2009/11/21(土) 01:53:49 AAS
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(2): 2009/11/24(火) 01:34:40 AAS
boost::iostreamsを使ってストリームりました。
このストリームを外から見たときはboostを使ったように見えないように、ダウンキャストしてostreamか何かに入れて置きたいのですが、どうにもうまくいきません。
どうしたら良いのでしょうか。
std::ostream a = boost::iostreams::stream<boost::iostreams::null_sink>();
こんなことがしたいです。
347: 2009/11/24(火) 02:01:44 AAS
>>346
たぶん、C++0xだとそれでコンパイルできると思う。
とりあえず現状ではtypedef boost::iostreams::stream<hogehoge> my_stream_type;みたいにごまかすくらいしかないと思う。
もちろん、オブジェクトを関数の引数として渡すときには、もちろんstd::ostream&やstd::istream&で受け取れるけど。
348: 346 2009/11/24(火) 02:16:53 AAS
>>.347
解答ありがとうございます。出来ませんか・・・。
349: 2009/11/24(火) 05:18:50 AAS
メンバ変数なり関数ローカルなstatic変数にして、
std::ostream& を返す取得関数で公開すれば具象型はいちおう隠蔽できるけど。
それで不都合あったり?
350: 2009/11/24(火) 18:34:11 AAS
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: 2009/11/27(金) 19:25:51 AAS
更新しました。1.41正式版がリリースされてから一週間経ってもtrunkが1.42に移行しておりませんので、
マイナーバージョンアップ版が出るかもしれませんね。
外部リンク: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: 2009/12/03(木) 02:46:03 AAS
intrusive_ptrのコンストラクタにexplicitがついてないのはなんでなんだぜ?
デフォルト値があるだけで、厳密には1引数じゃないから?
353(1): 2009/12/03(木) 03:12:25 AAS
intrusive_ptr & operator=(T * rhs)
があるね
354: 2009/12/03(木) 13:33:43 AAS
boostのコンパイル済み.libって、同じコンパイラでも内部で使用するクラスの実装、
たとえばSTLが違う場合(VC++で標準STLかSTLPortか)にリンクしても問題ない?
標準STLでもセキュリティ強化の#defineを指定すると実装内容が変わったりするし・・・
355: 2009/12/03(木) 17:13:48 AAS
STLPortはBoostビルド時に専用のコンフィグコマンドがあるので、
問題があるかどうかは知らんけどとりあえず自前でビルドして使った方がいいと思う
356: 2009/12/04(金) 04:02:55 AAS
>>353
あー、intrusive_ptrに対応してるクラスなら、
そのポインタから安全に変換できるはずだからexplicitは必要ないってことか。
357(1): 2009/12/04(金) 19:24:17 AAS
更新しました。SVNは1.42に移行しました。
外部リンク: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: 2009/12/05(土) 14:43:24 AAS
使ってないが乙
359: 2009/12/05(土) 14:45:35 AAS
>>357
sankusu otsu
360: 2009/12/07(月) 18:00:18 AAS
VS2008を使っているのですが、なぜかthreadだけリンカエラーがでます。
↓こんな感じで
1>LINK : fatal error LNK1104: ファイル 'libboost_thread-vc90-mt-sgd-1_40.lib' を開くことができません。
同じcppファイルの中でも、他のやつ(unordered_mapとか)は問題なく使えてるのに、threadだけでます。
だれか解決法を知っている方がいたらご教授を……orz
361(1): 2009/12/07(月) 18:03:23 AAS
boostをちゃんとインストールしよう。
そのままだとヘッダだけで使えるライブラリしか使えないよ。
362: 2009/12/07(月) 18:47:25 AAS
>>361
解決しました。
インストールはしていたのですが、どうやらライブラリのパス指定が間違っていたようです。
標準に指定されるディレクトリから変更した場合、そことは別の場所にライブラリフォルダができてしまうようで……。
コマンドプロントのメッセージを追ってたら気付くことができました……。
どうも、ありがとうございました。
363: 2009/12/08(火) 23:50:50 AAS
#include <boost/spirit/utility/functor_parser.hpp>
では警告が出るから
#include <boost/spirit/include/classic_functor_parser.hpp>
を使うと、
error: expected class-name before '<' token
やらのエラーで今度はコンパイル出来ない。(#^ω^)
364: 2009/12/09(水) 00:18:19 AAS
自己解決。
namespace が boost::spirit::classic になったのか。失礼した。
365: 2009/12/09(水) 06:37:45 AAS
ここにもspiritの罠に引っかかった生け贄が一人いたか。
俺もだ。
366: 2009/12/10(木) 04:16:08 AAS
コンテナフレームワークライブラリはどこですか?
367: 2009/12/11(金) 13:19:19 AAS
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(1): 2009/12/11(金) 14:00:00 AAS
boost::thread thr_tmp(boost::bind(&Hoge::fanc, &tmp, 10, 20));
でx=10, y=20になるが
あとfancじゃなくてfuncではなかろうか
369: 2009/12/11(金) 14:02:12 AAS
368はVC++2008ね。
上記でだめならコンパイラ依存問題かも
370: 2009/12/11(金) 14:19:44 AAS
>>368
解決しました。
ありがとうございました!
371: 2009/12/12(土) 09:02:35 AAS
fack youのコピペ思い出した。
372: 2009/12/12(土) 10:10:20 AAS
仲良くなった。
373(1): 2009/12/13(日) 09:58:14 AAS
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: 2009/12/13(日) 10:23:51 AAS
struct hoge {
static int const i = 100;
static bool const b = i < 0;
hoge() { BOOST_STATIC_WARNING(b); };
};
これでどうだろう
375: 2009/12/14(月) 00:16:47 AAS
勉強会のshared_ptrの発表聞きたいんだけど「えっと」が強烈に心を折りにくる。
376: 2009/12/14(月) 00:23:33 AAS
しばらく聞いてたら慣れたよw
377(2): 2009/12/14(月) 14:17:23 AAS
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(1): 2009/12/14(月) 14:37:08 AAS
lexical_castを読むと、charかwchar_tのどっちか限定で処理するっぽいから
stringとwstringの同時使用ができないのでは
379: 2009/12/14(月) 14:40:26 AAS
>>377
>stirng str;
string str
ですね。
本筋ではないのですが一応元ソースではちゃんとしてます。
380: 2009/12/14(月) 14:44:19 AAS
>>378
つまり、stringをwstringにキャストしようとしても、
そもそもlexical_cast内ではふたつを同じ型として扱ってるので、
キャストできないということですか……?
381(1): 2009/12/14(月) 14:45:55 AAS
引数からどちらの文字列型を使うか判定しているので、その結果生成される
内部処理ストリームがWide変換/逆変換をサポートしていない限り非対応ということに。
382: 2009/12/14(月) 14:55:34 AAS
>>381
なるほど、ありがとうございました。
設計をみなおすか……。
全部2バイト文字にしたあと処理できたら楽になるのになぁ。
ユニコードは三点リーダーが汚くなるから使いたくないし……。
383: 2009/12/14(月) 15:07:30 AAS
本件とずれるけど、lexical_castのドキュメント
外部リンク[htm]:www.boost.org
にあるサンプル
>>void log_errno(int yoko)
>>{
>> log_message("Error " + boost::lexical_cast<std::string>(yoko) + ": " + strerror(yoko));
>>}
yoko?
要項?違うか
384(1): 2009/12/14(月) 21:23:32 AAS
Boost.Propertytree
というlibraryがあるらしいが、もう正規のものなの?
いつの間に採用されたんだ。
385: 2009/12/15(火) 18:38:35 AAS
1.41から正規
386: 2009/12/15(火) 18:40:34 AAS
おお、では勉強しなきゃなるまいな。
ありがとう。
387: 2009/12/15(火) 19:04:02 AAS
C#のプロパティみたいなものかと思ったら、streamの類か。
388: 2009/12/16(水) 22:37:56 AAS
>384
余談だけど
外部リンク:www.boost.org
ここの First Release 見ればいつから正規かは分かる。
しかし Property Tree のレビューって 2006 年 4 月だったんだな。
389: 373 2009/12/17(木) 08:08:52 AAS
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: 2009/12/17(木) 12:20:07 AAS
unordered_setでgreaterを使ってみたのですが、eraseが失敗しています。
やり方が悪いのでしょうか? どなたかご教授お願いします。
typedef boost::unordered_set<int,boost::hash<intgreater<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(1): 2009/12/17(木) 12:53:12 AAS
そこはequal_to<T>を指定するところだから
392(1): 2009/12/17(木) 13:48:31 AAS
クラスSからクラスTにキャスト可能であるかどうかを
判定するメタ関数はありますか?
is_castable_into<S, T>::value
的な使い方ができる物です。
393: 2009/12/17(木) 13:50:37 AAS
>>391
おぉ、勘違いしておりました。
unordered_setはstd::setの様に初めから逆ソートは出来ないのでしょうか?
394: 2009/12/17(木) 13:53:12 AAS
unordered の意味、わかってるの?
395(1): 2009/12/17(木) 13:59:39 AAS
>>392
is_convertible<From, To>
396: 2009/12/17(木) 14:09:56 AAS
>>395
ありがとうございます。
397: 2009/12/17(木) 14:43:00 AAS
実装を知らずにコンテナを使うのは問題だな
398: 2009/12/17(木) 14:45:23 AAS
完璧に知る必要は全く無いが、原理くらいは知らないとな…
399: 2009/12/17(木) 14:49:03 AAS
実装以前に使うクラスの名前くらいちゃんと読めって話だよ
400: 2009/12/17(木) 16:11:12 AAS
>>377
stringの中身がutf8ならto_utf8、from_utf8で
wstringと相互変換できるぞ。
sjisは扱えないけど、ASCIIとは互換性がある。
401(2): 2009/12/17(木) 17:22:44 AAS
boost::numeric_castを使おうとすると、converter_policies.hppというファイルで、
ceilとfloorのオーバーロード関数の呼び出しを解決することができないという
エラーが出るのですが、何か解決策はありますでしょうか?
環境はVisual C++ 2008、Boost 1.41.0です。
402(1): 2009/12/18(金) 01:47:54 AAS
>>401
エラーメッセージは正確に。
コピペ推奨。
403(1): 2009/12/18(金) 04:29:39 AAS
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: 2009/12/18(金) 05:19:05 AAS
GCCは一応対応してるけど使用は非推奨で警告でたりするからじゃね
405: 2009/12/18(金) 05:39:26 AAS
VCにpragma指令を入れてるのは単にコンパイルの高速化の為かと
GCCはインクルードガードだけで十分
406: 403 2009/12/18(金) 06:17:18 AAS
ああそうか、そういえばgccはインクルードガード検知すると自動で
#pragma once相当の処理をするとかどこかで読んだ。納得。
407(2): 2009/12/18(金) 13:55:42 AAS
>>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: 2009/12/18(金) 14:15:33 AAS
karaokeThread があやしいな。
409: 2009/12/18(金) 14:17:44 AAS
>>407
まだ変に省略してないか?
VC++ だとテンプレート引数の情報とかエラーメッセージに出たような・・・。
常套手段だけど、同じエラーを出す最小のソースを作ってみるといい。
410: 2009/12/18(金) 14:24:13 AAS
>>407 外部リンク:ja.lmgtfy.com
411: 401 2009/12/18(金) 22:53:49 AAS
自己解決しました。どうやらifstream.tellg()の戻り値を変換させるときに
のみエラーが出るようなので、そこだけstatic_castにしました。
どうもお騒がせしました。
412(1): 2009/12/19(土) 02:08:38 AAS
更新しました。今回初めてgraph_parallelのlink=shared, runtime-link=sharedのビルドが可能になり、
同じく初めてビルドエラー無しでフルビルドが出来ました。
外部リンク: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: 2009/12/19(土) 05:04:38 AAS
>>412
いつも乙。
ところで列記してある更新内容のリストはどこで参照できますか?
414(1): 2009/12/19(土) 06:58:03 AAS
全ての更新内容はrarファイル内のchangelog.txtに記してありますが、
TortoiseSVN上の更新情報をテキストデータとして羅列した状態ですのであまり読み易くはありません。
公式サイトの下記ページにも更新情報がありますが、sandboxの更新と一緒になっている為少々読み辛いです。
Boost-Commit mailing page: By Subject
外部リンク[php]:lists.boost.org
ローカルリポジトリを構築して管理ソフトからログを読むのが、一番整頓されていて分かり易いと思います。
415(3): 2009/12/20(日) 05:18:17 AAS
>>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 で確認。
上下前次1-新書関写板覧索設栞歴
あと 586 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.129s*