[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/08 21:12 / Filesize : 199 KB / Number-of Response : 759
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Boost総合スレ part8



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/

336 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:45:45 ]
Boost 1.41 の
boost/function_types/detail/synthesize_impl/arity20_0.hpp
boost/function_types/detail/synthesize_impl/arity30_0.hpp
がおかしくね?
なんかソースが途中で切れたみたいになってる。
手元で確認できるかぎりでは、svn56164 で正常。
svn57242 ではおかしくなってる。


337 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:14:23 ]
お前だけじゃね?
こっちはそんなことないが。

338 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:23:37 ]
>>336
ちゃんとSubversion使ってる?

339 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 10:12:48 ]
>>336
ほんとだ。
リビジョン番号 56305以降がおかしい。
stefanが更新してる

340 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:08:03 ]
まったくもう、ステフったら……

341 名前:デフォルトの名無しさん [2009/11/16(月) 16:27:52 ]
codepad.org/PnJLqsJw

Boost.Propertyを使ったお試しコードを書いたのですが、Property用のメンバーをstringにすると以下の様な
エラーになるんだけど、原因分かる人いる?

error C2679: 二項演算子 '<<' : 型 'Person::_PropertyNamaeImpl_' の右オペランドを扱う演算子が見つかりません (または変換できません)。 e:\property_test.cpp 57

property_get::operator return_type()まで来ないので、ADL系の様な気がする・・・
なぜ、来ないのか分からない。

342 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 06:38:03 ]
boost::function、bind、refの組み合わせってboost::spiritのセマンティックアクションに
渡せますが、tr1の物だとダメなようです。
これらのようにtr1とboostの物での違いの、一覧みたいなのは無いでしょうか?

343 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:35:32 ]
[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 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:36:07 ]
[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.
以上更新内容の一部
ttp://booster.x0.to/



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
ここの手順そのままで問題ない?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<199KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef