2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Boost総合スレ part8

1 :デフォルトの名無しさん:2009/08/28(金) 16:53:36
過去スレ
part 7 http://pc12.2ch.net/test/read.cgi/tech/1232367742/
part 6 http://pc11.2ch.net/test/read.cgi/tech/1207749841/
part 5 http://pc11.2ch.net/test/read.cgi/tech/1192662575/
part 4 http://pc11.2ch.net/test/read.cgi/tech/1175663346/
part 3 http://pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 http://pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 http://pc8.2ch.net/test/read.cgi/tech/1091198276/

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

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

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

boost info
http://shinh.skr.jp/boost/

2 :デフォルトの名無しさん:2009/08/28(金) 16:55:31
■関連書籍■
Boost C++をチューンアップする最先端ライブラリ
http://www.amazon.co.jp/exec/obidos/ASIN/4894714191/

Boost C++ Libraryプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4798017043/

Beyond The C++ Standard Library
http://www.amazon.co.jp/exec/obidos/ASIN/0321133544/

C++ Template Metaprogramming
http://www.amazon.co.jp/exec/obidos/ASIN/0321227255/

The Boost Graph Library
http://www.amazon.co.jp/exec/obidos/ASIN/0201729148/

■関連スレ■
C++相談室 part71
http://pc12.2ch.net/test/read.cgi/tech/1247853298/

C++0x 6
http://pc12.2ch.net/test/read.cgi/tech/1245092251/

【C++】STL(Standard Template Library)相談室 11
http://pc11.2ch.net/test/read.cgi/tech/1231640024/

3 :デフォルトの名無しさん:2009/08/28(金) 16:57:38
Boost Sandbox
https://svn.boost.org/trac/boost/wiki/BoostSandbox

Boost Vault
http://www.boostpro.com/vault/

Loki
http://sourceforge.net/projects/loki-lib/

JTC1/SC22/WG21 - The C++ Standards Committee
http://www.open-std.org/jtc1/sc22/wg21/

POCO, the C++ Portable Components
http://www.appinf.com/poco/info/
http://sourceforge.net/projects/poco/

The unofficial BCB Boost patches
http://bcbboost.sourceforge.net/

4 :デフォルトの名無しさん:2009/08/28(金) 16:59:27
Boost 1.40.0リリースを祝してスレ立てた。
まだよく見てないけど、mpl::stringとか黒魔術の香りしかしないぜ。

5 :デフォルトの名無しさん:2009/08/28(金) 17:13:02

mpl::stringキタ━

6 :デフォルトの名無しさん:2009/08/28(金) 18:09:55
mpl::stringって何がそんなにありがたいの?

7 :progress_display:2009/08/28(金) 21:04:39
このスレ以降漏れをバカにすることを禁ず

8 :compressed_pair:2009/08/28(金) 21:22:34
俺漏れも

9 :progress_display:2009/08/28(金) 23:00:23
>>8
お前はいいんだよバカ!

10 :compose:2009/08/29(土) 03:11:56
早く仲間になれよー

11 :デフォルトの名無しさん:2009/08/29(土) 05:50:12
Signal2、Lispみたいに使えて面白いなぁ

12 :デフォルトの名無しさん:2009/08/29(土) 17:36:05
Wikiにprogress_displayの記事作っといたから。

http://ja.uncyclopedia.info/wiki/Progress_display

13 :デフォルトの名無しさん:2009/08/29(土) 18:13:51
ワロタ

14 :デフォルトの名無しさん:2009/08/29(土) 22:27:56
更新しました。SVNは1.41に移行しました。
ttp://booster.x0.to/
以下更新内容の一部
[Units]
Use base_unit_info when computing the name of a scaled base_unit. Fixes #3360.
[Exception]
mutable get_error_info support
[Python]
added missing error checks in operator bool_type(), operator!();
[Mpl]
Use order instead of size to find the next order in the non-typeof implementation of mpl::insert for mpl::map. Fixes #2042.
[Serialization]
Improved implemenation of boost_serializer_map
Improved support for serialization of types in DLLS
New exception for violations of ODR when using DLLS
[Ptr_container]
removed new_clone() overload that causes problems in other contexts
[Spirit]
Spirit: Added karma::stream_generator
Spirit: moved karma::ostream_iterator out of namespace detail to make it usable by user code
Spirit: fixed a problem in lexertl
Prevent overflow in comparison.
[Iostreams]
atttped fix for #2932; will close after next testing cycle completes

1.40リリース版と現時点のSVNでは--build-type=completeとstatic-staticの
ビルドが不可能な不具合が修正されておりましたので、
libs_for_build_boost.rarのreadme.text内不具合情報も更新しました。

15 :progress_display:2009/08/29(土) 22:55:20
>>12
ふ、ふざけんな(´;ω;`)

16 :デフォルトの名無しさん:2009/08/29(土) 23:08:05
つ_


17 :名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:00:21
progress_displayたんとか出来る勢いだな

18 :名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:32:04
ヘタに出力先を抽象化しない潔さに惚れる

19 :デフォルトの名無しさん:2009/08/31(月) 00:14:40
>>18
専門家だよな、ある意味。


20 :デフォルトの名無しさん:2009/08/31(月) 00:16:11
codepad
ttp://codepad.org/

長いソースを貼るときはここへ!

ってテンプレに入れようぜ。
まあこのスレはみんなレベルが一定以上あるから
言わなくても大丈夫かもしれないけどさ。

21 :デフォルトの名無しさん:2009/09/02(水) 04:56:17
>>14
new_clone書いても意味なくなったってこと?
それともデフォルト的なnew_cloneがなくなったの?


22 :デフォルトの名無しさん:2009/09/05(土) 23:17:23
>>21
よく分かりませんが、とりあえずその更新では/trunk/boost/ptr_container/clone_allocator.hppの

template< class T >
inline T* new_clone( const T* r )
{
return r ? new_clone( *r ) : 0;
}

の部分が削除されました。

23 :デフォルトの名無しさん:2009/09/06(日) 01:38:11
更新しました。
ttp://booster.x0.to/
以下更新内容の一部
[Unordered]
Remove allocator_constructor since it's never used.
Initial checkin of new version of Boost.Unordered.
Remove unnecessary BOOST_DEDUCED_TYPENAMEs
Remove a few unused parameters.
Remove 'static' from next_node and node_count. Will hopefully make vacpp happy.
Combine hash_structure and hash_table_manager.
Move size_ and cached_begin_bucket_ into table, rename hash_table_manager hash_buckets.
[Spirit]
Spirit: using endian from trunk starting with V1.42 only
Spirit: default parameters for custom generator specs, semantic changes to binary generators
Bug fix for bol/eol flag setting.
Hoist the char-class namespaces into qi (for usability)
Spirit: allow for mpl::vector<> instead of mpl::vector0<>
[Type_traits]
Fix warnings emitted by gcc when building with -Wall -Wextra.Fixes #3381.
[Property_tree]
Merge proptree rewrite branch to trunk.
Don't mangle whitespace too much.
[Graph]
Added fixes to and a test for incremental_components from Michael Hansen; fixes #3250
Added qualification to has_no_vertices in cuthill_mckee_ordering; fixes #3376
Added edge() function for new interface of CSR graph,
enabling it to work with the Kolmogorov max-flow algorithm
[Thread]
boost.thread exception types are now header-only so some uses of boost.
thread can be header only

24 :デフォルトの名無しさん:2009/09/06(日) 13:40:32
職場がBoostを全面的に許可しているとして

boost::shared_ptr
Boost.Function
Boost.Lambda
Boost.Spirit
Boost.MPL
Boost.Preprocessor

これらは実務で使えるレベルまで勉強して習得すべきだと思います?
boost::shared_ptrは使いますが、
Boost.MPLやBoost.Preprocessorは使ったことがありません。
実務で使っている方はいらっしゃいますでしょうか?


25 :24:2009/09/06(日) 13:48:48
なお、この中ではboost::shared_ptrとBoost.Spiritは実務で使ったことがあります。


26 :デフォルトの名無しさん:2009/09/06(日) 13:49:54
全面的に許可されているけど、その中ではshared_ptrしか使ってない。
function、lambda、spiritは遊んだことあるけど今のところ実務では使ってない。

必要になってから勉強して習得すればいいんじゃないの?
OJTで十分。

27 :デフォルトの名無しさん:2009/09/06(日) 13:54:18
ところで>>12の出力例ってprogress_displayに適切な引数か何かを与えれば
全部行けたりするの?

28 :デフォルトの名無しさん:2009/09/06(日) 14:09:48
mplは使ってる
オーバーロードの曖昧さを解決するためにenable_ifを覚えようとして、芋づる式に
type_traitsやmplも覚えた

29 :26:2009/09/06(日) 14:16:51
訂正。functionは実務でもバリバリ使ってた。
ここ最近C++/CLIでdelegate使ってたから忘れてた。

30 :デフォルトの名無しさん:2009/09/06(日) 15:02:57
lambdaは無くても良いから最低限bindが使いたいかな。
TR1に入ってるものくらいは全部許可されていてほしいところだよね。

31 :デフォルトの名無しさん:2009/09/06(日) 15:11:18
progress_displayのライバルってregexとかbindとかなの?

32 :デフォルトの名無しさん:2009/09/06(日) 15:21:23
wikiによるとprogram_optionsとcompressed_pairが有力なライバルらしい。

33 :デフォルトの名無しさん:2009/09/06(日) 15:23:01
progress_displayさんとそんなTR1に入るような雑魚が相手になるはずねーっすよ

34 :デフォルトの名無しさん:2009/09/06(日) 15:27:58
xpressiveさんが凶悪すぎるだけで、regexさんをうっかり使ってる人も結構いるし、
一応それなりに便利だし

35 :デフォルトの名無しさん:2009/09/06(日) 16:18:11
mem_fnさんとか、TR1に入らなければcomposeさんと同じ道を歩んでるところだったな
unique_ptrさんが正式にデビューしたらscoped_ptrさんとscoped_arrayさんも……

36 :デフォルトの名無しさん:2009/09/06(日) 16:41:01
老兵は死なず
ただ消え去るのみ

37 :デフォルトの名無しさん:2009/09/06(日) 16:42:06
program_optionsは正直コマンドライン引数だけを対象にして書きなおして欲しい
設定ファイル読み込みはいらないと思うんだが…


でもMLでこれを言うのは気が引ける

38 :デフォルトの名無しさん:2009/09/06(日) 16:58:41
前スレで出たネタだけど、spirit(V1)には若干バグがあった。
1.40でも直ってないし、V2でちゃったしで、もう直らないのかも。
そんな感じなんで、業務に使うのはちょっと勇気が必要な気が。

39 :デフォルトの名無しさん:2009/09/06(日) 19:32:52
Arrayライブラリ使うのと配列使うのとは
どちらが実行速度速いですか?

いい換えるとArrayライブラリ使うと
配列に速度の点で負けますか?

40 :デフォルトの名無しさん:2009/09/06(日) 19:40:55
>>39
速度は実測が基本

一般的な最適化が期待できるなら、速度が落ちる理由はたぶん無い。

41 :デフォルトの名無しさん:2009/09/06(日) 19:42:06
逆に言うと最適化のないデバッグビルドだと大分遅い

42 :デフォルトの名無しさん:2009/09/06(日) 19:48:15
array.hppはboostでも最も実装が簡単なものの1つだから、単に読めばわかる。
もっとも基本的なインライン化さえされれば組み込み配列と等価だろうね。
組み込み配列に無い操作についても、普通にSTL使って書けば同じ実装になるだろうし。

43 :デフォルトの名無しさん:2009/09/06(日) 21:00:06
あり^^

44 :デフォルトの名無しさん:2009/09/06(日) 22:35:32
今頃になって
http://www.boostcon.com/community/wiki/show/private/2009/
にあるBoostconの資料漁ってみた。
まともなドキュメント無いから知らんかったが、
Spirit V2のKarmaって今までのSpirit(V2でのQiに相当)の逆に、
PEGとSemantic Actionを使ってformatするライブラリだったんだな。
それにしても、Qi(氣)とかKarma(業)とか、DQNネーム自重しろよwww

45 :デフォルトの名無しさん:2009/09/06(日) 22:50:57
>>35
mem_fnは、俺が使わなくてもbindの中の人が使っているというイメージ。
いや、実際そういう実装なのか確かめていないけどさ。

46 :デフォルトの名無しさん:2009/09/07(月) 08:37:07
>>44
SpiritはDQNネームに含まれないのか

47 :デフォルトの名無しさん:2009/09/07(月) 13:09:20
>>44
なんてこったいBoostもDQNネームに犯されているのか・・・
自作のプログラムまで波及しないように変数名はシンプルに a とか b にするよ

48 :デフォルトの名無しさん:2009/09/07(月) 21:20:06
ところでspirit v2って使いやすいの?速いの?1.6と互換性あるの?



49 :デフォルトの名無しさん:2009/09/07(月) 22:50:51
>>48
確信を付いたな。

50 :デフォルトの名無しさん:2009/09/07(月) 22:56:51
>>48
解答を拒否する

51 :デフォルトの名無しさん:2009/09/08(火) 04:32:48
行列計算ライブラリを探しててBlitz++とかCPPLAPACKとか落としてみた後に
BoostのuBLASの存在に気付いたんだけど、これってpdfマニュアル無いの?

52 :デフォルトの名無しさん:2009/09/08(火) 05:48:28
>>48
実行速度は速いが使いやすくもなく互換性もない。バグもしばしば見つかる。
コンパイルは新しい世界が見えるほど遅い。現状では人柱用だな。

53 :デフォルトの名無しさん:2009/09/08(火) 20:34:59
warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。
と言われるのが邪魔なので、
#pragma warning(disable : 4819)
としてしまおうかと思っているのですが、
しない方がいいでしょうか?

54 :デフォルトの名無しさん:2009/09/08(火) 20:56:23
どのヘッダーで出るん?


55 :デフォルトの名無しさん:2009/09/08(火) 21:05:43
昔format.hppで出た記憶があるな。

>>53
消しちゃえ。 プロジェクトのプロパティで消すのもいいよ。

56 :デフォルトの名無しさん:2009/09/08(火) 21:14:06
問題のヘッダーをincludeする前後でwarningのpush popすればいいんじゃないかな。


57 :53:2009/09/08(火) 21:49:52
みなさんありがとうございます。


ご指摘のあった
警告レベルがあわないヘッダのインクルードで警告を抑制する方法 | いちばんやさしいゲームの作り方
ttp://www.game-create.com/archives/411

これで行かせていただきます。

58 :デフォルトの名無しさん:2009/09/09(水) 17:53:48
Boost.Lambdaに対するPhoenixの長所をまとめた文書は無いのかな
あと、Protoを土台にしたPhoenix V3の開発はどうなってしまったんだろう

59 :デフォルトの名無しさん:2009/09/09(水) 18:31:14
>>58
LambdaとPhoenixは統合作業中とか聞いてますがね。



60 :デフォルトの名無しさん:2009/09/09(水) 19:13:24
0xで純正lambda入るから無駄になりそうな

61 :デフォルトの名無しさん:2009/09/09(水) 19:35:56
>>59
実際に統合作業を進めているレポジトリが見つからないんだよね。
http://lists.boost.org/boost-announce/2008/10/0205.php
を見る限りだと、統合するというより準備が出来次第LambdaからPhoenixに乗り換える、
っていうことになるような気がする。今は状況が変わったのかもしらんけど。

>>60
C++0xのLambdaはMonomorphicだからPolymorphicなBoost.LambdaやPhoenixとは別物。
SpiritのSemantic Action内でC++0xのLambda使おうとは思わないしね。

62 :デフォルトの名無しさん:2009/09/09(水) 19:59:17
https://svn.boost.org/trac/boost/wiki/BoostPhoenix3
どうやらPhoenix V3の作業はここから進んでいないようだ

63 :デフォルトの名無しさん:2009/09/09(水) 20:49:07
たった1つでいいから、すげー汎用性の利いたライブラリを
作ってくれればうれしいんだが。

と言ってみるテスト。

64 :progress_display:2009/09/09(水) 20:51:01
俺の出番だな

65 :デフォルトの名無しさん:2009/09/09(水) 21:33:01
Boost.Perl
Boost.PHP
Boost.Ruby
Boost.BASIC
Boost.ECMAScript
何と3ライブラリ同時リリース!!

66 :デフォルトの名無しさん:2009/09/09(水) 21:35:34
Boost.HSPとBoost.なでしこも仲間に入れてくれ

67 :デフォルトの名無しさん:2009/09/09(水) 21:52:24
PerlからBoostのprogress_displayが呼べるようになるんだな!

68 :63:2009/09/09(水) 22:16:27
Boost.Lambda、Phoenix、Spiritの3つじゃなくて
たった1つでいいから…(ry

的な意味でごんす。
決してこれら3つ以外で便利なライブラリの登場を期待しているわけではないごんす。

69 :デフォルトの名無しさん:2009/09/09(水) 22:18:03
>>62
どういう状況で詰まっているということですかいな?

70 :デフォルトの名無しさん:2009/09/09(水) 23:24:03
boost::asio で非同期のTCP 通信を行ってるんですが、帯域制限なんかはどうやって実装すれば良いですかね?
async_read() に渡すハンドラの中で sleep() かませば良いですか?


71 :デフォルトの名無しさん:2009/09/09(水) 23:45:55
>>69
詰まってるというより、Spirit回りの作業の方が優先で手が回ってないようだ

Spirit V2のかなりの部分のマニュアルが1.40に間に合わなくて
今まさに1.41に向けてtrunkの方で書いてる最中みたいだしね
https://svn.boost.org/trac/boost/browser/trunk/libs/spirit/doc
1.41ではやっとkarmaのマニュアルが読めそうだな

72 :デフォルトの名無しさん:2009/09/10(木) 00:13:14
>>67
誰得

73 :デフォルトの名無しさん:2009/09/10(木) 02:47:20
>>70
async_read_at()とハンドラ内でsleepかな
やったことないけど

74 :デフォルトの名無しさん:2009/09/10(木) 19:43:24
>>72
思っても言っていいことと悪いことがだな。

75 :デフォルトの名無しさん:2009/09/10(木) 21:23:24
口に出したら戦争だろうが!!

76 :デフォルトの名無しさん:2009/09/10(木) 22:55:14
>>73
できそうです。どもっす

77 :74:2009/09/10(木) 22:57:23
>>75
カイジか。

78 :lambda:2009/09/12(土) 03:40:47
VC2010に移行してもここにいる皆さんは僕を使い続けてくれますよね・・・?

79 :デフォルトの名無しさん:2009/09/12(土) 06:48:57
文字数で_1 < _2の簡潔さを超えられると思うか?
たとえC++に多態ラムダが入っても無理だ。
需要は減っても0にはならないさ。

80 :デフォルトの名無しさん:2009/09/12(土) 13:27:11
boostとc++0xのlambdaってオーバーヘッドが小さいのはどっち?(実行時)
具体的に言うと、戻り値の関数オブジェクトで関数ポインタ使ってるのかな?



81 :デフォルトの名無しさん:2009/09/12(土) 13:49:47
理想的なコンパイラを想定するならどっちも同じじゃね?

82 :デフォルトの名無しさん:2009/09/13(日) 10:48:44
function<int(int left,int right,int top,int bottom)>
のように仮引数名を書いてもエラーにならないんで便利なんですけど、この仮引数名は無視されるんですか?
それとも副作用ある?

83 :デフォルトの名無しさん:2009/09/13(日) 14:07:32
>>82
言語としては意味が無い。
「便利」というとおり、コードを読む人には意味がある。

84 :デフォルトの名無しさん:2009/09/13(日) 14:37:18
>>82
副作用は無い。


85 :デフォルトの名無しさん:2009/09/13(日) 15:41:27
>>83-84
ありがとう。安心して使えます。

86 :デフォルトの名無しさん:2009/09/13(日) 18:12:06
更新しました。今週はSpiritのドキュメントの更新が中心の様です。
ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: support use with 1.40 release
Spirit: Unified semantics of tokenize_and_parse functions
Spirit: removed lex::omitted in favor of lex::omit
Spirit: fixing examples
Spirit: Added character generator negation (unary '~' for character generators)
Spirit: Added default template type for stream_generator
Spirit: fixing lexer issue inhibiting usage of more than one instance of a static lexer
Spirit: added static lexer version verifying compatibility with generated tables
[Property_tree]
Fix a missing include problem. Hopefully also fix some other sun-cc problems, though not all.
Fix inspection problems.
Initialize a member variable, fix lots of failing tests.
[Graph]
Removed unused variable due to comment from Gordon Smith
Refactored CSR graph code to get ready for bidirectional support
Changed directedS case to a specialization
Added fixes to grid graph from Michael Hansen
[Units]
add base unit for pound-force
[Mpi]
Templated string serialization on the char type
[Serialization]
reimplemented BOOST_STATIC_WARNING to depend on boost::mpl::print
[Numeric]
matrix.hpp, identity_matrix:
fix #3293: added assignments to size_common_ on each place where size1 or size2 are changed

87 :デフォルトの名無しさん:2009/09/13(日) 22:39:52
BOOST_STATIC_ASSERT(boolean)
って
#if boolean
とは違うんですか?
どういった利点があるのでしょうか?

88 :87:2009/09/13(日) 22:45:30
すいません
訳わかんないこと書いてました。
全然違いました
消えます。
ほんとすいませんすいません、、、

89 :デフォルトの名無しさん:2009/09/13(日) 22:50:40
一生許さない

90 :デフォルトの名無しさん:2009/09/13(日) 23:26:02
progress_display「あの世で俺にわび続けろ>>87ーーーッ!!」

91 :デフォルトの名無しさん:2009/09/16(水) 09:37:47
落ちた

92 :デフォルトの名無しさん:2009/09/16(水) 09:40:07
落ちてなかった

93 :デフォルトの名無しさん:2009/09/17(木) 14:36:13
静的こそ正義

94 :デフォルトの名無しさん:2009/09/17(木) 20:52:16
>>93
Spiritさんですか?
ごくろうさまです。

95 :デフォルトの名無しさん:2009/09/17(木) 20:57:48
>>93
Boost.Regex「てめー俺のことDisってんのかYO!」

96 :mpl:2009/09/17(木) 21:04:51
私が神だ。

97 :xpressive:2009/09/17(木) 21:16:11
サーセンwwww

98 :デフォルトの名無しさん:2009/09/17(木) 21:18:44
Boost C++ Libraries - boost/multi_index/random_access_index.hpp
ttp://www.boost.org/doc/libs/1_40_0/boost/multi_index/random_access_index.hpp

ここなどで出て来る
#pragma parse_mfunc_templ off
は何をしているものでしょうか?

99 :デフォルトの名無しさん:2009/09/17(木) 21:34:45
>>98
周辺にそのまま答えが書いてあるように見えるんだが……
MetroWerks CodeWarrior 8.3でバグが有って、設定によっては
const&で一時オブジェクトをバインド出来ないから、
コンパイラが独自に用意しているparse_mfunc_templプラグマをオフにしてる。

Boostは準拠度低いコンパイラで動かせるようなWorkaroundが多いから、
自分の処理系で関係ない部分は読み飛ばすべき。

100 :デフォルトの名無しさん:2009/09/17(木) 21:40:52
具体的には
http://herbsutter.wordpress.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/
に書いてあるようなやつだな

101 :98:2009/09/17(木) 22:20:49
>>99-100
ありがとうございます。
大変よく分かりました。
感謝です。

102 :デフォルトの名無しさん:2009/09/18(金) 23:29:03
macportでゲットした1.40で、objective-cとC++の混在ソースをコンパイルすると、regexpでエラーが出てしまいます。助けてください。

103 :デフォルトの名無しさん:2009/09/19(土) 00:15:55
>>102
大丈夫かー!もうちょっとで救急車くるぞー!

104 :デフォルトの名無しさん:2009/09/19(土) 00:17:19
>>102
覚醒者?


105 :デフォルトの名無しさん:2009/09/19(土) 00:20:03
俺、さっき人生で初めてprogress_displayを使う可能性が出て来た。

単なるサンプルプログラムで、
結構時間のかかる処理だったから、
画面に進歩を表示させるのに使えるんじゃないかと思ってさ。


結局使わなかったけどな(笑)


106 :デフォルトの名無しさん:2009/09/19(土) 04:05:27
お前のprogress_display童貞を奪うプログラムはどんなものになるんだろうな

107 :105:2009/09/19(土) 21:18:44
聞いてくれよ>>106よ。

ついにboost::progress_displayを使ったよ。

案外便利だったわ。
超限定的なシチュエーションだが。


108 :105:2009/09/19(土) 21:19:26
>>106
あと俺は女だ。


109 :デフォルトの名無しさん:2009/09/19(土) 21:25:02
ああ…次はcompressed_pairだ…

110 :105:2009/09/19(土) 21:35:19
うーん、compressed_pair処女はたぶん一生守り通すかも。

111 :デフォルトの名無しさん:2009/09/20(日) 00:38:00
>>105
結婚して

112 :デフォルトの名無しさん:2009/09/20(日) 03:25:08
progress_displayが実際に使われるなんて、このスレ始まって以来の事件じゃないか。

113 :デフォルトの名無しさん:2009/09/20(日) 09:48:59
そして次のboostから削除されるオチとかな

114 :デフォルトの名無しさん:2009/09/20(日) 10:54:22
>>113
断固抗議する
progress_displayはboostの良心

115 :デフォルトの名無しさん:2009/09/20(日) 11:23:07
mpl化すればいいんじゃね?


116 :デフォルトの名無しさん:2009/09/20(日) 11:39:10
progress_display好きの俺っ子か、、
ま、新しいとは思うけど、
恥ずかしくないのかねGONZOは
色物で釣ろうとしないで、作品の中身で勝負しろよ。

117 :デフォルトの名無しさん:2009/09/20(日) 11:42:01
削除しなくてもいいけど、
timerディレクトリの中に入れるとかはした方が良いんじゃないかと。


118 :デフォルトの名無しさん:2009/09/20(日) 11:59:29
>>12のサンプルみたいなことが出来るI/Fになってるならそれなりに評価する
つーか仕様知らないけど

119 :デフォルトの名無しさん:2009/09/20(日) 13:41:03
進捗コールバックにfunction渡せたり、
出力ストリームを抽象化して付け替えたりできたらもう
progress_displayじゃないよな

120 :デフォルトの名無しさん:2009/09/20(日) 13:56:21
>>119
今のところstd::ostreamを継承するクラスに対してのみ出力可能だから、
まああれだ、
一応がんばってんだよ。


121 :デフォルトの名無しさん:2009/09/20(日) 13:58:04
progress_display童貞だとそうでもないのに
>>110だと、なんかとてつもなくエロい表現に聞こえるな。


122 :デフォルトの名無しさん:2009/09/21(月) 09:33:20
Boostは次期C++から標準的に使えるという噂を聞いたのですが本当ですか?
どうもboost::lambdaとC++0xのラムダ式はどうも見た目がちがうような…

123 :デフォルトの名無しさん:2009/09/21(月) 10:08:14
boostの一部が標準として採用されたってことですよ。boost丸ごとじゃないよ。
boost::tr1に採用されたものが入ってる

124 :デフォルトの名無しさん:2009/09/21(月) 10:19:59
Boostまるごと標準化されるなんて、progress_displayが泣いて喜ぶ話だな

C++0xのlambdaは言語サポートだから、
ライブラリによるboost::lambdaとはまったくの別物

125 :デフォルトの名無しさん:2009/09/21(月) 10:55:39
c++0xとboostのlambdaは内部的に関数ポインタは使ってるのだろうか。
できれば関数ポインタを使ってないオーバーヘッドが無い方を使いたいな。


126 :デフォルトの名無しさん:2009/09/21(月) 11:07:51
解説ありがとうございました。理解できました。tr1内のものは名前空間もstd::tr1になっているのですね

127 :デフォルトの名無しさん:2009/09/23(水) 01:08:48
ラムダ使うと低速になるの?
使うのやーめた
しこしこ関数オブジェクト造るお

128 :デフォルトの名無しさん:2009/09/23(水) 01:18:51
>>127
どこからそういう結論になった

129 :デフォルトの名無しさん:2009/09/23(水) 01:35:55
回答の意味が理解できなくて、何とか分かりやすい回答を引き出そうと必死なんだろ

130 :デフォルトの名無しさん:2009/09/23(水) 01:39:04
>>129
無能の常套手段だよなwww

131 :127:2009/09/23(水) 03:30:20
かまって欲しくて煽り入れただけだよ^^

132 :デフォルトの名無しさん:2009/09/23(水) 22:34:19
Boost.Bigintって何か目立つバグがあるんでしょうか?
使っても大丈夫ですかね?

133 :デフォルトの名無しさん:2009/09/24(木) 23:16:15
>>132
まかした

134 :デフォルトの名無しさん:2009/09/25(金) 20:52:09
目立たないバグならOKなのか。
ならば、目立つバグを数カ所に仕掛けておくんだ

135 :デフォルトの名無しさん:2009/09/25(金) 22:49:55
更新しました。この2週間での大きな変化はPython3のサポートでしょうか。
只、このPython3用ライブラリをビルドしようとするとbjamの挙動がおかしくなりますので、
それについてlibs_for_build_boost.rar内のreadmeに記載しておきました。
それと今回のビルドからビルドオプションを --layout=versioned から --layout=tagged に
変更しましたので、ファイル名からコンパイラー名とバージョン番号が無くなります。
これにより、バージョン番号無しの同一内容ファイルを生成するバッチ操作も廃止しました。
以下更新内容の一部
[Conversion]
DISABLE_WIDE_CHAR_SUPPORT -> BOOST_LCAST_NO_WCHAR_T.
[Spirit]
Spirit: fixing segfault if start rule of a grammar is not compatible with the grammar itself
Spirit: imported spirit::standard namespace into spirit::qi and spirit::karma
Spirit: fixed infinite loop if a Kleene is used inside another Kleene at end of input
[Archive]
fix archive_exception conflict with windows header
[Numeric]
see #3457 * matrix.hpp: added move semantics * vector.hpp: added move semantics
[Wave]
Wave: added missing namespace declaration
[Python]
Merged 2009 GSoC work from sandbox-branches/bhy/py3k branch back into trunk.
[Proto]
oops! add back op::address_of definition
[Date_time]
Refs #3308. Changed the internal type of the gregorian dates to 32 bit integer.
[Unordered]
Fix bug where container was reducing the number of buckets.
[Math]
Add hooks for the dcdflib to the incomplete gamma tests.
[Fusion]
Fusion: added nview and friends

136 :デフォルトの名無しさん:2009/09/25(金) 22:51:16
アドレスを記載し忘れました。
ttp://booster.x0.to/

137 :デフォルトの名無しさん:2009/09/27(日) 13:27:32
boostさんがいなかったC++挫折してました

138 :デフォルトの名無しさん:2009/09/27(日) 13:32:26
>>137
俺は挫折するほど
やり込みもしなかったと思う。

139 :デフォルトの名無しさん:2009/09/27(日) 14:15:58
boostさんというかshared_ptrさんがいなかったらと思うと

140 :デフォルトの名無しさん:2009/09/27(日) 14:34:16
わたしもshared_ptrさんに依存しきってもう戻れない体にされてしまいました
boostは麻薬

141 :デフォルトの名無しさん:2009/09/27(日) 17:18:05
Windowsプログラミングを勉強しようと思って、Microsoft公式解説書の中で一番エントリー向けな
「文法から始める プログラミング言語 Microsoft VisualC++」を買ってみたら、
BOOST_FOREACHとかlexical_castとかthreadとか使ってたり、
shared_arrayとかmulti_arrayとかの使用を推奨していたり、
TR1のregexとかshared_ptrとかも使ってたりで自動的にBoost漬けになりました。

142 :デフォルトの名無しさん:2009/09/27(日) 17:29:45
Boostはユダヤの陰謀

143 :デフォルトの名無しさん:2009/09/27(日) 19:00:34
はじめからboost漬けだと、
もはやC++を勉強したと言えるかどうかすら・・・


144 :デフォルトの名無しさん:2009/09/27(日) 20:34:52
そういえばlambdaも載ってたよ。
思うに、来たるC++0xとVS2010を見越しての内容じゃないかな。

145 :デフォルトの名無しさん:2009/09/28(月) 01:21:51
p が char * で;

string str=std::string(p);
typedef boost::tokenizer<> tokenizer1;
tokenizer1 tok1( str );


とするのと

typedef boost::tokenizer<> tokenizer1;
tokenizer1 tok1(std::string(p));

で、何で挙動が違うのでしょう?


146 :デフォルトの名無しさん:2009/09/28(月) 01:43:32
1mmでも他人の立場に立って考える能力があるなら何がどう違ったのかぐらい書いてくれないかな

147 :デフォルトの名無しさん:2009/09/28(月) 02:54:51
>>140
定期的にshared_ptrの実装を写経しろ

148 :デフォルトの名無しさん:2009/09/28(月) 18:13:00
Boost.Lambda さんには悪いけど君のコンパイル時間はそろそろ許容できない.
早急に VS2010 に以降して lambda さんとはお別れしたい.
それから Boost.Regex 君もそろそろ引退したまえ.

149 :デフォルトの名無しさん:2009/09/28(月) 19:58:27
Boost.Regex君まだ使える子よ

150 :spirit:2009/09/28(月) 20:10:51
>>148
速いCPUに変えればいいと思うよ。


151 :デフォルトの名無しさん:2009/09/28(月) 20:58:48
>145
tokenizer1 tok1(std::string(p));
だと、この文が終了した段階で一時オブジェクトである string が破棄される。

tokenizer は対象のコンテナに対する参照を iterator で持っていて、かつ
> ttp://www.boost.org/doc/libs/1_40_0/libs/tokenizer/tokenizer.htm
> Parsing is done on demand as the tokens are accessed via the iterator provided by begin.
のように token_iterator でアクセスされた際にパースが発生する為、アクセスのタイミングまで
対象のコンテナが生存している必要がある。

152 :デフォルトの名無しさん:2009/09/28(月) 21:54:44
>>151 こういうのって、C++0xとかなら、ダミーの右辺値参照のコンストラクタとか使って防止できないのかな?


153 :デフォルトの名無しさん:2009/09/28(月) 21:55:29
>>148
Spiritに比べれば、Lambdaなんて軽いものさ。

154 :デフォルトの名無しさん:2009/09/28(月) 22:38:28
boost0xについて

155 :デフォルトの名無しさん:2009/09/28(月) 22:46:33
spiritのためにOSを64bit板にしようか悩んでいます。


156 :デフォルトの名無しさん:2009/09/28(月) 23:59:46
shared_ptrってスレッドセーフのと非スレッドセーフのを同時に使うのって不可能?

157 :デフォルトの名無しさん:2009/09/29(火) 01:21:11
>151
ありがとうございます。STLとboost を使おうと決心していろいろ使っています。
自分で作った方が早くて楽なのになぁと思いつつ
なれれば、STL + boost の方が、安全かつ、早くできるはず と信じて;

158 :デフォルトの名無しさん:2009/09/29(火) 03:51:34
きみにはむりだとおもう

159 :デフォルトの名無しさん:2009/09/29(火) 04:39:48
>>152
値は変更しないけど十分な寿命を持った左辺値が必要なときには、そういう手段が
使えるようになるかもね。

現状ではポインタで受け取るようにしてないと、危ないんだよねぇ。

160 :157:2009/09/29(火) 10:41:11
>158
自分でも無理だと思う。Cばかり20年以上だから;

161 :デフォルトの名無しさん:2009/09/29(火) 18:45:05
きみにはCもむりだとおもう

162 :デフォルトの名無しさん:2009/09/29(火) 19:53:49
>152
この場合はダミーというか rvalue reference を受けるコンストラクタも追加すればいいんじゃないでしょうか。

>157
ぶっちゃけ C++ の経験があまりないんだろうなとは思いながら回答しました。popp
一時オブジェクトの生存期間とか C++ 使いなら誰もが一度ははまったことがあり11そうなところなので。
>自分で作った方が早くて楽なのになぁと思いつつ
無理に気負わず自分が書くより楽になると思う部分から使っていけばいいと思います。

163 :デフォルトの名無しさん:2009/09/29(火) 20:59:08
>>156
shared_ptr複製時のアトミック操作のコストが気になるのかな?気持ちはわかるが、無理だと思う。
非マルチスレッド版とマルチスレッド版の間での共有をどう解決するかだ。その間で共有できないなら利便性が無くなりメリットの乏しいものになる。

普通の使い方ではshared_ptrの複製のコストは問題にならないと思う。
それでも、複製のコストが気になるならshared_ptrを参照渡しにすればコピーのコストはないし、そうすればshared_ptrの複製が減らせられる。
vectorで使うときの大量な複製が気になるならC++0xの右辺値参照に期待しよう。


164 :デフォルトの名無しさん:2009/09/29(火) 21:33:39
ぶっちゃけ参照カウンタの操作にバスロック命令を使うだけだから大したコストじゃない
と思うけど、ものすごくクリティカルなら知らん
つーか、そんなに激しくクリティカルならポインタ取り出せばいいような気がするし、
デフォのままで問題ないと思うし、たぶんBoostの中の人もそう思ってるからずっと
こういう仕様なんだろうと思うけど

165 :Boost.Xpressive:2009/09/30(水) 12:20:37
正直、お兄さんはもういらない子だと思うのです
これからはぼくと std.regex 君の時代だと思うのれす。。。

166 :デフォルトの名無しさん:2009/09/30(水) 14:55:06
>>165
もうなんかいっそのこと
Boost.RegexはBoost.Xpressiveのラッパにしちゃだめなのかな(笑)


167 :デフォルトの名無しさん:2009/09/30(水) 16:46:19
お前らBoostで特に使えるライブラリ三つ簡単なコード挙げて紹介しろ

168 :デフォルトの名無しさん:2009/09/30(水) 16:49:56
なんで?

169 :デフォルトの名無しさん:2009/09/30(水) 17:05:00
>>167
ええと、progress_displayとcompressed_pairと・・・あと何だろう?
program_optionsかな?

170 :デフォルトの名無しさん:2009/09/30(水) 17:15:52
compressed_pairはGoogleが社内で使用許可を出している数少ないBoostライブラリの
一つだからな

171 :デフォルトの名無しさん:2009/09/30(水) 17:38:49
>>170
ホントかよw
すげーwww

しかしまあprogress_displayだって安定性では引けを取らないぜ。


172 :デフォルトの名無しさん:2009/09/30(水) 19:04:14
>>169
てめーprogram_optionsさんディスってんじゃねーよ
俺なんかお世話になりまくりだっつーの

>>165
たしかに使用頻度は激減したけど・・・コンパイル速いじゃん

173 :デフォルトの名無しさん:2009/09/30(水) 19:29:09
std::regexってboostの転生でしょ。
なので、stdにあるからboostのは要らないというのは変な表現だと思う。
もっとも俺はspirit一筋だけどな。

174 :デフォルトの名無しさん:2009/09/30(水) 20:52:00
>>167
マジレスするとshared_ptr, scoped_ptr, noncopyable

175 :デフォルトの名無しさん:2009/09/30(水) 21:44:50
>>173
というか改良が早いのは絶対Boost.Regexなんだろうから
むしろ要るのはBoost.Regexの方。

といってもBoost禁止とかいうイカレタ職場では
Std.Regexを使うことになるんだろうけど。

176 :デフォルトの名無しさん:2009/09/30(水) 23:39:41
noncopyableって英語おかしくね?
なんとなくだけど

177 :デフォルトの名無しさん:2009/09/30(水) 23:41:01
>>176
おかしいらしいね。
でも一度そうしちゃった以上どうしようも無いんだろうな。


178 :デフォルトの名無しさん:2009/09/30(水) 23:45:40
まぁ、本気で気になるなら、おかしくない名前も使えるようにするとかな

179 :デフォルトの名無しさん:2009/10/01(木) 02:42:09
でもさ、 uncopyable だとウンコみたいでいやじゃね?

180 :デフォルトの名無しさん:2009/10/01(木) 02:54:41
いっそDQNネームにするのもありじゃね
コピーできない増えないクラスを作るライブラリっぽい名前

Boost.Virginとか

181 :デフォルトの名無しさん:2009/10/01(木) 09:12:46
>>180
ちょw
恥ずかしいなw


Boost.DQNとかあってもおかしくない様に見えてくるのが不思議。

182 :デフォルトの名無しさん:2009/10/01(木) 09:19:27
>>180
singletonライブラリーですね。わかります。

183 :デフォルトの名無しさん:2009/10/02(金) 16:36:11
気がついたら
boost\serialization\singleton.hpp
ってのがあった

184 :デフォルトの名無しさん:2009/10/02(金) 17:15:25
boostのserializationについてです。

CStringがシリアライズできるように

template <typename Archive>
void save(Archive& ar, CString const& str)
{
  std::string const s(convert(str)); // CStringからstd::stringに変換
  ar & make_nvp("", s);
}

などとするとXML出力に<>(文字列)</>と空の要素タグが付いてしまいます。
この要素タグを出力しないようにしたくて調べてみたのですがxml_archive::save(std::string const&)を
使えば良いようです。
しかし、xml_archive::saveはprotectedなので使えません。
何か良い方法ないでしょうか?

185 :デフォルトの名無しさん:2009/10/02(金) 17:34:29
>>184
make_nvp("CString", s)
とするか、
タグそのものを使いたくないならtextでシリアライズする

186 :デフォルトの名無しさん:2009/10/02(金) 17:36:11
要素名を空文字列にしたら空の要素タグが出力されるのは当然だろ。
いったい何がやりたいの?

187 :デフォルトの名無しさん:2009/10/02(金) 17:57:25
>>186

例えば
std::string name;
をシリアライズするとき
ar & make_nvp("name", name);
ってするよね。

その結果として
<name>山田太郎</name>
を期待する訳で
<name><string>山田太郎</string></name>
がでてきたら嫌でしょ?って話。

オブジェクトのシリアライズの話でなくて型のシリアライズのカスタマイズに関する
話なの。考えもせず知ったかでレスせんでいいよ。

188 :デフォルトの名無しさん:2009/10/02(金) 18:11:11
>>186
自作コンテナのシリアライズの場合

template <typename Archive, typename T>
void save(Archive& ar, MyList<T> const& obj, unsigned ver)
{
  std::vector<T> const v(obj.begin(), obj.end());
  ar & make_nvp("myList", v);
}

だと

<strudents>
  <myList>
    <count>2</count><item>...</item><item>...</item>
  </myList>
</strudents>

となるから

template <typename Archive, typename T>
void save(Archive& ar, MyList<T> const& obj, unsigned ver)
{
  boost::serialization::stl::save_collection(ar, obj);
}

とやるの。すると下のようになる。理解できただろ?

<strudents>
  <count>2</count><item>...</item><item>...</item>
</strudents>

189 :デフォルトの名無しさん:2009/10/02(金) 19:13:56
ところで、CStringならstd::stringよりstd::basic_string<TCHAR>のほうがいい気がする。
時と場合にもよるけど。

190 :デフォルトの名無しさん:2009/10/02(金) 19:27:07
>>189
判りやすいだろうと思ってCStringにしたけど実際はQString(知ってる人も多いと思うけど)。

template <typename Archive>
void save(Archive& ar, QString const& obj, unsigned)
{
  std::string const buf(obj.toUtf8());
  ar & make_nvp("string", buf);
}

なんてしてるのだけども<string></string>が嫌だなと思うわけです。

191 :デフォルトの名無しさん:2009/10/02(金) 20:44:20
更新しました。先週に引き続き今週もMathのパフォーマンスチューニングが行われています。
ttp://booster.x0.to/
以下更新内容の一部
[Fusion]
Fusion: resolved const correctness issue
[Spirit]
Spirit: started to add attribute transformation capabilities, new examples
Spirit: added simple token printer for parser trace output
Spirit: added bool_ generators
Spirit: added qi::bool_
[Unordered]
Try supporting reference parameters in pairs. Probably not required.
Remove the optimization for std::pair with a key reference.
[Exeption]
New function: diagnostic_information_what.
[Math]
A few more minor performance tweaks for issue #3407.
Another round of performance tweaks for issue #3408.
These should make our igamma implementation comparable in performance
to the dcdflib FORTRAN routine - at least as far as MSVC is concerned.
[Impl]
missing namespace
Refactored: use static_cast and const pointer where possible.
[Graph]
Another attempt at a CSR edges() fix
[Python]
boost/python: some Py_ssize_t replaced with boost::python::ssize_t
to restore compatibility with Python 2.3 and 2.4
[Date_time]
Refs #2213. Fixed UTC zone offset boudaries.
Refs #1861. Changed the default format for time durations
to "%-%O:%M:%S%F" instead of "%-%H:%M:%S%F".

192 :デフォルトの名無しさん:2009/10/03(土) 00:00:43
rengeExはまだなのか

193 :デフォルトの名無しさん:2009/10/05(月) 14:52:08
>>191
VS2005 用のは無いのか?


194 :157:2009/10/05(月) 16:22:31
>>193 >>191
そうそう、お願いします。

195 :デフォルトの名無しさん:2009/10/05(月) 21:38:35
progress_display プログラムコンテスト開催のお知らせ

詳細は寝て待て!

196 :デフォルトの名無しさん:2009/10/05(月) 22:12:19
progress_displayネタはいい加減飽きたよ。ウンザリだ

197 :デフォルトの名無しさん:2009/10/05(月) 22:32:44
>>196
じゃああぼんすれば良いじゃん。
バカなの?

198 :デフォルトの名無しさん:2009/10/05(月) 22:34:36
一言いわれただけで発狂するほど自信満々のネタだったのか。

199 :197:2009/10/05(月) 22:37:46
>>198
> 一言いわれただけで発狂するほど自信満々のネタだったのか。
いや俺は>>195じゃねぇけどそんなの関係ねぇ。
とにかく気にくわない単語はあぼん。
じゃないとまともに2ch見てらんねぇし。

200 :デフォルトの名無しさん:2009/10/05(月) 23:17:01
いやマジでつまんないから。
あんま迷惑なことしちゃダメよ。

201 :デフォルトの名無しさん:2009/10/05(月) 23:34:02
>>199
そういうお前はちゃんと有無を言わさず>>198>>200をあぼん
しろよ。

202 :デフォルトの名無しさん:2009/10/06(火) 00:08:32
>>197はツンデレなんだよ
progress_displayを愛する一人

203 :デフォルトの名無しさん:2009/10/06(火) 02:40:58
あんまり話題になると、あれ?実はこれ要らないんじゃね・・・?と騒ぐやつが出てくるからな
そっとしておいてやるのが吉

204 :デフォルトの名無しさん:2009/10/06(火) 08:03:15
そうそう。危うく俺も口にしかけたわ。
そんな私も、今では progress_display 童貞。
孫にあげるのは、もちろん progress_display。
なぜなら、彼もまた特別な存在だからです。

205 :195:2009/10/06(火) 08:09:35
なんでこんなに荒れてんだw

206 :デフォルトの名無しさん:2009/10/06(火) 14:20:09
>>197の言うとおり、ここは2chなんだから
>>197みたいなキチガイもたまには湧くさ

207 :デフォルトの名無しさん:2009/10/07(水) 20:06:48
すみません。教えて下さい。
boost/multi_array.hppとboost/numeric/ublas/matrix.hppを比較して
単純な2次元の配列演算で、どちらが速い遅いというのはありますでしょうか?

#include <boost/multi_array.hpp>
#include <boost/numeric/ublas/matrix.hpp>
int n = 10; int m = 10;
boost::multi_array<double, 2> myArray(boost::extents[n][m]);
boost::numeric::ublas::matrix<double> myArray2(n, m, n*m);

パフォーマンス上の損がないようなら、(とりあえずblasのルーチンを使わない場合でも)
全ての2次元配列をboost::numeric::ublas::matrixで置き換えてしまおうと考えているのですが。
よろしくお願いします。

208 :デフォルトの名無しさん:2009/10/07(水) 21:16:58
自分で検証コード組んで確かめろよ
5分とかからんだろうが

209 :デフォルトの名無しさん:2009/10/09(金) 00:46:30
VS 2003.NETからVS 2008 Express に変えて
boostも2008用のにしようとインストーラーDLしようとしたら
ログイン式になってるな
なぜ?

210 :デフォルトの名無しさん:2009/10/09(金) 02:52:24
BoostProに金を落とさないユーザは切り捨てることにしたのかもわからんね
公式から落としてコンパイルするか、
http://booster.x0.to/ のスナップショットを使うべし

211 :デフォルトの名無しさん:2009/10/09(金) 02:54:41
. 1. HTML    で検索した結果 1〜10件目 / 約5,040,000,000件
. 2. PHP      で検索した結果 1〜10件目 / 約2,970,000,000件
. 3. Java......   で検索した結果 1〜10件目 / 約 835,000,000件
. 4. Forth.    で検索した結果 1〜10件目 / 約 323,000,000件
. 5. Ruby..    で検索した結果 1〜10件目 / 約 275,000,000件
. 6. perl.....    で検索した結果 1〜10件目 / 約 245,000,000件
. 7. Python...   で検索した結果 1〜10件目 / 約 204,000,000件
. 8. pascal...   で検索した結果 1〜10件目 / 約 170,000,000件
. 9. Delphi    で検索した結果 1〜10件目 / 約 127,000,000件
10. VisualBasic...で検索した結果 1〜10件目 / 約 121,000,000件
11. lisp...      で検索した結果 1〜10件目 / 約.  26,700,000件
12. fortran     で検索した結果 1〜10件目 / 約.  21,300,000件
13. COBOL    で検索した結果 1〜10件目 / 約.  18,500,000件
14. HSP      で検索した結果 1〜10件目 / 約.  12,300,000件
15. FreeBasic.. で検索した結果 1〜10件目 / 約   6,320,000件
16. Tcl/Tk.     で検索した結果 1〜10件目 / 約   4,940,000件
17. QBasic     で検索した結果 1〜10件目 / 約   4,190,000件
18. VisualC....  で検索した結果 1〜10件目 / 約   1,360,000件
19. DarkBASIC. で検索した結果 1〜10件目 / 約   1,320,000件
20. BasicStudio で検索した結果 1〜10件目 / 約    304,000件
21. N88basic.   で検索した結果 1〜10件目 / 約    215,000件
22. f-basic     で検索した結果 1〜10件目 / 約    109,000件
23. ActiveBasic で検索した結果 1〜10件目 / 約.     89,800件
24. 99BASIC.... で検索した結果 1〜10件目 / 約.     11,500件

3Dprogramming で検索した結果 1〜10件目 / 約794,000件
2Dprogramming で検索した結果 1〜10件目 / 約. 57,400件

intel で検索した結果 1〜10件目 / 約729,000,000件
amd で検索した結果 1〜10件目 / 約355,000,000件

212 :デフォルトの名無しさん:2009/10/09(金) 08:29:08
"C++" の検索結果 約 62,700,000 件中 1 - 100 件目

213 :デフォルトの名無しさん:2009/10/09(金) 08:31:44
BASIC で検索した結果 1〜10件目 / 約1,580,000,000件

214 :デフォルトの名無しさん:2009/10/09(金) 12:15:53
progress_display の検索結果 約 531 件中 1 - 10 件目

215 :デフォルトの名無しさん:2009/10/09(金) 12:37:05
>214
さすがboostを代表するライブラリだ
ハンパねぇーな

216 :デフォルトの名無しさん:2009/10/09(金) 12:38:18
"Objective-C" の検索結果 約 2,730,000 件中 1 - 10 件目 (0.18 秒)

217 :デフォルトの名無しさん:2009/10/09(金) 18:03:19
FORTHが健闘してるなあ

218 :デフォルトの名無しさん:2009/10/10(土) 00:16:42
>209
まじかよ、と思ったらすでにアカウント登録済みだった。あれぇ?

219 :デフォルトの名無しさん:2009/10/10(土) 17:49:13
BOOST1.41、コンパイルにめっちゃくちゃ時間がかかる・・・
1.40の倍以上はかかってる そんなに膨らんだっけ

220 :デフォルトの名無しさん:2009/10/10(土) 17:57:32
http://booster.x0.to/ 落としたらですけど
要求されるlib名が1.41とか付いてるんですが。
これは最初から付いてるやつを格納出来ないんですか。
自分でリネームするんですか

221 :デフォルトの名無しさん:2009/10/10(土) 19:39:18
更新しました。このところ、今迄あまり動きの無かったMathやuBLASといった数式関連に手が入っています。
亦、layout=taggedでリンクエラーが発生しておりましたのでlayout=versionedに戻しました。
尚、バージョン無しのファイルは必要無い様に思えますのでバージョン無しファイル生成バッチは同梱せずに暫く様子を見ます。
ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: fixed a problem in Qi real_impl preventing to use an integral type as an attribute to a floating point parser.
Spirit: restructured customization points, added qi::attr_cast, added phoenix expression support for Karma attributes
Spirit: disabled Phoenix attributes for V2.1, adjusted tests
[Numeric]
see #3449: introduce new free functions to access matrix/vector properties (Incomplete)
[Date_time]
Refs #3470. Modified documentation for c_time functions to reflect the actual behavior.
[Unordered]
Make sure inserting from a range of types other than the value type is better tested.
[Fusion]
BOOST_FUSION_ADAPT_CLASS
[Math]
Fix erf calculation limits.
Added more performance tests along with comparisons to the DCDFLIB.
Change iteration limits to use get_epsilon().
Merge changes from Sandbox.
[Fusion]
Fusion: fixing mismatch in default parameter to nview
[Syatem]
System: minor code clean up
[Signals2]
Added support for tracking of objects owned by non-boost
shared_ptr. No documentation yet.
[Graph]
Fixed duplicate base class problem
Removed old parameters from test code

222 :デフォルトの名無しさん:2009/10/10(土) 19:42:21
亦、layout=taggedからlayout=versionedへの再変更に伴い、
how_to_build.txtとlibs_for_build_boost.rar内readme.txtも修正致しました。

>>193-194
VS2010のExpress Editionがリリースされた場合にそちらに移行する予定はありますが、
VS2005用をビルドする予定は今のところありません。

223 :デフォルトの名無しさん:2009/10/11(日) 00:54:21
>>219
そこまで重くなったかどうかわからんが
Warningの数が増えた 31万個(前は20万)

224 :デフォルトの名無しさん:2009/10/11(日) 01:37:08
警告は無効化しないとコンパイルに死ぬほど時間かかる

225 :220:2009/10/11(日) 01:59:23
>>221
libboost_regex-vc90-mt-s-1_41.lib
という存在してないものを要求されるようになりました。
前回のやつは、リネームしたら通ったのですが
今回はリネームするものがありません。
-s-付きがないです。
前のやつを残してほしかったです。消してしまいました。

226 :デフォルトの名無しさん:2009/10/11(日) 09:19:46
RegexはICUサポートが有効の場合、仕様上link=static, runtime-link=staticのライブラリは作成されません。
代替としてICUサポート無しでビルドしたlink=static, runtime-link=staticのRegexライブラリを追加してrarファイルを差し替えました。
今後のビルドでも同様の措置を採ります。
ttp://booster.x0.to/

227 :デフォルトの名無しさん:2009/10/11(日) 12:10:58
VCの場合、runtime-link=staticは地雷だぞ。

228 :デフォルトの名無しさん:2009/10/11(日) 13:01:01
地雷とは? スタティックリンクってDLLなしでいいってやつでしょ。

229 :デフォルトの名無しさん:2009/10/11(日) 14:06:44
staticlinkだと、libをコンパイルした環境と、そのlibを使ったexeをコンパイルする
時の環境でruntimeが異なったときに、面倒なことになる。
ってやつのことかな。

230 :デフォルトの名無しさん:2009/10/11(日) 18:40:05
gccでも同じことが起こるのではないの?

231 :デフォルトの名無しさん:2009/10/11(日) 18:44:39
gccは存在自体が地雷。

232 :デフォルトの名無しさん:2009/10/11(日) 19:46:11
gccのすばらしさを分からないヤツは素人

って言ってみると何人つれるかな?

233 :bcc5.5:2009/10/11(日) 20:50:30
呼んだ?

234 :デフォルトの名無しさん:2009/10/11(日) 20:53:10
おまえのためにおかしなワークアラウンド書くのはうんざりです

235 :やんやん ◆yanyan72E. :2009/10/11(日) 21:00:44
iccマンセー

236 :デフォルトの名無しさん:2009/10/11(日) 21:03:38
>>235
BOOST_AUTO使える?

237 :やんやん ◆yanyan72E. :2009/10/11(日) 21:31:33
>>235
BOOST_AUTOがどういうもんだかよく理解していないが、
http://www.kmonos.net/alang/boost/classes/typeof.html
ググって出てきたこのコードはコンパイルできてちゃんと動いたよ。

238 :デフォルトの名無しさん:2009/10/11(日) 21:47:38
Open WatcomとかDigital Marsのことも忘れないでください
後者はD言語やってりゃ知ってるだろうけど

239 :デフォルトの名無しさん:2009/10/11(日) 21:50:03
>>237
これがiccだとコンパイルできない。
iccでコンパイルするためにはBOOST_TYPEOF_REGISTER_TYPEで型を登録しなくっちゃならないんで面倒だなっと思ってたり。
c++0xオプション入れればautoが使えるからまあいいかとか思ってる。

#include <vector>
#include <boost/typeof/typeof.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> a;

BOOST_AUTO(k,a.begin());
return 0;
}


240 :デフォルトの名無しさん:2009/10/11(日) 22:33:57
C4819「ケケ…」
C4996「ケケケ…」
俺「何だきさまらあっ!?」

ぶっちゃけこの2つのエラーはBoostの中でdisableにするべき

241 :デフォルトの名無しさん:2009/10/12(月) 00:19:30
4819だけはプロジェクト全体で無効にしてるわ

242 :デフォルトの名無しさん:2009/10/12(月) 11:53:48
ttp://cpp-next.com/archive/2009/10/introducing-%E2%80%9Cthis-week-in-boost%E2%80%9D/
なんか気になる話が。

243 :デフォルトの名無しさん:2009/10/13(火) 20:14:48
FUNC("hogehoge");
と書いたら
hogehoge
と展開されるマクロってどう書くの?
( " を取りたい)

244 :デフォルトの名無しさん:2009/10/13(火) 20:21:23
FUNC(hogehoge) hogehoge=100
など。

245 :デフォルトの名無しさん:2009/10/13(火) 21:02:42
>>243
無理だろ。

>>244
何を言っているの?

246 :デフォルトの名無しさん:2009/10/13(火) 21:03:15
つけなければいい

247 :デフォルトの名無しさん:2009/10/14(水) 06:50:29
ぽかーん

248 :デフォルトの名無しさん:2009/10/15(木) 19:16:47
これ直す方法ないですか。警告外し以外で。

warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。
データの損失を防ぐために、ファイルを Unicode 形式で保存してください。

249 :デフォルトの名無しさん:2009/10/15(木) 19:33:58
A. 日本語を勉強する
B. 母国語でメッセージを表示する開発環境を使う
C. より適切な進路・職業を考える

どれでもお好きな方法を

250 :デフォルトの名無しさん:2009/10/15(木) 19:43:44
>>249
彼にはCが良いと思うよ。

251 :デフォルトの名無しさん:2009/10/15(木) 20:32:58
>>248
ライブラリのヘッダーでたまに出るけど、保存しなければ良いんじゃないか?


252 :デフォルトの名無しさん:2009/10/15(木) 20:53:41
そもそも「どうすればいいか」は当該ヘッダに書いてあると思うんだが

253 :デフォルトの名無しさん:2009/10/16(金) 01:41:33
コンパイラがEUCだと認識するのがだめな気がする。UTF8として読み込ませる方法があれぱいいけど

254 :デフォルトの名無しさん:2009/10/16(金) 02:27:31
何で警告外しちゃ駄目なんだろう

#pragma warning(push)
#pragma warning(disable:4819)
#include <hoge>
#pragma warning(pop)

これに何の不満があるんだ

255 :デフォルトの名無しさん:2009/10/16(金) 02:33:19
警告はヘッダが悪いのか、コンパイラが悪いのか。

256 :デフォルトの名無しさん:2009/10/16(金) 02:42:52
文字コードというものの仕様が悪い

257 :デフォルトの名無しさん:2009/10/16(金) 02:43:51
相性が悪い

258 :デフォルトの名無しさん:2009/10/16(金) 02:48:52
どのヘッダをどのコンパイラに突っ込んで警告が出てるかの情報も一切なしに
何が悪いのかなんて分かるわけが無い

259 :デフォルトの名無しさん:2009/10/16(金) 05:07:38
VC2008でboostやると沢山コードの警告出る。

260 :253:2009/10/16(金) 05:09:16
間違えた。コード932はSJISの拡張だった。

261 :デフォルトの名無しさん:2009/10/16(金) 05:15:21
英語版OSに英語版VC入れてコンパイルするか、
ソースを全部BOM付きUTF-8で保存し直せば警告は無くなるんじゃないかな

262 :デフォルトの名無しさん:2009/10/16(金) 05:25:45
boostproの1.38.0を入れたまましばらく追従してないけど、とりあえずVC9で
警告うるさめにして使ってるけど何も言われないな

263 :デフォルトの名無しさん:2009/10/16(金) 05:27:04
つーかどのソースで警告出るか、そのソースが実際どのコードで保存されてるか
くらいの情報は出せないのか

264 :デフォルトの名無しさん:2009/10/16(金) 05:34:54

Yahoo!プログラミング言語検索ランキング(今回2009/10/16、前回2009/10/12)

《一般カテゴリ》
. 1(. 1) HTML.....    約5,030,000,000件(約5,020,000,000件)+
. 2(. 2) PHP...      約2,980,000,000件(約3,000,000,000件)--
. 3(--) BASIC..      約1,580,000,000件(....------------- )0
. 4(. 3) JAVA..      約 822,000,000件(約 832,000,000件)--
. 5(--) CGI.        約 551,000,000件(....------------- )0
. 6(--) C言語(*1).   約 399,000,000件(....------------- )0 (*1)C/C++とC#の検索件数の合計
. 7(. 4) FORTH..    約 323,000,000件(約 324,000,000件)-
. 8(. 6) PERL..     約 245,000,000件(約 245,000,000件)0
. 9(. 7) PYTHON..   約 213,000,000件(約 209,000,000件)++
10(. 8) PASCAL..   約 168,000,000件(約 168,000,000件)0
11(. 9) DELPHI.    約 128,000,000件(約 128,000,000件)0
12(11) LISP      約.  26,000,000件(約.  26,600,000件)--
13(12) FORTRAN.   約.  21,200,000件(約.  21,300,000件)-
14(13) COBOL.....   約.  16,800,000件(約.  17,100,000件)--
15(--) PROLOG    約.  13,800,000件(....------------- )0
16(14) HSP        約.  12,300,000件(約.  12,400,000件)-

《BASIC言語カテゴリ》
. 1(--) VisualBasic...  約 120,000,000件(約 121,000,000件)-
. 2(--) Hu-BASIC..  約.  15,000,000件(....------------- )0
. 3(--) QBASIC..    約   4,140,000件(約   4,160,000件)--
. 4(--) MSX-BASIC.....約   1,430,000件(....------------- )0
. 5(--) DarkBASIC .  約   1,310,000件(約   1,330,000件)--
. 6(--) CBM-BASIC. 約    944,000件(....------------- )0
. 7(--) BasicStudio   約    303,000件(約    302,000件)+
. 8(--) N88BASIC..  約    219,000件(約    218,000件)+
. 9(--) X-BASIC...   約.     40,400件(....------------- )0
10(--) 99BASIC....   約.     11,400件(約.     11,300件)+

265 :デフォルトの名無しさん:2009/10/16(金) 10:41:37
>>264
大物が抜けてるぞ

JavaScript で検索した結果 1〜10件目 / 約2,830,000,000件 - 0.32秒

266 :デフォルトの名無しさん:2009/10/16(金) 11:14:16
プログラミング言語≠スクリプト

267 :デフォルトの名無しさん:2009/10/16(金) 11:29:37
CとC#って全然別物じゃねえかw
むしろJavaのほうが近いくらいなのに……

あとこれって 一般的な単語の basic や python って除外してるの?
できないと思うけど

268 :デフォルトの名無しさん:2009/10/16(金) 13:15:09
コピペねたに反応すんなぼけ

269 :デフォルトの名無しさん:2009/10/16(金) 14:49:44
文字コード警告の件だが、全世界で使うものなんだからせめてASCII限定にするとかできないのか
というわけでコードエラーを発生させている作者名(確か元凶そこだよね)が悪いということにしとく

270 :デフォルトの名無しさん:2009/10/16(金) 18:53:34
更新しました。何となく1.41リリースが近い様な気がします。
ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: fixing re-initialization problem for optional attributes
Spirit: improved fix for re-initialization of optionals, added tests
Spirit: added missing specialization to transform_attribute. Fixed qi::subrule to use this
Spirit: updating examples and tests
Spirit: removing remnants of safe_bool
[Fusion]
Spirit: improved fix for re-initialization of optionals, added tests
[Graph]
Fixed bugs in F-R layout
Fixed numlocalverts bug
Changed boost::get() call to get() to reflect new distributed property map namespace (boost::parallel)
[Serialization]
Address complaints for Inspect
fix memory leaks
Fix problem with multiple declaration of void_cast_register
[Exeption]
Added errinfo_nested_exception typedef. Fixed minor documentation error.
[Signals2]
Work around missing include in Boost.Variant headers
Include <functional>, for std::greater.
[Interprocess]
Fixes for 1.41
[Unordered]
Correct macro checks for initializer lists.
[Graph_parallel]
Added edges_are_sorted tag to distributed CSR graph ctor
since passing a sorted iterator range to the unsorted ctor
seems to produce a different graph than passing a sorted iterator range to the sorted ctor.

271 :デフォルトの名無しさん:2009/10/16(金) 19:30:21
うんこブー!(床に落ちて)スト!

272 :デフォルトの名無しさん:2009/10/16(金) 22:59:58
javaとか時代遅れだろw

273 :デフォルトの名無しさん:2009/10/17(土) 08:35:03
>270
なんとなくっていうか予定だとこう。
 10/18 1.41.0 Beta
 11/01 1.41.0 release
http://www.boost.org/community/index.html
ML でもリリースノートの更新依頼が出てた。
現状だと Property Tree が新規、Multi-index、Spirit、Wave が更新になってる。

274 :デフォルトの名無しさん:2009/10/17(土) 08:44:43
有難うございます。
1.39-1.40間はかなり変更が激しかったですが、
1.40-1.41間はfixやドキュメント整備が中心の様ですね。

275 :デフォルトの名無しさん:2009/10/17(土) 15:27:53
Boost 勉強会
http://atnd.org/events/1839

276 :デフォルトの名無しさん:2009/10/17(土) 15:39:51
開場がGREEってだけで行く気無くす
それより秀和の本の1.40か1.41対応第3版出してくれ
2版がまだ余ってるらしいので出せるかどうか結構微妙ではあるが

277 :デフォルトの名無しさん:2009/10/17(土) 15:43:19
ああ、でもC++0xというかVC2010が出てからの方がいいか
あっちに結構吸収されたライブラリがあるから

278 :デフォルトの名無しさん:2009/10/18(日) 11:08:56
>>276
boostのドキュメントを素直に翻訳したものを出してほしい

279 :デフォルトの名無しさん:2009/10/18(日) 19:58:35
boostのドキュメントのPDF版見てみりゃわかるけど、リファレンス部含めたらasioだけで969ページある
全部のドキュメント訳したら何千ページにもなるだろうからコミュニティベースで訳す他無いんじゃないか
最も、今までその試みが何度失敗したか分からんがね

第3版にrange_exが間に合うと良いなあ

280 :デフォルトの名無しさん:2009/10/18(日) 22:07:45
つかえねーやつほど
道具のせいにする
道具にも馬鹿にされて自己嫌悪に陥るな

281 :デフォルトの名無しさん:2009/10/19(月) 00:01:26
valut から property tree 落としてきて使ってみた。
これ面白い。
INI parser しか試してないけど、レジストリも触れちゃうみたい。

282 :デフォルトの名無しさん:2009/10/21(水) 13:09:36
> boostのドキュメントのPDF版
その存在を始めて知った!
HTMLしかないと思っていたよ

283 :デフォルトの名無しさん:2009/10/21(水) 22:03:52
わたしも……(´・ω・`)

284 :デフォルトの名無しさん:2009/10/22(木) 09:42:09
boostは便利だなぁ〜使えば使うほど実感するよ
挙動がよくわからなかったりマニュアルの英語が何言っているか理解できないときは
ヘッダを読むけどコレがとても為になるですよ

285 :デフォルトの名無しさん:2009/10/22(木) 09:45:16
$BOOST_ROOT/libs/*/test/*あたりのコードも参考になった

286 :デフォルトの名無しさん:2009/10/23(金) 11:15:11
CMakeのあつかいが変わった
めんどくせー

287 :デフォルトの名無しさん:2009/10/23(金) 21:19:15
>>286
CMake関連のファイルが大量に削除されたり変更されたりしていたので、
試しにプロジェクトを作成しようとしたらエラーになってしまったのですが
ビルド可能なのですか?

288 :デフォルトの名無しさん:2009/10/23(金) 22:00:59
更新しました。
ttp://booster.x0.to/
以下更新内容の一部
[Spirit]
Spirit: fixing endianess/truncation problem in Karma|s output iterator
Spirit: fixing tests for big endian binary generator
Spirit: removed undefined behavior in grammar initialization
[Interprocess]
Fixes for 1.41
[Intrusive]
Fixes for 1.41
[Graph]
Removed assertions that may depend on FP precision.
[Serialization]
add non-polymorphic pointer test
[Pool]
Allow zero-sized blocks to be allocated by malloc_n. Fixes #386
[Unordered]
Use normal emplace implementation for emplace_hint and insert with hint.
Fix allocator for construct from initializer list.
[Random]
Disable some warnings for msvc. Fixes #3532
[Math]
Improve ibeta error handling, and add new tests.
[Detail]
fix for fix in r35591: sometimes __hppa is on PA-RISC but __hpux isn't Fixes ticket #3537
[Signals2]
Qualify addressof call, refs #3534.
[Python]
Fix for #3490, parameter depends on python.
[Thread]
Added futures to boost.thread

289 :デフォルトの名無しさん:2009/10/24(土) 13:15:03

http://www.boost.org/doc/libs/1_39_0/libs/wave/doc/quickstart.html
にある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
>>287
別サイトから、CMakeの分だけダウンロードするようになった


291 :デフォルトの名無しさん:2009/10/24(土) 17:07:41
cmakeみたいなゴミ使わずにbjam使いましょう

292 :デフォルトの名無しさん:2009/10/24(土) 17:11:27
bjamとかカスだし。

293 :デフォルトの名無しさん:2009/10/24(土) 17:58:44
ゴミクズじゃないビルドシステムなど無い

294 :デフォルトの名無しさん:2009/10/24(土) 18:01:27
bjamなんてドキュメント読めば2秒で理解できるぞ

295 :デフォルトの名無しさん:2009/10/24(土) 20:16:13
ドキュメント読むのが億劫で読んでいなくてごめんなさい。

296 :デフォルトの名無しさん:2009/10/24(土) 20:26:11
事実上CMake対応は放棄か。

297 :デフォルトの名無しさん:2009/10/24(土) 20:48:02
なんでCMakeでビルドしたがるの?
bjamがあるじゃん。

Boostのビルドにおいて
CMakeがbjamを上回ることってなんかあるの?

特に>>292


298 :デフォルトの名無しさん:2009/10/24(土) 21:13:38
>>294
2秒でドキュメントは読めない

299 :デフォルトの名無しさん:2009/10/24(土) 21:18:03
ドキュメントを隅々まで読み終えてから、もう2秒必要ということなんだろう。

300 :デフォルトの名無しさん:2009/10/24(土) 21:21:11
えっくすこおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおど

301 :デフォルトの名無しさん:2009/10/24(土) 21:22:05
CMAKEなんてドキュメント読まなくても理解できたぞ。
ところで、なんで>>296みたいなアホがいるんだ。
ほんとに質が低いなこのスレは。

302 :デフォルトの名無しさん:2009/10/24(土) 21:36:33
自分で書くのならbjamよりcmakeの方が楽だった
y-hamigakiさんの書いた資料のおかげというのもあるけど
CMakeはprecompiled headerを使うのだけでも一苦労、
flymake用のsyntax check用の高速にビルドできるタスクを定義するのは並大抵のもんじゃないときた
cmake .とかするだけの使い方するなら問題ないけどな

303 :デフォルトの名無しさん:2009/10/24(土) 22:19:51
>>299
なるほど。
なら可能だ

304 :デフォルトの名無しさん:2009/10/25(日) 00:26:41
cmakeは使ったことないけど、bjam(+boost-build)はそこそこ対応コンパイラが多いのと、
自動的にdebug/releaseビルドのobjファイルを別場所に配置してくれるので切り替えが楽という利点があるな。
逆に問題はドキュメントが異様に少ないこと。
でもビルドに必要な大抵のことは(きちんとドキュメント化されているかは別として)できるかな。

305 :デフォルトの名無しさん:2009/10/27(火) 05:02:38
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 :デフォルトの名無しさん:2009/10/27(火) 07:00:59
>>305 http://osdir.com/ml/lib.boost.ublas/2006-03/msg00018.html

307 :デフォルトの名無しさん:2009/10/27(火) 11:27:08
>>306
ありがとうございます
参考にしてみます

308 :デフォルトの名無しさん:2009/10/28(水) 23:41:26
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
>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
こうなると名にやってんのか逆に分かりにくいな

311 :デフォルトの名無しさん:2009/10/29(木) 06:55:58
#define _ bind
std::count_if(bars.begin(), bars.end(),
    _(pred,
                _(&hoge::foo,
            _(&bar::fuga,
        _1))));
#undef _

312 : [―{}@{}@{}-] デフォルトの名無しさん:2009/10/29(木) 14:14:43
というか0xならもっと分かりやすく書けるの?

313 :デフォルトの名無しさん:2009/10/29(木) 14:22:38
std::count_if(bars.begin(), bars.end(),
    [] (bar& x) -> bool { return pred(x.fuga().foo()); })

314 :デフォルトの名無しさん:2009/10/29(木) 14:24:00
あ、戻り値の型はコンパイラにまかせてもいいんだったっけ。

std::count_if(bars.begin(), bars.end(),
    [] (bar& x) { return pred(x.fuga().foo()); })

315 :デフォルトの名無しさん:2009/10/30(金) 22:23:22
更新しました。今週はsmart_ptr, thread, regex, xpressiveといった割と使われていそうなライブラリに
fixや仕様変更が入っています。
ttp://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 :デフォルトの名無しさん:2009/10/30(金) 22:24:35
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
すみません、>>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 :デフォルトの名無しさん:2009/11/06(金) 22:04:19
ttp://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]
https://svn.boost.org/trac/boost/ticket/3579
[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の配布も始まっています。
ttp://sourceforge.net/projects/boost/files/

319 :デフォルトの名無しさん:2009/11/07(土) 05:42:37
>>318

320 :デフォルトの名無しさん:2009/11/10(火) 10:06:18
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
お遊びですが・・・
>>320 のプログラムは、lambdaか否かを判断するmeta function を作ろうとした
のですが、???? の部分で困っています。

boost::lambda::_1 * 2 とある時、引数の型が知りたい。
でも、これは無理ですよね。

簡単言うと、is_lambda_implをlambda式に応じて呼び分けしたいのです。
何かいい案ないですか?

322 :デフォルトの名無しさん:2009/11/10(火) 10:14:14
>>320
is_lambda_impl<F>::value じゃないの?
そうじゃなければ何がしたいのかよくわからん。

323 :デフォルトの名無しさん:2009/11/10(火) 10:26:39
>>322
それじゃ駄目ポ。
template<class F>
struct is_lambda_impl
{
static const bool value = false;
};
にいっちゃいます。

324 :デフォルトの名無しさん:2009/11/10(火) 10:29:47
>>323
なら ???? の部分じゃなくて特殊化ができてないんじゃないの?

325 :デフォルトの名無しさん:2009/11/10(火) 10:34:21
>>324
あんまり、そこに拘る必要はないです。
lambdaか否かを判断するmeta function が作れればおk。

326 :デフォルトの名無しさん:2009/11/10(火) 10:40:42
>>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 :デフォルトの名無しさん:2009/11/10(火) 11:00:54
こゆこと? (動作確認してないけど)

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 :デフォルトの名無しさん:2009/11/10(火) 11:01:01
>>325
まずは、何か lambda expression だけの特性を探すことだね。

unlambda してみて違う型が返ってくるようなら true になる関数とか?

329 :デフォルトの名無しさん:2009/11/10(火) 11:23:13
>>328
unlambdaすると false になります。

330 :デフォルトの名無しさん:2009/11/10(火) 20:24:31
>>327
駄目ポ。

template<template <class f> class T, class F>
bool is_lambda_(T<F>)
全て↑が選択されて、falseになる

331 :デフォルトの名無しさん:2009/11/11(水) 01:34:45
>>328
遊びだとか実装方法は問わないとか言ってるから、 unlambda() のソースから
扱いを分けてるところパクってきたほうが早そう。

332 :デフォルトの名無しさん:2009/11/11(水) 11:41:35
できた。でもg++でコンパイル通らないorz
http://codepad.org/2lcnEjvI

333 :デフォルトの名無しさん:2009/11/11(水) 17:16:17
g++でもできた。単純なミスだった。
http://codepad.org/LUAbunUM

334 :デフォルトの名無しさん:2009/11/13(金) 23:53:06
更新しました。今週はコンパイル時の警告の抑制が中心の様です。
ttp://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
[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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/11/15(日) 02:14:23
お前だけじゃね?
こっちはそんなことないが。

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

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

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

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

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
boost::function、bind、refの組み合わせってboost::spiritのセマンティックアクションに
渡せますが、tr1の物だとダメなようです。
これらのようにtr1とboostの物での違いの、一覧みたいなのは無いでしょうか?

343 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/11/24(火) 01:34:40
boost::iostreamsを使ってストリームりました。
このストリームを外から見たときはboostを使ったように見えないように、ダウンキャストしてostreamか何かに入れて置きたいのですが、どうにもうまくいきません。
どうしたら良いのでしょうか。

std::ostream a = boost::iostreams::stream<boost::iostreams::null_sink>();

こんなことがしたいです。

347 :デフォルトの名無しさん:2009/11/24(火) 02:01:44
>>346
たぶん、C++0xだとそれでコンパイルできると思う。

とりあえず現状ではtypedef boost::iostreams::stream<hogehoge> my_stream_type;みたいにごまかすくらいしかないと思う。
もちろん、オブジェクトを関数の引数として渡すときには、もちろんstd::ostream&やstd::istream&で受け取れるけど。

348 :346:2009/11/24(火) 02:16:53
>>.347
解答ありがとうございます。出来ませんか・・・。

349 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/03(木) 02:46:03
intrusive_ptrのコンストラクタにexplicitがついてないのはなんでなんだぜ?
デフォルト値があるだけで、厳密には1引数じゃないから?

353 :デフォルトの名無しさん:2009/12/03(木) 03:12:25
intrusive_ptr & operator=(T * rhs)
があるね

354 :デフォルトの名無しさん:2009/12/03(木) 13:33:43
boostのコンパイル済み.libって、同じコンパイラでも内部で使用するクラスの実装、
たとえばSTLが違う場合(VC++で標準STLかSTLPortか)にリンクしても問題ない?
標準STLでもセキュリティ強化の#defineを指定すると実装内容が変わったりするし・・・


355 :デフォルトの名無しさん:2009/12/03(木) 17:13:48
STLPortはBoostビルド時に専用のコンフィグコマンドがあるので、
問題があるかどうかは知らんけどとりあえず自前でビルドして使った方がいいと思う

356 :デフォルトの名無しさん:2009/12/04(金) 04:02:55
>>353
あー、intrusive_ptrに対応してるクラスなら、
そのポインタから安全に変換できるはずだからexplicitは必要ないってことか。

357 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/05(土) 14:43:24
使ってないが乙

359 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/07(月) 18:03:23
boostをちゃんとインストールしよう。
そのままだとヘッダだけで使えるライブラリしか使えないよ。

362 :デフォルトの名無しさん:2009/12/07(月) 18:47:25
>>361
解決しました。

インストールはしていたのですが、どうやらライブラリのパス指定が間違っていたようです。
標準に指定されるディレクトリから変更した場合、そことは別の場所にライブラリフォルダができてしまうようで……。
コマンドプロントのメッセージを追ってたら気付くことができました……。

どうも、ありがとうございました。

363 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/09(水) 00:18:19
自己解決。
namespace が boost::spirit::classic になったのか。失礼した。

365 :デフォルトの名無しさん:2009/12/09(水) 06:37:45
ここにもspiritの罠に引っかかった生け贄が一人いたか。

俺もだ。

366 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/11(金) 14:00:00
boost::thread thr_tmp(boost::bind(&Hoge::fanc, &tmp, 10, 20));

でx=10, y=20になるが

あとfancじゃなくてfuncではなかろうか

369 :デフォルトの名無しさん:2009/12/11(金) 14:02:12
368はVC++2008ね。
上記でだめならコンパイラ依存問題かも

370 :デフォルトの名無しさん:2009/12/11(金) 14:19:44
>>368
解決しました。
ありがとうございました!

371 :デフォルトの名無しさん:2009/12/12(土) 09:02:35
fack youのコピペ思い出した。

372 :デフォルトの名無しさん:2009/12/12(土) 10:10:20
仲良くなった。

373 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/14(月) 00:16:47
勉強会のshared_ptrの発表聞きたいんだけど「えっと」が強烈に心を折りにくる。

376 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/14(月) 14:37:08
lexical_castを読むと、charかwchar_tのどっちか限定で処理するっぽいから
stringとwstringの同時使用ができないのでは

379 :デフォルトの名無しさん:2009/12/14(月) 14:40:26
>>377
>stirng str;
string str
ですね。
本筋ではないのですが一応元ソースではちゃんとしてます。


380 :デフォルトの名無しさん:2009/12/14(月) 14:44:19
>>378
つまり、stringをwstringにキャストしようとしても、
そもそもlexical_cast内ではふたつを同じ型として扱ってるので、
キャストできないということですか……?

381 :デフォルトの名無しさん:2009/12/14(月) 14:45:55
引数からどちらの文字列型を使うか判定しているので、その結果生成される
内部処理ストリームがWide変換/逆変換をサポートしていない限り非対応ということに。

382 :デフォルトの名無しさん:2009/12/14(月) 14:55:34
>>381
なるほど、ありがとうございました。

設計をみなおすか……。
全部2バイト文字にしたあと処理できたら楽になるのになぁ。
ユニコードは三点リーダーが汚くなるから使いたくないし……。

383 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/15(火) 18:38:35
1.41から正規

386 :デフォルトの名無しさん:2009/12/15(火) 18:40:34
おお、では勉強しなきゃなるまいな。
ありがとう。

387 :デフォルトの名無しさん:2009/12/15(火) 19:04:02
C#のプロパティみたいなものかと思ったら、streamの類か。

388 :デフォルトの名無しさん:2009/12/16(水) 22:37:56
>384
余談だけど
ttp://www.boost.org/doc/libs/1_41_0
ここの First Release 見ればいつから正規かは分かる。
しかし Property Tree のレビューって 2006 年 4 月だったんだな。

389 :373: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/17(木) 12:53:12
そこはequal_to<T>を指定するところだから

392 :デフォルトの名無しさん:2009/12/17(木) 13:48:31
クラスSからクラスTにキャスト可能であるかどうかを
判定するメタ関数はありますか?
is_castable_into<S, T>::value
的な使い方ができる物です。

393 :デフォルトの名無しさん:2009/12/17(木) 13:50:37
>>391
おぉ、勘違いしておりました。
unordered_setはstd::setの様に初めから逆ソートは出来ないのでしょうか?

394 :デフォルトの名無しさん:2009/12/17(木) 13:53:12
unordered の意味、わかってるの?

395 :デフォルトの名無しさん:2009/12/17(木) 13:59:39
>>392
is_convertible<From, To>


396 :デフォルトの名無しさん:2009/12/17(木) 14:09:56
>>395
ありがとうございます。

397 :デフォルトの名無しさん:2009/12/17(木) 14:43:00
実装を知らずにコンテナを使うのは問題だな

398 :デフォルトの名無しさん:2009/12/17(木) 14:45:23
完璧に知る必要は全く無いが、原理くらいは知らないとな…

399 :デフォルトの名無しさん:2009/12/17(木) 14:49:03
実装以前に使うクラスの名前くらいちゃんと読めって話だよ

400 :デフォルトの名無しさん:2009/12/17(木) 16:11:12
>>377
stringの中身がutf8ならto_utf8、from_utf8で
wstringと相互変換できるぞ。
sjisは扱えないけど、ASCIIとは互換性がある。

401 :デフォルトの名無しさん:2009/12/17(木) 17:22:44
boost::numeric_castを使おうとすると、converter_policies.hppというファイルで、
ceilとfloorのオーバーロード関数の呼び出しを解決することができないという
エラーが出るのですが、何か解決策はありますでしょうか?
環境はVisual C++ 2008、Boost 1.41.0です。

402 :デフォルトの名無しさん:2009/12/18(金) 01:47:54
>>401
エラーメッセージは正確に。
コピペ推奨。

403 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/18(金) 05:19:05
GCCは一応対応してるけど使用は非推奨で警告でたりするからじゃね

405 :デフォルトの名無しさん:2009/12/18(金) 05:39:26
VCにpragma指令を入れてるのは単にコンパイルの高速化の為かと
GCCはインクルードガードだけで十分

406 :403:2009/12/18(金) 06:17:18
ああそうか、そういえばgccはインクルードガード検知すると自動で
#pragma once相当の処理をするとかどこかで読んだ。納得。

407 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/18(金) 14:15:33
karaokeThread があやしいな。

409 :デフォルトの名無しさん:2009/12/18(金) 14:17:44
>>407
まだ変に省略してないか?
VC++ だとテンプレート引数の情報とかエラーメッセージに出たような・・・。

常套手段だけど、同じエラーを出す最小のソースを作ってみるといい。

410 :デフォルトの名無しさん:2009/12/18(金) 14:24:13
>>407 http://ja.lmgtfy.com/?q=C2668

411 :401:2009/12/18(金) 22:53:49
自己解決しました。どうやらifstream.tellg()の戻り値を変換させるときに
のみエラーが出るようなので、そこだけstatic_castにしました。
どうもお騒がせしました。

412 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/19(土) 05:04:38
>>412
いつも乙。
ところで列記してある更新内容のリストはどこで参照できますか?


414 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=311885

あと、細かいけど 1.42 は未リリースだから現時点(あるいは特定リビジョン)での trunk でという表現が
正しいと思う。

417 :デフォルトの名無しさん:2009/12/20(日) 09:50:29
>>416
ありがとうございます、参考になります。

418 :415: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2009/12/22(火) 21:57:39
probably corrupted stack

423 :デフォルトの名無しさん:2009/12/22(火) 21:59:52
よく分からんが、uBLASは1.40でlu.hppも含めてアップデートされているので
1.40で試してみたらどう

424 :デフォルトの名無しさん:2009/12/22(火) 22:22:56
>>423
ありがとうございます
とりあえず、アップデートして行ってみましたが状況変わらずでした
LU分解の後退代入で配列の不正アクセスか,配列が破壊されてるかどちらかが起きてるのはわかるんですが
毎回違うタイミングで起きるので原因が良くわからないです
代入する値はループ毎に変わりますが乱数を使ってるわけではないのでエラーを吐き出すとしたら同じループ回数だとは思うんです

425 :デフォルトの名無しさん:2009/12/22(火) 22:39:03
取り敢えず、デバッグして発生条件を絞っていくしかないな

426 :デフォルトの名無しさん:2009/12/23(水) 01:01:44
まさかとは思うがuBLAS最新はVC系はサポートされてないぞ。

427 :デフォルトの名無しさん:2009/12/23(水) 01:06:07
ビタミンC?

428 :デフォルトの名無しさん:2009/12/23(水) 05:00:13
>>421
もうエラーの内容も覚えていないんだけど
uBLASつかってるシングルスレッドのプログラムを
問題を複数に分けてマルチスレッドで分散してやるようにしたらわけのわからないエラーが出始めた
納期があったから細かく調べずにマルチプロセスで逃げたw

まったく参考にならんけど思い出した

429 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/02(土) 09:11:03
初歩的な質問で恐縮なのですが…

win2000+VisualStudio2005+Microsoft Platform SDK for Windows Server 2003 SP1で、
Boost1.41をダウンロードしてきてbootstrapとbjamを実行し、
http://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 :デフォルトの名無しさん:2010/01/02(土) 10:08:41
ファイル名が微妙に違ったりしてないかい

433 :デフォルトの名無しさん:2010/01/02(土) 11:58:11
>指定されたファイルはC:\Boost\bin.v2\libs\filesystem\の下層にちゃんとあるのですが、
>(中略)
>ライブラリファイルにC:\Boost\bin.v2\libsを追加
bin.v2 の下は未インストール状態のものなのでその下層のパスまでちゃんと指定するか、install して
一ヶ所にまとめられたディレクトリを指定するかどっちかだと思われ。

434 :デフォルトの名無しさん:2010/01/02(土) 12:34:19
おいおい、bin.v2はビルド時の中間ファイル置き場だろ。
bjamのオプション次第だけど、普通はstage\libだろ。

435 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/03(日) 18:56:13
>>436
俺はやったことないからわからんが、そのページに
>MPICH2 では手元の環境ではうまく動かず…。
って書いてあるのに、そのままで問題ないかと言われても…。

438 :デフォルトの名無しさん:2010/01/04(月) 13:41:42
>>436
MPIの使い方はよく分かりません。
Boost 1.41 + MPICH2で試してみましたが、ビルドまでは通るものの実行時に例外エラーが発生しますね。

439 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/05(火) 12:51:23
はじめまして。Boost.MultiArray の設計について教えていただきたいのですが、
multi_array_ref や const_multi_array_ref は何のために設計されているのでしょうか?
参照では問題がある場合に使うことを想定しているのでしょうか?

441 :デフォルトの名無しさん:2010/01/05(火) 16:41:32
参照の参照を内部で回避してるんじゃないかとエスパー

442 :440:2010/01/05(火) 19:07:57
>>441
どうもありがとうございます。やっぱりそうなんですかね。

443 :デフォルトの名無しさん:2010/01/05(火) 19:28:58
実装読まずに適当に推測すると
名前的にはauto_ptrに対するauto_ptr_refとかと同じ用途なんじゃない?

444 :デフォルトの名無しさん:2010/01/05(火) 19:33:56
用途的には、multi_array_refはトラディショナルな配列のポインタを渡してmulti_arrayとして扱うためのラッパー。

445 :デフォルトの名無しさん:2010/01/05(火) 20:00:51
fucktoryパターンってなに?><

446 :デフォルトの名無しさん:2010/01/05(火) 20:11:44
fucker

447 :デフォルトの名無しさん:2010/01/05(火) 20:12:21
子作りでインスタンスを増やすパターン

448 :デフォルトの名無しさん:2010/01/05(火) 20:14:58
>>443
> 実装読まずに適当に推測すると
> 名前的には
現実的にはこれができるのが一番いいよね。
むずかしいけどさ。

俺 名前づけのセンスないし。


449 :デフォルトの名無しさん:2010/01/06(水) 22:48:22
「画像を扱うライブラリが増える」と聞いて、bimapだと勘違いした人、正直に手を上げなさいノシ

450 :デフォルトの名無しさん:2010/01/06(水) 23:52:48
Boost.SpiritはV2になって、
結局 何が良くなったのでしょうか?

コンパイル速度は悪くなったと思いますが、
実行時速度とかでしょうか?


451 :デフォルトの名無しさん:2010/01/07(木) 12:19:06
Spiritのソースのメンテ性(Spiritを使ったソースではない)が上がったんじゃなかったか。

452 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/07(木) 13:11:05
>>453
あたりまえじゃないか。

挙動が変わるはずだという理屈があるなら言ってみれ。

455 :デフォルトの名無しさん:2010/01/07(木) 13:21:25
直接代入が参照のコピーか移動かの仕様が自分の中でちょっと疑問でして、
実行結果を見れば一目了然なんですが、

これですっきりしました、有難うございました。

456 :450:2010/01/07(木) 20:11:07
>>451
ありがとうございます。
そうですか。

・・・でもまだ正直v1よりバグが多いとかですかね?

457 :デフォルトの名無しさん:2010/01/07(木) 20:42:56
Spiritは毎日のように更新されてるので、バグ多しっつーより未完成ってイメージが

458 :デフォルトの名無しさん:2010/01/07(木) 20:45:32
>>457
そうなんですか。
まさかのこれ以上の機能拡充とかですかね。
ありがとうございます。

459 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/08(金) 22:08:02
と、改めてMPICH2の使い方を調べてテストし直してみましたところ、
x32, x64双方共正常に動作しました。
管理者権限でコマンドプロンプトを起動して、

smpd -install
mpiexec -n 8 test.exe

です。
Boost.MPIは次回のビルドからまたMPICH2仕様に戻します。

461 :デフォルトの名無しさん:2010/01/08(金) 22:18:17
あ、mpiexecよりGUIであるwmpiexecから起動した方が簡単ですね。

462 :440:2010/01/09(土) 14:59:43
>>444
なるほど!仕様を読んでみると確かにそういう風に使えるんですね、というか書いてありますね…見落としてました…すみません。

463 : [―{}@{}@{}-] デフォルトの名無しさん:2010/01/09(土) 17:03:30
boost::lexical_cast<int>("0x12345");のように、0xがついている文字列が
変換できないのですが、うまく変更できるようにするにはどうすればいいでしょうか?

464 :デフォルトの名無しさん:2010/01/09(土) 17:34:08
lexical_castは誰もが待ち望んでいて、そしてガッカリした代物だよな・・・

465 :デフォルトの名無しさん: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:2010/01/09(土) 17:41:23
>>464
>>465
ありがとうございます.
lexical_cast は過去に 1e+8 のような形式を変換できずがっかりした記憶が
あるのですが、いつの間にかできるようになってて驚きもしました.
0x にもいつか対応してくれると信じて待つとします.

http://stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer

467 :デフォルトの名無しさん:2010/01/09(土) 17:55:57
いや、cinなどbasic_istreamでも(hex指定しない限り)十六進法の入力はできないのだから、
いつまで待っても、lexical_castでできるようにはならないだろう。

468 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/09(土) 22:37:51
>>468
0x ついてるときはそれでいいけどついてないときには使えないからな〜
中の人の対応を待ちたい

470 :デフォルトの名無しさん:2010/01/09(土) 23:23:39
>469
codepad だと通るんだが。
ttp://codepad.org/nfkFKOZC

471 :デフォルトの名無しさん:2010/01/10(日) 06:39:11
>>428
関数の中でグローバルポインタの割り当て/開放をしてるのかね。

472 :デフォルトの名無しさん:2010/01/10(日) 14:55:21
strtol・strtoulなら文字列の書式から進数の自動判定が行われるんだし、
CRT使うと死ぬ体質じゃないんならそれ使って実装しときゃいいんでは。

473 :デフォルトの名無しさん: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
http://d.hatena.ne.jp/tt_clown/20081225/p1

476 :デフォルトの名無しさん:2010/01/13(水) 00:11:50
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/ipaddr.html

477 :デフォルトの名無しさん:2010/01/13(水) 00:18:15
http://grayhole.blogspot.com/2008/10/boostasio-syslog.html

478 :デフォルトの名無しさん:2010/01/13(水) 00:24:39
http://blog.goo.ne.jp/dc1394/e/a03ed6855fd2ff595ad1990b1c9d067c

479 :デフォルトの名無しさん:2010/01/13(水) 00:26:48
>>475
boostに固執する意味はないので,本質的にはその方法で解決できそうです.
ありがとうございます.

自分でサーベイしたところ
今の時点でboostでもリゾルバに頼れば出来るということが分かりました.

http://groups.google.co.jp/group/boost-list/browse_thread/thread/7142d22d86aa6bd9?pli=1
http://grayhole.blogspot.com/2009/11/boostasio-udp.html

ただ
DNS情報がないと駄目なので一部の環境では動かないことが予想されますが...

480 :デフォルトの名無しさん:2010/01/13(水) 00:28:28
>>476,477,478
のろのろ書いてる間にすみません.
ありがとうございます.

481 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/16(土) 18:11:55
>>483
そんなの決まってないよ。双方向の operator () が用意されてれば問題ない。
bind じゃ無理そうだけどね。

485 :481:2010/01/16(土) 18:21:55
>>482, 483, 484
ありがとうございました。無理みたいですね。
関数オブジェクトを使うことにします。

486 :デフォルトの名無しさん:2010/01/17(日) 17:08:19
shared_ptrだけが使いたいんだけど
その目的のためにBoostを入れるのは大掛かりすぎる、と思うような人に
良い解決策はありますか?

487 :デフォルトの名無しさん:2010/01/17(日) 17:11:54
>>486
そういう用途で bcp っていうツールが用意されてるんだけど、
やってみると shared_ptr だけでもけっこうな依存関係になってて、
結局全部そのまま使うことにしたことがある。

488 :デフォルトの名無しさん:2010/01/17(日) 17:14:11
>>486
Boostを入れるったって、別に全部リンクされるわけじゃないんだから、
普通にBoost入れてshared_ptrだけインクルードするんじゃだめなの?

489 :デフォルトの名無しさん:2010/01/17(日) 17:39:55
だねえ、オブジェクトファイルも使わないし、
shared_ptr.hppをインクルードして使えば
完成したバイナリは希望通りshared_ptrだけを使ったバイナリになるし。

490 :デフォルトの名無しさん:2010/01/17(日) 17:40:36
std::tr1::shared_ptrが使える環境にするとか

491 :デフォルトの名無しさん:2010/01/17(日) 17:44:47
VC++2008ならSP1以降は標準でshared_ptr使えるな

492 :デフォルトの名無しさん:2010/01/17(日) 17:48:33
俺はstd::tr1::shared_ptrよりもboostの方が信頼できるor同等程度だと思っている。

だがそれはさておきboostの一部分だけ取っていじったのが認められるんなら
boostそのものだって認められるだろ?
やっぱそのままの方が良いと思うんだぜ。

493 :デフォルトの名無しさん:2010/01/17(日) 18:00:35
チーム内のよくわからん奴が
勝手にshared_ptr以外のライブラリをiincludeするのを避けたいんだろ


494 :デフォルトの名無しさん:2010/01/17(日) 18:07:19
エスパーすぎる

495 :デフォルトの名無しさん:2010/01/17(日) 18:50:55
>Boostを入れるのは大掛かりすぎる

自分もboost入れる前はそう思ってた

496 :デフォルトの名無しさん:2010/01/17(日) 19:05:31
そりゃTR1ライブラリよりBoostの方が格段に信頼性は上だろうな

だが世の中には色々な(往々にして訳分からんand/or間違った)理由で「Boostは
ちょっと」って奴もいるからなぁ
他人のコードでバグ出た時ってマジきついしー、みたいに言われた時は、そんなら
標準ライブラリも普通にバグ出るから使うなよって思った

497 :デフォルトの名無しさん:2010/01/17(日) 19:15:41
そんなこと言ってるやつのコードよりboostの方がよっぽど信用できるわな

498 :デフォルトの名無しさん:2010/01/17(日) 20:17:47
>>496 単に今までのスタイルを壊されるのが嫌だって理由の連中がいたりするからなあ
そういうのがいると、バージョン管理ソフトさえ入れられない。

499 :デフォルトの名無しさん:2010/01/17(日) 20:37:11
そういうヤツの会社は潰れるか少なくとも競争には負けるから
心配要らないよ。

500 :デフォルトの名無しさん:2010/01/17(日) 21:29:34
>>486
まず数十行程度の自作スマートポインタから始める。
それで事足りればそれでおしまい。
それじゃ足りないと頭を抱えた時になって初めて確信を持ってshared_ptrを使う。

501 :デフォルトの名無しさん:2010/01/18(月) 05:25:49
shared_ptrだと生に比べてパフォーマンスも下がるし、かなりサイズも大きくなるってのもあるし、
本当に必要かどうかは考えた方が良いのかも。
特にサイズはポインタ1つあたり10倍以上増えるんだっけ?
生ポインタ
参照カウンタ
shared_ptrのvirtual関係
デリータ+virtual
ミューテックス
で。


502 :デフォルトの名無しさん:2010/01/18(月) 06:43:23
shared_ptrを使わなければ実装できないデータ構造ではそれらのメンバは必須であり
10倍以上という増加も必要な増加だ。

503 :デフォルトの名無しさん:2010/01/18(月) 08:18:04
>>501
それは最悪の場合のサイズでしょ。
virtual関係を共通化したり、atomic操作を使ったり、
実装上の工夫でもっと減らせる。

504 :デフォルトの名無しさん:2010/01/18(月) 08:51:26
パッと見だとInterlocked系の操作で済ませてるからミューテックスとか要らなくね?

505 :デフォルトの名無しさん:2010/01/18(月) 09:21:34
shared_ptrのミューテックスはマルチスレッドのためのものじゃない。

506 :デフォルトの名無しさん:2010/01/18(月) 09:23:34
えっ

507 :デフォルトの名無しさん:2010/01/18(月) 09:30:25
何に使うの?

508 :デフォルトの名無しさん:2010/01/18(月) 09:46:19
日本の参政権は日本人のためだけのものじゃない。

509 :デフォルトの名無しさん:2010/01/18(月) 09:48:11
僕たちは天使じゃない。

510 :デフォルトの名無しさん:2010/01/18(月) 10:07:51
トムは鉛筆ではない

511 :デフォルトの名無しさん:2010/01/18(月) 13:07:00
Tom is a pen.

512 :デフォルトの名無しさん:2010/01/18(月) 13:15:29
>>503
そりゃboostのは使わないで自分で作れと言ってるのか?

513 :デフォルトの名無しさん:2010/01/18(月) 13:41:26
つーかboostのってmutexなんか使ってんの?

514 :デフォルトの名無しさん:2010/01/18(月) 14:40:30
mutexではなくspinlockになってた

515 :デフォルトの名無しさん:2010/01/18(月) 14:47:02
atomicなintrinsicが使えるような処理系ならその辺使わないんじゃね?
知らんけど

516 :デフォルトの名無しさん:2010/01/18(月) 15:35:24
spinlockを使うのは排他中の処理が非常に早く完了するだろうと予測しているから?

517 :デフォルトの名無しさん:2010/01/18(月) 16:42:09
>>500
1 ひとりプロジェクトならスマートポインタは必要ない。
2 協調作業の場合、自作スマートポインタの仕様を説明するのが面倒だからよそのライブラリを使ったほうが説明しやすい
ゆえに自作スマートポインタは必要ない

518 :デフォルトの名無しさん:2010/01/18(月) 16:45:09
>>517
> 1 ひとりプロジェクトならスマートポインタは必要ない。
いやいやいや。

519 :デフォルトの名無しさん:2010/01/18(月) 16:55:00
scoped_ptr以外はコード毎最適実装が無限にあるからね

520 :503:2010/01/18(月) 19:32:14
>>512
誤解させてすまんかった。
boostの環境依存コードにはすでに実装上の工夫がだいぶ入っている。


521 :デフォルトの名無しさん:2010/01/18(月) 20:14:11
>>501
それはどこのshared_ptrですか?
boostのshared_ptrはカウンタクラスにvtableとuse_countとweak_countしかないよ。
アトミック命令でインクリメントするからミューテックスは必要ないし。

522 :デフォルトの名無しさん:2010/01/18(月) 20:23:32
>>521
アトミックも何も使えない環境だと本当に肥大化するよ。
1.35のsp_counted_base_pt.hppを見てみ。

523 :デフォルトの名無しさん:2010/01/18(月) 21:02:05
シングルスレッド確定なら
#define BOOST_SP_DISABLE_THREADS
という手もある

524 :デフォルトの名無しさん:2010/01/18(月) 21:10:38
>>523
そんなん初めて知ったわ

525 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/19(火) 01:03:05
ライブラリの普及活動ってデリケートだよな、
失敗時に下手すりゃ関連ライブラリにも飛び火するし。

527 :progress_display:2010/01/20(水) 13:10:13
まったくですよ

528 :デフォルトの名無しさん:2010/01/20(水) 15:01:57
>>527
貴方はお引き取りくださいw

529 :デフォルトの名無しさん:2010/01/20(水) 16:37:42
飛び火するようなアレだっけ?

530 :デフォルトの名無しさん:2010/01/20(水) 16:54:00 ?2BP(0)
progress_displayを見たとき

ああこれは他のプロセスから進捗状況を取得できるAPIも用意されてるんだな。
そうにちがいない。
まさか表示するだけなんてことはあるまい。

531 :デフォルトの名無しさん:2010/01/21(木) 11:44:45
もう許してやれよ

532 :compressed_pai:2010/01/22(金) 20:58:00
絶対に許さない

533 :デフォルトの名無しさん:2010/01/23(土) 00:59:47
paiってなんかえろいな

534 : [―{}@{}@{}-] デフォルトの名無しさん:2010/01/23(土) 08:00:23
貧乳ですねわかります

535 :デフォルトの名無しさん:2010/01/23(土) 08:35:21
#define compressed_pai 3

536 :デフォルトの名無しさん:2010/01/24(日) 12:58:04
せめて浮動少数にしてあげて;;



537 :デフォルトの名無しさん:2010/01/24(日) 19:10:44
compressされてるので無理です。有理だけど。

538 :デフォルトの名無しさん:2010/01/24(日) 19:27:42
#define compressed_pai (355/113)

539 :デフォルトの名無しさん:2010/01/24(日) 19:28:17
355.0/113.0

540 :デフォルトの名無しさん:2010/01/24(日) 19:34:26
そういやこんなスレがあったな。
ttp://pc12.2ch.net/test/read.cgi/tech/1248060999/
無限精度実数ライブラリなんだとさ。
これさえあればpiも無限精度でいけるぜ。

・・・いつ使うのかはしらんが、画期的なにおいがある。

541 :デフォルトの名無しさん:2010/01/24(日) 21:18:09
ICUサポートを有効にしたままRegexをstatic-staticでビルドってできないのかな?
ICUをstaticでビルドしてるからRegexもlink=staticでビルドしたい

542 :デフォルトの名無しさん:2010/01/24(日) 21:42:20
ま、無限精度じゃないしな。

543 :デフォルトの名無しさん:2010/01/24(日) 22:08:45
>>541
Bjamのソースか関連ファイルを改造しないと無理と思われます。

544 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/25(月) 14:53:21
boost::iostreams使ってラッパ作るとか

547 :デフォルトの名無しさん:2010/01/25(月) 14:57:15
boost::asio::ip::tcp::iostreamは既に存在する

548 : [―{}@{}@{}-] デフォルトの名無しさん:2010/01/25(月) 19:05:01
namespace boost.asio 内に
socket& operator<<(socket&, const std::string& request);
って関数用意するくらいしか思いつかないな
iostreams とか使ってもできそうな気がするけど

549 :デフォルトの名無しさん:2010/01/25(月) 22:13:04
asioのマニュアル>Examples>HTTP Clientでもお読み

550 :デフォルトの名無しさん:2010/01/25(月) 22:41:49
asioってソケット何個まで同時に開けますか?

551 :デフォルトの名無しさん:2010/01/29(金) 12:06:43
boostの使い方じゃなくて実装を中心に解説してる本ってあるの?

552 :デフォルトの名無しさん:2010/01/29(金) 22:13:17
>>550
OSの制限まで使えると思う。Asio自体には特に制限はないのでは?

553 :デフォルトの名無しさん:2010/01/29(金) 23:22:17
あっしお(あっそ)

554 :デフォルトの名無しさん:2010/01/30(土) 00:28:44
>>552
じゃWinの場合は1スレッド32個までなのかな。

555 :デフォルトの名無しさん:2010/01/30(土) 03:11:51
>>554
WaitForMultipleObjectsの制限で64個のほかに何かあるの?

556 :デフォルトの名無しさん:2010/02/03(水) 20:34:31
1.42.0

557 :デフォルトの名無しさん:2010/02/06(土) 23:11:24
>>556
祝age

558 :デフォルトの名無しさん:2010/02/06(土) 23:38:54
えー・・・
昨日1.41.0入れたばかりなのに
ちなみにその前日まで1.38使ってました

559 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/02/07(日) 15:55:40
program.optionsは1.42でも更新されてるから最新で試してみれば?悩むのはそれからでもいいんじゃね?


561 :デフォルトの名無しさん:2010/02/07(日) 22:17:07
>>560
とりあえず使える状態だった1.41.0で
implicit_valueを試してみたけどダメみたいだね。
次のargvを引数にするみたい(´・ω・`)

562 :デフォルトの名無しさん:2010/02/07(日) 22:20:18
program_optionsは、以前試したら、
unicode対応の意味を分かってないクソ設計だった。
正直、progress_displayと同レベル。

563 :デフォルトの名無しさん:2010/02/07(日) 22:35:40
program_optionsはもうちょっと何とかならないのかな。あとspirit。
定番用途なのにもったいない。
progress_displayは別にいいや。

564 :デフォルトの名無しさん:2010/02/07(日) 22:51:05
>>563
Boost.Spiritはv2になってコンパイル速度が遅く
なったのが痛いな。
とはいえCPUがこれから先 さらに進歩すれば十分使えるようになるだろう。
・・・たぶん。


program_optionsはそもそも事前にビルドしておかないといけないってのが
難点というか、俺はそれで使ったことない。

progress_displayは・・・まあ別にいいや。
rootでなくてどっかのディレクトリに入って欲しいなぁってくらい。


565 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/02/07(日) 23:07:56
boost/exception.hpp が使えなくなってるぅぅぅるうううるるううーorz
boost/exception/all.hpp を使えだってさ

568 :デフォルトの名無しさん:2010/02/08(月) 00:35:02
>>567
さすがにこの変更はないわ
boost/exception.hppでall.hppをincludeしてくれたらよかったのに

569 :デフォルトの名無しさん:2010/02/08(月) 10:08:38
>>562
海外製のライブラリはそんなのが多いような気がする。
VisualStudio限定の話になるけど、文字セットを「Unicode文字セットを使用する」に設定するとおかしくなる感じで。

570 :デフォルトの名無しさん:2010/02/08(月) 10:22:46
boost::exceptionは破壊的変更やりすぎ
もっと練ってから入れて欲しかった

571 :デフォルトの名無しさん:2010/02/08(月) 20:05:03
何も考えずにall.hppに変更してたんだけど、そんなことになってたのか。
spiritに続いてこの仕打ちは酷いよ。


572 :564:2010/02/08(月) 21:31:20
boost::exceptionも使ったことないから分からん。
やっぱboostに入るぐらいだから便利なんだろうか。
紹介を見てもそんな例外をばりばりに使用しないしって思っちゃう。。。

573 :デフォルトの名無しさん:2010/02/08(月) 22:52:17
例外でエラー通知する場合は便利じゃない

574 :デフォルトの名無しさん:2010/02/09(火) 05:19:46
Boost 1.42
shared_ptr<string>がBoost.Serializationでシリアライズできない。
STATIC_ASSERTにひっかかる。

575 :デフォルトの名無しさん:2010/02/09(火) 14:04:38
>>561
結局、command_line_parserに渡す前に自前で処理しました。
GNU拡張とはいえgetoptにできることぐらいはできないと困るね(´・ω・`)

576 :デフォルトの名無しさん:2010/02/09(火) 14:05:14
shared_ptr まだシリアライズできないバグがあるのかw
何やってんだw

577 :デフォルトの名無しさん:2010/02/09(火) 19:16:31
Boost.Serializationって
どんなときに使うのでさ?

578 :デフォルトの名無しさん:2010/02/09(火) 19:18:30
データを直列化し総サイズを算出して現在進行しているアルゴリズムの進捗状況と照らし合わせて
progress_displayに情報を渡す。

579 : [―{}@{}@{}-] デフォルトの名無しさん:2010/02/09(火) 19:35:36
1.41と1.42は本当にちゃんとテストしているのだろうか

580 :デフォルトの名無しさん:2010/02/09(火) 20:29:12
>>578
progress_displayすげー。

581 :デフォルトの名無しさん:2010/02/10(水) 09:49:53
>>577
処理状態をファイルか何かに保存したりしたい時
例えばゲームのセーブロードとか、CGIのセッション保存とか

582 :デフォルトの名無しさん:2010/02/11(木) 06:09:02
設定の保存と読み込みによく使ってるわ
iniとか使う気になれんし

583 :577:2010/02/11(木) 11:47:05
>>581-582
ありがとう。
なるほど。途中状態の記録とかに便利なのか。。。

584 :デフォルトの名無しさん:2010/02/11(木) 18:53:45
今までBoost無しでスタティックライブラリ開発してたんだけどもうBoost入れるわ・・・
でもさ,Boostに依存しまくったライブラリとかみんな使ってくれるかな・・・

585 :デフォルトの名無しさん:2010/02/11(木) 19:11:18 ?2BP(0)
Boostを入れなくても使えるようにすればいいんじゃないか?

586 :デフォルトの名無しさん:2010/02/11(木) 19:26:29
そうか分離出来るかわからないけどヘッダにboostに依存する型が入らないようにしてみる
自力ビルドしたい人とかサポート外環境の人には諦めてboost入れてもらうことにしよう・・・

587 :デフォルトの名無しさん:2010/02/11(木) 21:56:16
矢沢「え?せっかくのC++なのにBoostついてないの・・?・・・・・それはもったいない・・」

588 :デフォルトの名無しさん:2010/02/11(木) 23:33:38
STLでさえ禁止のところあるからなぁ・・・
Qtはおすすめ

589 :デフォルトの名無しさん:2010/02/12(金) 00:19:46
>>584
依存しまくったライブラリでも有用性があるならおkでしょう。
ただしそのライブラリが複数あるなら、依存しないでかけるライブラリは
その方が良いのかもしれんけど。



590 :デフォルトの名無しさん:2010/02/12(金) 00:24:33
>>588
> STLでさえ禁止のところあるからなぁ・・・
別にそんな会社は潰れちまえばいいだけだろ。
・・・え?ウチの会社・・・?

591 :デフォルトの名無しさん:2010/02/12(金) 00:34:20
テンプレートが使えるだけありがたく思え

592 :デフォルトの名無しさん:2010/02/12(金) 05:18:35
Boost使えなす(´;ω;`)
↑STLが使えるだけマシだろ
↑テンプレート使えるだけマシだろ

593 :デフォルトの名無しさん:2010/02/12(金) 06:18:03
>>592
この板の「職場で使わせて貰えない」系の嘆きも、そういう順で変化してってるよね。
俺が最初にこの板来た頃はテンプレートで、次にSTLになって、今はBoost。
「C++0x使わせてもらえない」も来るかな。autoくらい使わせてくれよ的な。

594 :デフォルトの名無しさん:2010/02/12(金) 08:30:16
Boost使えなす(´;ω;`)
↑STLが使えるだけマシだろ
↑テンプレート使えるだけマシだろ
↑C++使えるだけマシだろ
↑C使えるだけマシだろ
↑アセンブラ使えるだけマシだろ

595 :デフォルトの名無しさん:2010/02/12(金) 08:33:03
さすがに意味がわからん

596 :デフォルトの名無しさん:2010/02/12(金) 09:30:18
boostの正規表現機能を使いたいのですがあれって性的リンクだそうですが
ライセンスとかどうなんでしょう?

597 :デフォルトの名無しさん:2010/02/12(金) 09:39:48
性的リンク



ハアハア

598 :デフォルトの名無しさん:2010/02/12(金) 10:20:21
boostライセンスは凄く緩いんで気にすることは無いよ
boostライセンスの条文のコピーとboost使ってますっていう記述を
readmeにでも書いてればおk

599 :デフォルトの名無しさん:2010/02/12(金) 10:28:39
そんな事しなくてもソースコード中(公開しなくてもいい)に
boostのライセンスのせときゃいいよ

600 :デフォルトの名無しさん:2010/02/12(金) 11:15:05
静的リンクが問題になるライセンスってたとえば何だ?

601 :デフォルトの名無しさん:2010/02/12(金) 11:16:12
LGPL

602 :デフォルトの名無しさん:2010/02/12(金) 11:31:30
いうと思った。
それは問題にならない。
LGPLはオブジェクトコードがどういうものかというのを定めてはいない。
動的リンクだろうと静的リンクだろうと、それはLGPLの定義の範囲外にある。

LGPLでは、ソースコードとして、どのように使っているかが問題になる。

603 :デフォルトの名無しさん:2010/02/12(金) 11:56:02
xpressive
という話が出ないのはなんでだ?

604 :デフォルトの名無しさん:2010/02/12(金) 12:09:00
え、出る文脈じゃないと思うけどなぁ。

605 :regex:2010/02/12(金) 12:20:58
俺は規格にも取り入れられた由緒正しき標準ライブラリだ。
どこの馬の骨とも知らねぇライブラリと一緒にしてくれるな。

そうそう、progress_display君が、今度お前と一緒に飲みに行きたいらしいぜ。
せいぜい付き合ってやれよw

606 :デフォルトの名無しさん:2010/02/12(金) 12:37:47
>>602
「オブジェクトコード」という言葉は定義しなければならない性質のものなのだろうか。
それに「リンク」という言葉はオブジェクトコードという言葉に対しては使われていない。

607 :デフォルトの名無しさん:2010/02/12(金) 16:50:36
>>603-604
いや、boostの正規表現はライブラリをリンクしなければいけない
>>596 が思い込んでる気がしてな。
xpressive 使えばそもそもリンクなんか必要ないだろうと。

>>605
コンパイル時間の増加以外に具体的にまずいところがあるなら教えてくれ。

608 :デフォルトの名無しさん:2010/02/12(金) 17:29:40
tr1ならregex入ってるからboost要らないのでは

609 :デフォルトの名無しさん:2010/02/12(金) 19:39:49
>>608
大丈夫そうですね
http://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 :デフォルトの名無しさん: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:2010/02/13(土) 02:37:45
一応ublas::outer_prod()を使えば
vectorからmatrixへ変換出来ることはわかりました。
他にもっと良い方法があれば教えてください。

614 :デフォルトの名無しさん:2010/02/13(土) 03:09:08
>ublasですが、ublas::vectorをublas::matrixとして
>式に組み込みたいのですが
漏れの読解力じゃここが分からんのだが、結局何がしたいのか??

615 :デフォルトの名無しさん:2010/02/13(土) 03:11:38
matrixの一部を更新するのにvectorを使いたいって事じゃないの

616 :612:2010/02/13(土) 03:29:46
わかりづらくてすみません。
>>614さんのとおりです。

617 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/02/13(土) 05:23:20
Intellisenceによる解析はバックグラウンドで進行してるから、
補完がきかないのはshared_ptr<T>の解析が済んでいないか、
もしくはどこかで解析に失敗してDatabaseが壊れてる。

IDEを開き直すか、あるいはソリューションフォルダ内の.ncbファイルを削除して
しばらく待ってればそのうち補完がきくようになる。

再現性100%でIntellisence壊れるようなヘッダを別のところでincludeしていた場合、
(boost::shared_ptrとは関係なく)いつまでも解析が終わらないことがあるが、
その場合はそれがIntellisenceの限界。諦めろ。

620 :デフォルトの名無しさん:2010/02/13(土) 05:34:37
shared_ptrだけの話ならboostやめてtr1だけの方がIntellisenceの死ぬ確率低いんじゃないか?
何れにせよ過度な期待はしない方がいいな
動けばラッキーくらい。最初から諦めてれば何とも思わなくなる

621 :618:2010/02/13(土) 05:55:44
ありがとうございます。他のtmplateを扱うクラスでIntellisenceしてみたところ有効であることに気づきました。
クラッシュもしくは解析に時間がかかっていると考えます。
tr1ありがとうございます。検討します。

620さんのいうとおり基本的には動かないものと考え、動いたときに「おっ」って言おうと思います。


622 :618:2010/02/13(土) 06:02:21
tr1でIntellisenceできました、ありがとうございます!

623 : [―{}@{}@{}-] デフォルトの名無しさん:2010/02/13(土) 08:22:34
2010のIntelliSenceに期待だな

624 :612:2010/02/13(土) 11:06:00
>>617
vectorをmatrixに、ではなくて
matrixから部分vectorを得て、という考え方に変えるんですね。
とてもよくわかりました。その方向で修正します。
ありがとうございました。

625 :デフォルトの名無しさん:2010/02/13(土) 13:26:01
>>611
> GoogleIMEはやたらと性的を勧めてくるから困る
なるほど。性的と静的を比較して、どっちが多く検索されている
かといえば無論・・・。。。ってことか。


626 :デフォルトの名無しさん:2010/02/14(日) 14:50:34
>>562
このスレのアイドル progress_display への侮辱はゆるさないよ?

627 :デフォルトの名無しさん:2010/02/18(木) 15:23:34
あ?プロディスディスってんの?

628 :デフォルトの名無しさん:2010/02/18(木) 23:39:24
Boost1.41.0以降でspiritV1使うときはboost::spirit::classicを使うことになるんだけど、
これって1.41以前のspiritと動作変わってたりする?

629 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/02/20(土) 12:44:28
>>628
名前空間移動した以外の変更はせずに使ってるけど。
名前空間の移動はコードや動作は変えないって意思表示だと思ってる。



631 :デフォルトの名無しさん:2010/02/28(日) 01:09:47
過疎ってるな。どうした?

632 :デフォルトの名無しさん:2010/02/28(日) 01:14:44
ネタがない

633 :デフォルトの名無しさん:2010/02/28(日) 01:17:31
vaultに沢山あるだろうが軟弱者め。
λ式で脳みそ犯されろ。

634 :デフォルトの名無しさん:2010/02/28(日) 12:43:22
C++相談室で大概のboostネタは回答完了してしまうからな。
boostネタを回答するときは、ここのURLも張ろうぜ

635 :デフォルトの名無しさん:2010/02/28(日) 12:47:25
ご自由にどうぞ

636 :デフォルトの名無しさん:2010/02/28(日) 12:50:56
>>633
vaultのお勧めは何?俺はrangeExに注目している。といいつつoven使ってるが。

637 :デフォルトの名無しさん:2010/02/28(日) 14:15:12
C++相談室においてboostに関する質問が出た場合のテンプレってあるの?
「現行C++においてboostは標準のライブラリではないから処理系依存スレかboostスレへどうぞ」

638 :デフォルトの名無しさん:2010/02/28(日) 14:45:35
質問に対する解答でboost使えばできる
ってのがたまにある

639 :デフォルトの名無しさん:2010/02/28(日) 14:46:30
>>633
vaultとかsandboxとか、そこまで手を広げるのか。


640 :デフォルトの名無しさん:2010/02/28(日) 15:16:27
shared_ptrとかstd入りしたクラスもあるし

ところでどっちを使えばいいんだ?

641 :デフォルトの名無しさん:2010/02/28(日) 15:17:06
std入りしたクラス

642 :デフォルトの名無しさん:2010/02/28(日) 15:19:07
>>640
許可されている方。
もうちょっとしたらstdを使えばいいんでね?


643 :デフォルトの名無しさん:2010/02/28(日) 15:38:39
boostのほうなら、標準非対応なコンパイラでも気の利いた動作をしてくれそう。
といってもMSVCとGCCしか使ってないけど。

644 :デフォルトの名無しさん:2010/02/28(日) 18:41:36
一応こんなスレもある訳だが…
Boost C++ Libraries Sandbox
http://pc12.2ch.net/test/read.cgi/tech/1250396380/

645 :デフォルトの名無しさん:2010/02/28(日) 20:02:13
>>644
ウチより閑散としとるw

646 :デフォルトの名無しさん:2010/02/28(日) 20:51:02
Oven/Egg総合スレ part1
http://pc12.2ch.net/test/read.cgi/tech/1231080841/

part1 がむなしい。
STL スレも含めて template 統合で良かったような気がするんだけどね。

647 :デフォルトの名無しさん:2010/02/28(日) 21:01:08
次が出るかも分からないし前スレがあったわけじゃないのにいきなりpart1ってなんだよ・・・

648 :デフォルトの名無しさん:2010/02/28(日) 22:01:20
boost::ublas
のmatrixへ、C配列からブロックごとコピーする方法ってありますか?
・matrixの使っているメモリが連続しているのか
・sliceか何かでブロックのアドレスを外から代入することができるか
の二点が問題になりそうですが。

649 :デフォルトの名無しさん:2010/03/01(月) 02:03:59
vaultはその辺のC++よく分かってません的なのが適当に放り込んだクソコードが
普通にあるから論外

650 :デフォルトの名無しさん:2010/03/04(木) 18:55:09
>>648
matrix<T, row_major> mはCの2次元配列とメモリ配置が一致してる
初期化なりresizeなりであらかじめメモリを確保しておけば、
&(m(0, 0))で先頭アドレス取り出せるからメモリ配置考えてコピー可

651 :デフォルトの名無しさん:2010/03/05(金) 16:27:23
>>650
ありがとうございます。

あと
&(m.data()[0])
とかも使えそうですね。

652 :デフォルトの名無しさん:2010/03/06(土) 01:12:35
俺もvaultにクソコード突っ込んだけど、誰も反応してくれんな。

653 :デフォルトの名無しさん:2010/03/06(土) 01:41:16
>>652
お前みたいな奴が仕事増やしてるんだよ死ねよクズが

654 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/07(日) 17:44:53
>>654
エラーになるところを中心に切り出していけば、もっと条件絞れるんじゃないの?

656 :654: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: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 :デフォルトの名無しさん:2010/03/07(日) 18:15:18
>>657 それ解決やない、回避や。

659 :デフォルトの名無しさん:2010/03/07(日) 18:18:27
>>656
そんなのが通らないならコンパイラのバグだろさすがに。

660 :デフォルトの名無しさん:2010/03/07(日) 20:34:45
さすがM$…

661 :デフォルトの名無しさん:2010/03/07(日) 20:37:42
typedef void (*func)( );
じゃなかったっけ?
typedef void (func)( );
こう買いてもおkなんだっけ

662 :デフォルトの名無しさん:2010/03/07(日) 20:40:50
typedef void* (func)( );
void*を返す関数

typedef void (*func)( );
戻り値なしの関数へのポインタ

typedef void (func)( );
戻り値なしの関数

合ってる?

663 :デフォルトの名無しさん:2010/03/07(日) 20:41:17
>>661
上は関数ポインタの型 void(*)(void)
下は関数の型 void (void)

664 :デフォルトの名無しさん:2010/03/07(日) 20:45:20
昔関数ポインタを引数に取って関数ポインタを返す関数ポインタを引数に取る関数が
typedefなしで書かれてて泣いた

665 :デフォルトの名無しさん:2010/03/07(日) 21:08:29
func)( が funcX に見えて謎の会話に見えた…

666 :デフォルトの名無しさん:2010/03/07(日) 21:12:49
>>664
haskell記法で書けばこうか
func :: ((a -> b) -> (c -> d)) -> e

667 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/07(日) 22:04:25
>>664
signal関数か

669 :デフォルトの名無しさん:2010/03/07(日) 22:34:31
>>667の解説おねがい

670 :デフォルトの名無しさん:2010/03/07(日) 22:35:34
心の目で読むんだ

671 :デフォルトの名無しさん:2010/03/07(日) 22:46:26
誰も実装できないような規格を作ってて
どこへ向かうのですか!?
と禿を問い詰めたい。

672 :デフォルトの名無しさん:2010/03/07(日) 22:55:43
しかし、規格を作ったら誰かが実装してしまう。それがC++だろ。
exportだって1人くらいは実装したやついたし。

673 :デフォルトの名無しさん:2010/03/07(日) 22:58:44
>>668
「関数ポインタを引数に取って関数ポインタを返す関数ポインタを引数に取る関数」の例。
ただ、上はちょっとtypoした。lが混じってる。

×void func(void (*(l*)(void (*)(void)))(void)) ;
○void func(void (*(*)(void (*)(void)))(void)) ;

674 :デフォルトの名無しさん:2010/03/08(月) 03:13:19
boostスレでやるネタじゃない罠

675 :デフォルトの名無しさん:2010/03/08(月) 19:47:01
spirit.karmaってすごい名前だなw

676 :デフォルトの名無しさん:2010/03/10(水) 18:49:13
Uuidちょっとみてみたが、乱数ベースの生成でintかlongか忘れたけどsizeが4byteな処理系ではバグがある。
報告しようとしたら、修正コードもアップされてた。
ただ、乱数ベースが一番ユニークなID生成方法なライブラリというのは使い道あるのか?

677 :デフォルトの名無しさん:2010/03/10(水) 19:22:19
uuidは乱数とmacアドレスとtimeスタンプじゃなかったか
guidだったかもしれんが

678 :デフォルトの名無しさん:2010/03/10(水) 19:33:43
>>677
ふつう使うのはその生成方法だとは思う。
RFCではそのほかに乱数ベース、ネームスペース付の文字列から生成するなどいくつかバージョンがある。

OSの関数を呼び出す処理がコメントでTODOとして書いてあったが、LinuxのuuidパッケージはGPLだった気がする。
ライセンス的に微妙なのかもしれない。

679 :デフォルトの名無しさん:2010/03/10(水) 21:49:57
いくつかアルゴリズムがあったのか

オープンソースなスタティックライブラリ内でGPLパッケージをリンクすると
前者もGPLになってしまうのか
それともライブラリをリンクした人が考える問題なわけだけど
ユーザに丸投げするとboost使うひとがメンドくさすぎるから
できるだけ外してるんだろうか.よくわからんな

680 :デフォルトの名無しさん:2010/03/11(木) 00:00:33
http://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.36
e2fsprogsパッケージはGPLだけど、libuuidは修正BSD

WindowsのUuidCreate呼ぶ奴もないし、まだ方針が定まってないだけじゃないの。


681 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/11(木) 22:37:18
オプションにパラメータを連続で記述できる仕様なんだろうね。

オプション名の長いほうから追加したらどうなるん?


683 :デフォルトの名無しさん:2010/03/13(土) 03:47:59
lispに浮気してきたけどboostにもどってきましたよ

684 :デフォルトの名無しさん:2010/03/14(日) 02:46:18
boost::mplでlispるんですか?

685 :デフォルトの名無しさん:2010/03/14(日) 02:47:13
全知全能の神ッ!

686 :デフォルトの名無しさん:2010/03/14(日) 05:31:07
http://codepad.org/IjaOu3gt
すみません,このコードでth3,th4が実行されないのはc++の仕様でしょうか

687 :デフォルトの名無しさん:2010/03/14(日) 05:38:42
なんでth6しかjoin()してないんだ?

688 :デフォルトの名無しさん:2010/03/14(日) 05:42:10
http://codepad.org/7CodBLpQ
すみません,全部joinする感じでお願いします

689 :デフォルトの名無しさん:2010/03/14(日) 07:38:49
コンパイルエラーになってないか

690 :デフォルトの名無しさん:2010/03/14(日) 08:19:01
codepadだとコンパイルエラーになるようです
あと今回問題のth3,th4が原因で
th3.join()とth4.join()でエラーになります
それを除けば大丈夫だとおもいます.

691 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/14(日) 14:43:27
>>691
なるほど!
boost::thread th3(test0());は
関数型のtest0 noname(void)を受け取って
boost::threadを返す
th3という名前の関数のプロトタイプになってしまうんですね.

boostというよりc++の問題だったみたいで申し訳ないですが
ありがとうございました.

693 :デフォルトの名無しさん:2010/03/19(金) 16:01:47
>681
http://www.boost.org/doc/libs/1_42_0/doc/html/boost/program_options/command_line_style/style_t.html
http://ideone.com/yemWObm2

694 :デフォルトの名無しさん: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
http://www.ryppl.org/

696 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/22(月) 22:22:14
ありがたや
ありがたや

698 :デフォルトの名無しさん:2010/03/22(月) 22:27:37
property_treeって何だ?
なんか便利そうだな。property_treeかうーん。

699 :デフォルトの名無しさん:2010/03/22(月) 22:30:26
uuidとかもう自前で作っちゃいましたがな・・・

700 :デフォルトの名無しさん:2010/03/22(月) 22:34:05
UUIDを動的に生成する事なんてほとんどないから
VSに付いてる奴で済んじゃってるな

701 :デフォルトの名無しさん:2010/03/22(月) 23:46:01
現状の uuid は乱数と sha1 しか生成手段がなくて、マシン固有の値とかから生成する手段は提供されてないみたい。
ちょっと衝突が心配。
"ハードウェアやミドルウェアの提供する機能を使った UUID 生成機能は将来的に実装予定" らしいが…。

702 :デフォルトの名無しさん:2010/03/22(月) 23:50:03
VSでいいならguid使うが
unilinuでも使える共通インターフェースが必要なんだよ

703 :デフォルトの名無しさん:2010/03/23(火) 12:39:58
uuid、WinではCoCreateGUID()を使うようにはなってないのね

704 :デフォルトの名無しさん:2010/03/23(火) 12:58:20
じゃあCoCreateGUIDを使うように修正してboostのcommuに挙げろよ

705 :デフォルトの名無しさん:2010/03/23(火) 14:22:22
>>701
sha1の衝突を心配してたらSSLも使えないだろう

706 :デフォルトの名無しさん:2010/03/23(火) 15:28:29
SHA-1は2010年問題が頭をよぎってあんまり使いたくない
まあ暗号じゃないけどさ

707 :デフォルトの名無しさん:2010/03/23(火) 18:23:47
sha1の衝突とか、現実には起こらないから大丈夫だよ。
少なくとも俺らが定年するまでには起こらない。


708 :デフォルトの名無しさん:2010/03/23(火) 18:38:35
いざとなったらSHA1と他のハッシュアルゴリズムを組み合わせて
同時に満たしているかを調べる感じで・・・

709 :デフォルトの名無しさん:2010/03/23(火) 18:50:01
どっちかというと乱数のほうを気にしたほうがいいんじゃないか。

710 :デフォルトの名無しさん:2010/03/23(火) 19:01:18
ランダムデバイスから取った種でmt19937使うだけの安直な方法をとっている

711 :デフォルトの名無しさん:2010/03/23(火) 19:54:39
それで問題がないなら「安直」ではなくて「分かりやすい」と言うべき

712 :デフォルトの名無しさん:2010/03/23(火) 20:14:12
問題あるがな

713 :デフォルトの名無しさん:2010/03/23(火) 20:17:57
問題があるなら「安直」ではなく「粗雑」というべき

714 :デフォルトの名無しさん:2010/03/23(火) 20:59:15
文字列からuuidを作る方法があるなんてはじめて知った。
ランダムだけかと思った。


715 :デフォルトの名無しさん:2010/03/25(木) 16:23:56
boost/serializationを使ってメンバにvectorを含むクラスをシリアライズしたのですが、
データを復元する際 boost::archive::binary_iarchiveから>>を使って読み込む際に
std::length_errorが返ってきてしまいます。
これは仕様なのでしょうか?

716 :デフォルトの名無しさん:2010/03/25(木) 23:50:49
まずバージョンと環境と再現コードを貼ったら?

717 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/30(火) 22:49:25
関係ないけど
boost.progres_timer

catch (...) {} // eat any exceptions
ってコードがあるんだがwww
すごい潔すぎる

719 :デフォルトの名無しさん:2010/03/31(水) 00:53:31
動けばよかろうなのだ

720 :デフォルトの名無しさん:2010/03/31(水) 09:18:00
デストラクタでよくやる方法ジャマイカ

721 :デフォルトの名無しさん:2010/03/31(水) 11:18:00
>>720 さすがに空っぽはねーよ。ログなりなんなり出すだろ。

722 :デフォルトの名無しさん:2010/03/31(水) 11:20:12
>>718
納期寸前によくやる方法ジャマイカ

723 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/03/31(水) 13:03:51
単に握りつぶすのとエラー忘却するのは意味合いが違うことないかw

725 :デフォルトの名無しさん:2010/03/31(水) 13:54:11
> エラー忘却型コンピューティングにおいては、
> データの不整合が発見されても不整合が発見されたというログだけを残し、
> 処理を継続させるのが特徴。
ということで、
catch (std::cerr << "error!" << std::endl;) {} // eat any exceptions
で解決!

726 :デフォルトの名無しさん:2010/03/31(水) 13:56:05
せめてどこでどんなエラーが出たか書かないと意味ないと思うの

727 :725:2010/03/31(水) 14:00:41
>>726
さすがにジョークですお

728 :デフォルトの名無しさん:2010/03/31(水) 14:17:18
>>725 文法おかしいよ。

729 :725:2010/03/31(水) 14:22:19
>>728
ちょーはずかすい

catch (...) {std::cerr << "error!" << std::endl;} // eat any exceptions


730 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/04/03(土) 19:30:12
ttp://www.boost.org/doc/libs/1_42_0/doc/html/boost/algorithm/split_id614972.html

733 :デフォルトの名無しさん:2010/04/03(土) 19:54:24
できそうだけどなぁ

734 :デフォルトの名無しさん:2010/04/03(土) 20:14:25
>>732
あ、簡単に解決したw

一瞬作り直しかと思ってヒヤっとした、騒がしてすまん

735 :デフォルトの名無しさん:2010/04/03(土) 20:38:25
何をどうしたんだい

736 :デフォルトの名無しさん:2010/04/09(金) 05:40:43
boostのpendingってフォルダの中にあるファイルは使ってもいいんですか?
説明を読むと「簡単だが少し遅い。テンプレートで高速に書き直す必要が
ある」とか書いてあるんですけど、タイムスタンプが既に3年前で放置されています

737 :デフォルトの名無しさん:2010/04/09(金) 06:02:06
>>736
仕様が不明確だったりバグ持ちだったり将来のバージョンで同じように使えなくなっても
文句は言えないけど、それを承知で使うんならかまわないでしょう。

738 :デフォルトの名無しさん:2010/04/09(金) 11:04:35
>>737
レスありがとう
実はboost::stringtokなんですよ
strtok()は便利だけどこのstd::string版がpendingフォルダに
入っているので不安になったのです

739 :デフォルトの名無しさん:2010/04/09(金) 20:52:59
>>738
boost::tokenizerって知ってるか?

740 :デフォルトの名無しさん: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
http://old.nabble.com/GSOC-BigInt-Licensing-Issues-td28070540.html

このやりとりって結局どういう事になっているのでしょうか?

質問者swagat konchada :: Boost.BigIntはGMPを使っているからLGPLじゃないのですか?
解答者Rob Stewart :: ???
解答者Felipe Tanus-2 :: ???

後2つが分かりませんでした。
どなたか教えていただけますでしょうか。


742 :デフォルトの名無しさん:2010/04/10(土) 20:52:27
swagat: BigIntはGMPのラッパーじゃん。boostのライセンスと互換性ないよ。
どうすべ。当面の間GMP周りのラッピングを進めるか、それともBigIntのboost版を始めるかい。
rob: GMPとかその類が提供しているものを再実装しないで GMPはBigIntがサポートする
バックエンドの一つにすべき。うんぬん。
felipe: スクラッチから作るなんてバカでかいことをする時間はたぶんない。現実的になろうぜ。

※当方は英検3級の語学力しかないので上記の内容は全く保証できない

743 :デフォルトの名無しさん:2010/04/10(土) 22:57:02
となると
Boost.BigInt はまさか Boost Software License でリリースできないわけですか?

しかもbigintディレクトリを見てみると全てのファイルの最終更新日が
2009年8月21日になっていて、全然更新しようという気が見られないですよね。

・・・バグならともかくライセンスが死んでいるとなると
かなり致命的でBoost.BigIntは来ないんでしょうか。
泣きたくなりました

744 :デフォルトの名無しさん:2010/04/10(土) 23:03:23
GPL汚染はマジ勘弁

745 :デフォルトの名無しさん:2010/04/10(土) 23:07:45
Boost.BigInt みたいに自動で無限精度整数まで扱ってくれる
ライブラリって他にあるのかねぇ?

割と簡単に作れそうだが。
・・・いや俺には無理だがな!

746 :デフォルトの名無しさん:2010/04/10(土) 23:10:18
RealLibでいいんじゃね
実数だけど

747 : ◆qZPJp5tL6Q :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 :デフォルトの名無しさん:2010/04/10(土) 23:23:16
>>748
だから>>747なんだってば。
無理っす!

750 :デフォルトの名無しさん:2010/04/10(土) 23:28:27
俺は自分で多倍精度整数ライブラリ作ってるよー
平方とkaratsuba法で乗算の折り合い付けるのめんどかった

751 :デフォルトの名無しさん:2010/04/10(土) 23:35:50
せっかくだからbigintの話はこっちで

Boost C++ Libraries Sandbox
http://pc12.2ch.net/test/read.cgi/tech/1250396380/

752 :デフォルトの名無しさん:2010/04/10(土) 23:36:39
>>751
下らない画像スレになってるぞ

753 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/04/11(日) 01:39:47
Blight って何だと思ったら BigInt だた

757 :デフォルトの名無しさん:2010/04/11(日) 07:17:11
とりあえずRealLibとか言い出す奴は全く完全に的外れだからもう少し調べてくれ

758 :デフォルトの名無しさん:2010/04/11(日) 13:22:48
ところでBoostBigintがBoost C++正式リリースに入れないのは何故?
ドキュメントがないから?
もしかしてバグがある?


759 :デフォルトの名無しさん:2010/04/11(日) 14:08:01
どうでもいいけどboostをMSVCで使うとき、言語拡張を幾つか有効にしないとエラーになるのが数個あって困るな。
互換保ちたいのにうっかりMSVC依存のコード書いてしまいそうで怖い。

760 :デフォルトの名無しさん:2010/04/11(日) 15:00:03
>>759
#includeする前後にpragma置けばいいだけだろ

761 :デフォルトの名無しさん:2010/04/11(日) 15:27:56
言語拡張を制御するpragma有ったか?

762 :デフォルトの名無しさん:2010/04/11(日) 18:14:12
>>759
そんなのあるんだ。
gccでしか使わないからわからんや

763 :デフォルトの名無しさん:2010/04/12(月) 11:12:06
オレが使う範囲では無効のままで問題ないな
ただ警告レベルが4だと警告の嵐だった

764 :デフォルトの名無しさん:2010/04/12(月) 15:18:33
ここにいるひとってパソコン好きそうですね!

765 :デフォルトの名無しさん:2010/04/12(月) 20:17:13
そうでもない。
そばに従順な美少女中学生がいて各種プロセッサやデバイス代わりになってくれるなら
そっちのほうがいい。パソコンなんて間に合わせ。

766 :デフォルトの名無しさん:2010/04/12(月) 20:19:50
「パソコン好きそうですね!」(敢えて「得意そうですね!」ではない)とレッテルを貼ってくる奴は
「コンピュータの操作なんて簡単で誰でも調べればできる」
「ビデオゲームの様な道楽に限りなく近い仕事をわざわざ私たちがやらせてやっている」
と意味不明な事を考えているから注意した方がいい。

767 :デフォルトの名無しさん:2010/04/12(月) 21:06:51
まあ実際限りなく道楽に近いんだけどな

768 :デフォルトの名無しさん:2010/04/12(月) 21:14:24
スルースキル低すぎだろお前ら

769 :デフォルトの名無しさん:2010/04/12(月) 22:22:29
というか俺は趣味プログラマだから道楽なんだけどな。

幸せだな趣味プログラマは、納期もないし。


770 :デフォルトの名無しさん:2010/04/12(月) 23:16:16
仕事もなんにもない



うっ

771 :>>769:2010/04/13(火) 09:18:34
んだんだ

772 :デフォルトの名無しさん:2010/04/13(火) 09:22:12
あれ、寝ぼけてんな俺

773 :デフォルトの名無しさん:2010/04/16(金) 00:26:22
regex_search がいやに遅いです。

約30000件で300ms程度もかかってしまいます。
C#だと100msもかからないです。

何か、こつがあるのでしょうか?
C++は速度で負けたら存在意義を失いそうです。


774 :デフォルトの名無しさん:2010/04/16(金) 00:41:42
>>773
コンパイラと最適化オプションと NDEBUG の定義を確認。

775 :デフォルトの名無しさん:2010/04/16(金) 00:50:14
>>774
VS2008 proでソリューション構成をReleaseでビルドします。
C#のRegex.Matchが恐ろしく速い・・・

インタプリタもどきに負けるのは、本当くやしいです。

776 :デフォルトの名無しさん:2010/04/16(金) 01:19:10
>>775
VC++ か。 _SECURE_SCL とか?

777 :デフォルトの名無しさん:2010/04/16(金) 01:44:21
>>776
レスサンクスです。

#define _SECURE_SCL 0
としてみましたが結果は同じでしたOrz

778 :デフォルトの名無しさん:2010/04/16(金) 07:59:01
毎回正規表現パターンを生成してるとかないよね?

779 :デフォルトの名無しさん:2010/04/16(金) 13:55:09
あと一応念のため確認だけど、それ本当に Boostのregex_searchだよね?
同じ名前の別ライブラリとかじゃなくて

780 :デフォルトの名無しさん:2010/04/16(金) 17:23:49
前に grep と同じものを Perl, boost::regex で作ってみたら
確かに boost::regex は Perl より遅かった

781 :デフォルトの名無しさん:2010/04/16(金) 22:19:01
速度でアドバンテージがないなら、デスクトップアプリケーションでは
C++は使い道がないですね


782 :デフォルトの名無しさん:2010/04/16(金) 22:46:52
>>781
そうだね。早く気付いてよかったね。
君は消えて良いよ。

783 :デフォルトの名無しさん:2010/04/17(土) 00:03:01
っていうか、C#と競う時点で間違ってる

784 :デフォルトの名無しさん:2010/04/17(土) 00:26:40
C#は絶滅危惧種だから別にどうでもいい気がするが

785 :デフォルトの名無しさん:2010/04/17(土) 01:25:24
C#が絶滅危惧って頭おかしいのか?
確かにニーズは別で話にC#が出てくるのはおかしいがC#が絶滅危惧だと決め付けるのはもっと間違っている。

786 :デフォルトの名無しさん:2010/04/17(土) 01:34:33
前提がおかしな話は論理的には意味ないから
どうとでも言えるってだけじゃないの?

787 :デフォルトの名無しさん:2010/04/17(土) 01:44:57
じゃあ最初からどうとでも言えるからC#は関係ないって書けばいいだろ。

788 :デフォルトの名無しさん:2010/04/17(土) 02:35:26
既にそう書かれてるだろ。

789 :デフォルトの名無しさん:2010/04/17(土) 11:46:32
更新しました。
ttp://booster.x0.to
以下更新内容の一部
[Pending]
Applied another patch (unordered_equal_range_dispatch.2.patch) from #3972; fixes #3972
[Asio]
Add ifdef to allow asio's threading support to be independently disabled.
Try using asm-based fenced block for pathscale.
[Range]
Boost.Range algorithms are now in the boost::range namespace and brought into
boost by the appropriate using statement.
[Serialization]
Final changes for 1.43
[Statechart]
Fixes #3963. post_event() is now protected and forwards to post_event_impl()
[Spirit]
Spirit: fixing attribute transformation ambiguity
Spirit: generated lexer tables are not minimzed by default anymore
Spirit: added single character syntax for character ranges for Karma as well, added tests
[Signals2]
Fix for uncontrolled growth of slot list under certain patterns
of connection/disconnection without invocation. Refs #4089.
[Graph]
Added test case names to try to get better output on failures
[Config]
Added value-initialization tests for 2D and 3D arrays.
Replaced IS_VALUE_INITIALIZED by FAILED_TO_VALUE_INITIALIZE, to increase code readability.
Added value-initialization tests for POD structs that just have an int data member.

790 :デフォルトの名無しさん:2010/04/17(土) 12:58:16
boost::regexが遅いのはそりゃ仕方ないだろ。
boost::xpressiveならきっと早い。


791 :デフォルトの名無しさん:2010/04/17(土) 15:30:00
Googleのre2は?

792 :デフォルトの名無しさん:2010/04/17(土) 16:41:11
>>780
試してみた。処理は単純なgrepと同じ。
合計 15030行 445468bytes の41ファイルを処理した時間の比

516 : grep
1467: Boost regex
1471: Perl

Perlより遅いということはないと思う。同じくらいだけど

793 :デフォルトの名無しさん:2010/04/17(土) 16:51:05
同じくらいか
Perlも正規表現コンパイルすると速くなったはずだけど、これはその結果?
よければコード晒して欲しい

794 :デフォルトの名無しさん:2010/04/17(土) 16:59:06
正規表現によって大分違いそうだな
単純なものだとI/Oが占める時間がほとんどになるのだろうし

Perlのソースつっても、どうせ
perl -ne 'print if /foo/o' *.c
とかそんな感じだよね?

795 :792:2010/04/17(土) 17:45:46
こんな感じ。/o は指定してます。
http://codepad.org/uXTZ6hAx
c++コードの方は読み込みが律速しないよう fread である程度纏めて読んで
1行ずつ取り出して regex_search する感じで、全部合わせるとちょっと
大きいので御免。

796 :デフォルトの名無しさん:2010/04/17(土) 17:54:09
なるほど
それで僅差なら、iostream + getline()なら余裕でC++が負けそうだね

797 :デフォルトの名無しさん:2010/04/17(土) 19:14:48
結論:カス

798 :デフォルトの名無しさん:2010/04/17(土) 21:35:55
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)


799 :デフォルトの名無しさん:2010/04/18(日) 22:38:19
りっそくって言葉初めて知った
ボトルネックになるって意味でおk?

800 :デフォルトの名無しさん:2010/04/18(日) 22:43:29
結局、boostがC#なんてスクリプト?に負けたってのは事実?

801 :デフォルトの名無しさん:2010/04/18(日) 22:50:11
さあ?ソースとか無いから分からん
負けたにしても何が原因で負けたのか分からんし、
誰かボトルネックを調べないかな

802 :デフォルトの名無しさん:2010/04/18(日) 23:00:12
>>799
辞書ひけよ・・・と思ったら載ってなかった
驚愕だ
ボトルネックとほとんど意味一緒だけどね

803 :デフォルトの名無しさん:2010/04/18(日) 23:02:51
化学の反応速度論で習うよな……?

804 :デフォルトの名無しさん:2010/04/18(日) 23:53:34
一般用語ではないな

805 :デフォルトの名無しさん:2010/04/18(日) 23:55:36
恥ずかしながら初めて聞いた俺理系

806 :デフォルトの名無しさん:2010/04/19(月) 00:03:24
俺人間

807 :デフォルトの名無しさん:2010/04/19(月) 00:04:15
>>800
C#はスクリプト言語じゃないぞ

808 :デフォルトの名無しさん:2010/04/19(月) 00:08:46
>>803
俺も化学で「律速段階」と習ったこと覚えてるし
時々使いたくなるんだけど
糞IMEだと一発で変換できなくてむかつく。

809 :デフォルトの名無しさん:2010/04/19(月) 00:58:14
化学の反応速度論で習うよ

810 :デフォルトの名無しさん:2010/04/19(月) 01:41:57
>>808
そんなあなたにGoogle日本語入力

811 :デフォルトの名無しさん:2010/04/19(月) 07:26:02
上の方でBoost.Bigintがどうのこうのと言っていたが、
ttp://ja.wikipedia.org/wiki/%E4%BB%BB%E6%84%8F%E7%B2%BE%E5%BA%A6%E6%BC%94%E7%AE%97
ここに
> ライブラリ
> 任意精度演算は多くの場合、専用ライブラリを呼び出すことで実装されている。
> そのライブラリがデータ型を定義し、数値を指定した精度で格納したり、
> 計算を実行するサブルーチン群を提供している。
> ライブラリによって数値の内部表現は異なる。整数のみを扱うライブラリもあるし、
> 各種基数(十進、二進など)で浮動小数点数を格納するもある。
> 分数(有理数)形式で数を格納するものもあれば、実数を全て表現できるとするものもある。
ってあるとおり、改訂BSDライセンスとかでリリースされたライブラリもいっぱいあるから
別にBoost.Bigintにこだわる必要はなさそうだよ。



812 :デフォルトの名無しさん:2010/04/19(月) 12:15:26
ボトルネックを調べようにもソース出さない限り当人以外ミリ
つーか本気出すならexpressive使えよ

813 :デフォルトの名無しさん:2010/04/19(月) 15:15:19
xpressive も User's Guide Introduction 見るとNFAみたいだから
計算量がボトルネックなら xpressive にしても期待する程の変化は
無いかも。
773 の状況が分からんからなんとも

814 :デフォルトの名無しさん:2010/04/20(火) 23:48:54
久しぶりにプログラムやるついでに最新バージョンにしようとboostpro行ったらなんかめんどくさくなっとる
もう1.35でええわ

815 :デフォルトの名無しさん:2010/04/20(火) 23:50:33
>>814
Subversion使っていらっしゃりますか?

■Subversion Repository■
 Boost正式
 svn co http://svn.boost.org/svn/boost/trunk/ [インストール先パス]
 BoostSandbox
 svn co http://svn.boost.org/svn/boost/sandbox [インストール先パス]

これが一番便利だと言われたことがありますが。



816 :デフォルトの名無しさん:2010/04/20(火) 23:53:57
const int a[] = { 1, 2, 3, 4, 5 };
for (size_t i = 0; i < sizeof(a) / sizeof(a[0]); ++i) {
cout << a[i] << endl;
}
こんなのを、boost.arrayで書き直すと

const boost::array<int, 5> a = { { 1, 2, 3, 4, 5 } };
for (size_t i = 0; i < a.size(); ++i) {
cout << a[i] << endl;
}

sizeof使わなくて済む代わりに、要素数を明示しないと初期化できないのはどうにもならないものだろうか。
要素数をいちいち数えるくらいなら配列で書いた方がましだなぁ…。

817 :デフォルトの名無しさん:2010/04/21(水) 00:05:49
>>816
あれだ、
std::initializer_list
が導入された暁には全部綺麗に解決するんだよ。

たぶん。きっと。maybe。


818 :デフォルトの名無しさん:2010/04/21(水) 00:10:03
>>815
親切にありがとう
Subversionは触った事ないけどいい機会だからちょっと調べてみる

819 :デフォルトの名無しさん:2010/04/21(水) 00:19:30
えーと以下のようなコードを書いたけど動かなかった。@VC9EE
Arrayリテラルがあれば色々解決できそうなんだが・・・。

template<class T,const size_t N>
size_t Length(T (&Array)[N]){
    return N;
}

int main(){
    int Ary[10];
    size_t N= Length(Ary);
    N=Length( ({0,1,2,3,4,5}) );//ここがだめ。

    return 0;
}

820 :デフォルトの名無しさん:2010/04/21(水) 01:15:30
>>819
それも>>817の挙げたinitializer_listで解決。
template<class T>
size_t Length(std::initializer_list<T> Array){
return Array.size();
}
g++ 4.4だとこれでLength({0,1,2,3,4,5})が通る。まあ、boost::sizeでおkだが。

821 :デフォルトの名無しさん:2010/04/21(水) 01:18:45
>>820
あらま、std::initializer_listってクラス専用というわけではないんだね。いかん、思い込みはいかん。orz
0xって凄い改変なんだなー。改めてビックリした。

822 :デフォルトの名無しさん:2010/04/21(水) 07:41:50
boostって標準ライブラリに入るか現在進行形のライブラリ?

823 :デフォルトの名無しさん:2010/04/21(水) 17:59:12
>>822
> boostって標準ライブラリに入るか現在進行形のライブラリ?
どーゆー意味?


 Boostとは?
 1998年に、最初のC++言語の国際規格が誕生しました。
 その規格に採用されたライブラリがいわゆる「C++標準ライブラリ」です。
 しかしこのとき、さらに強力な標準ライブラリを求めて、
 標準化委員会のメンバー達が新しいプロジェクトを立ち上げました。
 それが Boost です。
 Boost の目標は、有用で、フリーな、 移植性のあるライブラリを実際に実装・公開し、
 いずれ来る次のC++標準化 (C++0X) の際に、 新標準ライブラリとして提供されることにあります。



824 :デフォルトの名無しさん:2010/04/21(水) 18:07:10
Qt 使い始めて Bosst いらないじゃんと気付き始めた今日子の頃

825 :デフォルトの名無しさん:2010/04/21(水) 18:19:42
>>823
>いずれ来る次のC++標準化 (C++0X) の際に、
> 新標準ライブラリとして提供されることにあります。
うん その新標準ライブラリに追加される予定なのかい?

826 :823:2010/04/21(水) 18:41:24
>>824
それはいっちゃらめえええ

827 :823:2010/04/21(水) 18:45:02
>>825
うむ。
そのたった一部は、ね。

あと、boostのライブラリとしてではないが考え方が取り込まれる
(促進したor影響した)ものもある。
LambdaとかTMPとか。


828 :デフォルトの名無しさん:2010/04/22(木) 13:56:48
確かに `Bosst' は要らないかもしれん

829 :デフォルトの名無しさん:2010/04/22(木) 17:59:43
ザ・ボスT

830 :823:2010/04/22(木) 19:44:37
Bosstだったのか

つい釣られてしまった。

831 :デフォルトの名無しさん:2010/04/22(木) 21:29:10
標準C++かBoostライブラリだけを使って

8文字以上100文字以下のランダム文字列(偶然の一致はまず考えられないと思われるもの)
を適当な関数を呼び出すだけで生成できる方法を教えてください。

「適当な関数を呼び出すだけ」とは、つまり乱数の種を与えたりする手間もかからず
#include <iostream>
#include <get_random_string.hpp>
int main(){
std::cout << get_random_string();
return 0;
};
みたいに使えるものということです。

よろしくお願い申し上げます。

832 :デフォルトの名無しさん:2010/04/22(木) 21:31:16
Boost.Uuid

833 :デフォルトの名無しさん:2010/04/22(木) 21:35:25
>>832
Boost.Uuidとは?

と思いましたら
ttp://www.kmonos.net/alang/boost/classes/uuid.html
こ・・・こんなライブラリがいつの間に正式に採用されていたんですね。

ありがとうございます。

834 :デフォルトの名無しさん:2010/04/22(木) 22:54:50
01234567-89ab-cdef-0123-456789abcdef


835 :デフォルトの名無しさん:2010/04/22(木) 23:11:25
適当な名前でいいから重複しないファイルが欲しいときとか、uuidは何かと便利だな。

836 :デフォルトの名無しさん:2010/04/23(金) 00:27:47
適当な名前すら重複してしまっただけで例外をトップレベルに送出してabortするプログラム

837 :デフォルトの名無しさん:2010/04/23(金) 00:52:18
送出した例外がどこへ行くかは、監視する側の領分であり
送出したプログラムの責任には含まれない

abort という結果は監視側にある

838 :デフォルトの名無しさん:2010/04/23(金) 00:53:29
s/監視側にある/監視側の問題/

839 :デフォルトの名無しさん:2010/04/23(金) 07:21:43
Boost.Converter Stream
ってどういう機能なんでしょうか?


840 :デフォルトの名無しさん:2010/04/23(金) 07:36:34
>>839 http://ja.lmgtfy.com/?q=Boost.Converter+Stream

841 :デフォルトの名無しさん:2010/04/23(金) 19:05:30
>>840
無論そのくらいググりましたが、
機械翻訳とかで意味がさっぱり分かりませんでした。


842 :デフォルトの名無しさん:2010/04/23(金) 22:16:54
>>841
Boost.Converter Stream is a library that allows to convert text
from one character set to another in C++ language using the
Standard Library streams.

これの何が分からない? 

843 :839:2010/04/23(金) 22:35:43
>>842
> Boost.Converter Stream is a library that allows to convert text
> from one character set to another in C++ language using the
> Standard Library streams.
Boost.Converter Streamは、
標準ライブラリのストリームを用いて
一つの「文字からなる集合」からanother in C++ languageに
テキストを変換する
ライブラリです。

このanother in C++ languageが分かりませんでした。
よろしくお願いいたします。

844 :デフォルトの名無しさん:2010/04/23(金) 22:42:41
もっと英語頑張れよ……

Boost.Converter Stream is a library /
that allows to convert text from one character set to another /
in C++ language using the Standard Library streams.

こう切れ

845 :839:2010/04/23(金) 23:17:32
>>844
ありがとうございます。
> to convert text from one character set to another
この部分ですが、結局何ができるってことなのでしょうか?
anotherということは
 一つの「文字からなる集合」から別の不定の一つの「文字からなる集合」?
でしょうか??
自分で言ってて全然分かりません。自分の訳がクソ過ぎるとしか。。。

846 :デフォルトの名無しさん:2010/04/23(金) 23:21:51
>>845
あ、”character set"を知らないのか.別名
character encoding

http://en.wikipedia.org/wiki/Character_encoding
http://ja.wikipedia.org/wiki/文字コード



847 :デフォルトの名無しさん:2010/04/23(金) 23:26:53
>>846
あー!
C++0xの規格書に出て来るUTFの別名である
universal character set
なら見た事あったのですが、
character setだけで文字コードって意味になったのですね。

すごくすっきりしました。
ということは
 Boost.Converter Streamは標準C++ライブラリのiostreamを用いて
 文字コード変換を行なうライブラリ
ということですか。

ありがとうございました。

848 :デフォルトの名無しさん:2010/04/23(金) 23:40:35
>>847
「文字集合」とか「文字セット」って用語もあってそっちを指す場合もあるんだけどね。
文字コードと思っておいてあまり問題もないけど

849 :デフォルトの名無しさん:2010/04/23(金) 23:47:35
>>848
はい、ややこしいですね。
ありがとうございます。


850 :デフォルトの名無しさん:2010/04/25(日) 23:13:50
boost::regex_replace
"boost" で "o" を "O"へ置換すると
"bOOst"となってしまいます。

"bOost"を期待しているのですが、できませんか?

851 :デフォルトの名無しさん:2010/04/25(日) 23:21:45
>>850
何?釣り?
"oo" を "Oo"へ置換しろよw

852 :デフォルトの名無しさん:2010/04/25(日) 23:25:50
ttp://boost.cppll.jp/HEAD/libs/regex/doc/regex_replace.html
フラグformat_first_onlyがflagsでセットされていれば,最初にeにマッチした部分だけが置換される.

と書いてあるようだけど

853 :デフォルトの名無しさん:2010/04/25(日) 23:32:24
>>852
おーなるほど、ありがとうございます。

>>851みたな馬鹿ばっかかと思ってましたw

854 :デフォルトの名無しさん:2010/04/25(日) 23:34:21
>>853
さすがに>>852が親切エスパー過ぎただけだろ。

てめーのレスで意味を分かってくれるとでも?


855 :デフォルトの名無しさん:2010/04/25(日) 23:37:46
>>854
uzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

856 :デフォルトの名無しさん:2010/04/25(日) 23:39:00
>>850
いやいや冷静に考えてだな
> boost::regex_replace
> "boost" で "o" を "O"へ置換すると
> "bOOst"となってしまいます。
> "bOost"を期待しているのですが、できませんか?
これだけじゃ
いくらでも答えが出るだろうが。
そもそもこの程度でboost::regex_replaceを持ち出すまでもないじゃねぇか。

857 :デフォルトの名無しさん:2010/04/25(日) 23:40:50
おまえらってみなまでいわなきゃわかんないやつか?w

858 :デフォルトの名無しさん:2010/04/25(日) 23:58:08
>>854 >>856 は引っ込みつかなくなっただけだと思うぜw
boost::regex_replace でって前提で、
最初にマッチした部分だけを置換したい、って話だから、
>>852 のレスが一番普通。 って、ここまで言わないといけない幼稚園スレ


859 :デフォルトの名無しさん:2010/04/26(月) 00:09:43
>>858
ですね
大人な対応、サンクス

860 :デフォルトの名無しさん:2010/04/26(月) 00:32:08
引っ込みつかなくなってるのは両方だろw

861 :デフォルトの名無しさん:2010/04/26(月) 00:57:15
自分でオートマトンかけよ

862 :デフォルトの名無しさん:2010/04/26(月) 01:04:36
>>861
書くだけなら、誰でもかけるが、boostよりも高速動作するのは至難の業だぞ

おまえもやってみろよ


863 :デフォルトの名無しさん:2010/04/26(月) 01:05:06
ヒント : boostはあんまり早くない

864 :デフォルトの名無しさん:2010/04/26(月) 01:16:06
あんまり速くはないが少なくとも>>863が書くものよりも
2^32 倍は速いことに疑問を挟む余地はない

865 :デフォルトの名無しさん:2010/04/26(月) 02:29:14
妄想のくせに数字とか出しちゃう >>864
大した技量も無い中学生って事に疑問を挟む余地はない

866 :デフォルトの名無しさん:2010/04/26(月) 02:34:44
とうとう春が来たのか?

867 :デフォルトの名無しさん:2010/04/26(月) 02:50:13
>>859
uzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

868 :デフォルトの名無しさん:2010/04/26(月) 02:51:46
uze+をuzEe*に置換するにはどう書けばいいんでしょうか?

869 :デフォルトの名無しさん:2010/04/26(月) 03:53:31
s/uze(e*)/uzE$1/

870 :デフォルトの名無しさん:2010/04/26(月) 06:35:56
お前らそんな夜間に書き込みしてるけど、仕事は?
まさかしてないの?


871 :デフォルトの名無しさん:2010/04/26(月) 09:54:37
>>870
朝起き出してきて最初のレスがそれ? なんて爽やかな朝なんだろうね。

872 :デフォルトの名無しさん:2010/04/26(月) 10:00:42
>>871
彼の時計はまだ夜です
しったかしないでください

873 :デフォルトの名無しさん:2010/04/26(月) 10:07:33
それだったら2時間半も間を空けないだろw

874 :デフォルトの名無しさん:2010/04/26(月) 10:09:52
日本から書き込みしてるわけではありませんっ!!!

875 :デフォルトの名無しさん:2010/04/26(月) 10:55:11
>>873
その空白期間は、きっと自家発電に熱を上げていたからに違いありません。

876 :デフォルトの名無しさん:2010/04/26(月) 11:01:53
今度は何でお前らそんな昼間に書き込みができるんだww
無職は良いな、暇で。

俺?俺は夜勤明けだから。


877 :デフォルトの名無しさん:2010/04/26(月) 11:16:18
>>876
ダウンロードでとても忙しいのです
しったかしないでください

878 :デフォルトの名無しさん:2010/04/26(月) 11:17:56
1日
労働時間、もって1時間が限界だお(;ω;)


879 :デフォルトの名無しさん:2010/04/26(月) 11:27:12
ダウンロードかよw

>>878
労働時間 1時間/day? 天国じゃねぇか。

880 :デフォルトの名無しさん:2010/04/26(月) 14:02:22
 /     r-‐'_ァ='‐─'-- 、__7-‐7ヽ、ヽ. /⌒ヽ(
/     r'´>'"          ̄ `ヽン-!、 ::::::: Y
  _,.r<「/     /__」. - ハ   i  ヽ/ァ ::::::::::: ::::
-'‐r'´ /  /    /i  ハ__ /:::i   ハ   Y」 :::::::::: ::::
 /   ,' .,'  / /:::!ァ'⌒ヽ/:::::|  /-、   '! ::::::::::  ::/
./   i  i   ,' /::::/  /り:::::::::| ハ」_|  i. | 人___ノ
    |  !/レi::: '  し'   ::レ'´ァ'ハ|  ,ハ !く  
   ./レイ   7 ,,  `''        ,!リ/|/ハレ' i   っ
     i   i   u  ,.- 、,_   ゞ/  .iヽ! ノ  て
/   /|  |.     /    ヽ7   !   | Y.   言
 /  //!.   |     !    /  ,イ   ハ i   う
へ_r、_/ |ハ. ',  ,、  ` ー- ' //.|  / レ'   か
__r'">へ `ヽ! /ヽ`i>=-ァ'´ ./ レヘ(ヽ/.    誰
     ヽ`'、ー-、7  /ヽ、レ'、!/レ'::::::::、ノ       が
        `ヽ/(>)/   7ヽ. ::::::::::::: ).  こ  得
ヽ        / ,. '´ ̄ヽ,'" ̄ン、_:::: ∠_.  の  す
ヽ.       ノ´ ̄_ヽ'ヽノ/´,,. -、7::::::::ヽ. ス.  る
ヽへ ヽ  ,/´  /´ ´ /,. '´ ,. -'iハ::::::::::::i  レ  の
└へト、//   i      /,.、/」 |:::: ::::::| .は   
   ヽ>/    ノ     // i  |::: :: ノ  !?


881 :デフォルトの名無しさん:2010/04/26(月) 14:42:05
boostのlambdaは0x対応コンパイラではちゃんと組み込みlambdaに置き換えられるんでしょうか?

882 :デフォルトの名無しさん:2010/04/26(月) 14:53:02
いいえ

883 :デフォルトの名無しさん:2010/04/26(月) 15:02:24
得とか
損とか
最初に言い出したのは
だ・れ・な・の・か・しら

884 :デフォルトの名無しさん:2010/04/26(月) 15:09:11
駆け抜けて行く〜
(駆け抜けて行く〜)

885 :デフォルトの名無しさん:2010/04/27(火) 17:35:59
Boost.Spirit あたりの文脈だと, compile-time polymorphic であることと
余分な引数が単純に捨てられるという2つの特徴が強力なために,
組み込みの lambda が Boost.Lambda や Phoenix を置き換えるに至らない.

886 :デフォルトの名無しさん:2010/04/27(火) 17:42:56
>>885
何?難しすぎてよく分からない。

つまり
組み込み.Lambda は compile-time polymorphic じゃない上
余分な引数が単純に捨てられるという機能を持っていないってこと?

あとびっくりしたのが
Boost.Lambda と Boost.Phoenix はまだ統合されていなかったとは。
もうてっきり一つになったのかと思ったよ。


887 :デフォルトの名無しさん:2010/04/27(火) 17:43:59
2〜3テストコード書いてみて理解出来んライブラリは無視することに決めた

lambda くらいから

888 :デフォルトの名無しさん:2010/04/27(火) 17:46:06
>>887
2〜3個で理解できるライブラリってたいした事できないだろ。

Boost.progress_displayとかならまあ・・・。


889 :デフォルトの名無しさん:2010/04/27(火) 17:59:19
ディスってんの?

890 :885:2010/04/27(火) 19:00:52
>886
あ,すいません.意味の通らない文になっていました.
おっしゃっている通りのことが言いたかっただけです.

891 :886:2010/04/27(火) 19:58:53
>>890
いやごめんそんなに意味が通らない文ではないですよ。
単に私が確認したくなってしまう正確なだけで
すみません。


892 :デフォルトの名無しさん:2010/05/02(日) 06:18:11
error C3641: 'boost::re_detail::global_lower' : /clr:pure または /clr:safe と共にコンパイルされた関数に対する呼び出し規約 '__cdecl ' が無効です
ブーストを使って昔作った正規表現を使ったソースのコピペをしただけなのにこんな感じのエラーが出まくるのですが何故でしょうか?
昔に作った方はコンパイルが通っています
違いは今のはフォームアプリケーションというくらいです

893 :デフォルトの名無しさん:2010/05/02(日) 07:35:15
マネージドコードで使えないんじゃないの

894 :デフォルトの名無しさん:2010/05/02(日) 07:46:23
>>893
ありがとうございます
マジですか…
ありがとうございました

895 :デフォルトの名無しさん:2010/05/02(日) 07:47:44
>>892
>違いは今のはフォームアプリケーションというくらいです

VC++ だと思うけど、C/C++ と C++/CLI はまったく違うう別物って事はわかってるか?
そして選んだプロジェクトがマネージド(C++/CLI …要は .NET、C# と同じ)になってるってわかってるか?
VC++の特にExpressでフォームとかGUIで貼り付けて作れるのは C++ じゃなくて C++/CLI の方だけ
つまり、使えない

896 :デフォルトの名無しさん:2010/05/02(日) 07:55:57
>>895
ありがとうございます
全く別物とか言われても同じように使える部分がほとんどなのであんまり実感が…
Regexが使えるってことでよろしいでしょうか?

897 :デフォルトの名無しさん:2010/05/02(日) 22:45:59
>>896
C++とマネージドの2種類の言語を同時に使えるようにして一見同じように使えるように見えるのが曲者。
結局C++とマネージドのオブジェクトには互換性が無いからはまりやすい。
たとえばマネージのクラスにC++のオブジェクトのポインタのメンバー変数はできるけどオブジェクトのメンバ変数は作れない。
学習にはC++かC#のどちらかはっきりさせたほうがいいよ。

898 :デフォルトの名無しさん:2010/05/02(日) 23:21:40
C++/CLI は、それがどういう物か良く知っている人間が、
何かの事情で必要とした時だけ使うもの。 簡単に言えば、かなり特殊な状況で必要になるかもしれない物。
初心者が、まして C/C++ の学習に使うとかそういう類の物じゃないよな
>>896 まったく別物、の意味を良く理解して下さい。 同じように使えるのは、一見同じように使えてるように見えてるだけ


899 :デフォルトの名無しさん:2010/05/05(水) 12:19:12
Boost.Chromoを使う為,bjamでビルドしたのですが、

bjam.exe --toolset=msvc-9.0 --with-chrono link=static runtime-link=shared release stage
bjam.exe --toolset=msvc-9.0 --with-chrono link=static runtime-link=shared debug stage
bjam.exe --toolset=msvc-9.0 --with-chrono link=shared runtime-link=shared release stage
bjam.exe --toolset=msvc-9.0 --with-chrono link=shared runtime-link=shared debug stage

で、以下のlibファイルは生成されるのですが、

boost_chrono-vc90-mt.lib
boost_chrono-vc90-mt-gd.lib
boost_chrono-vc90-mt-1_42.dll
boost_chrono-vc90-mt-1_42.lib
boost_chrono-vc90-mt-gd-1_42.dll
boost_chrono-vc90-mt-gd-1_42.lib

libboost_chrono-vc90-mt.lib
libboost_chrono-vc90-mt-gd.lib
libboost_chrono-vc90-mt-1_42.lib
libboost_chrono-vc90-mt-gd-1_42.lib
(続く)

900 :デフォルトの名無しさん:2010/05/05(水) 12:20:00
(続き)
以下のファイルが生成されません。

libboost_chrono-vc90-s-1_42.lib
libboost_chrono-vc90-sgd-1_42.lib←必要なのはこれ

bjam.exe --toolset=msvc-9.0 --with-chrono link=static runtime-link=static release stage
bjam.exe --toolset=msvc-9.0 --with-chrono link=static runtime-link=static debug stage
bjam.exe --toolset=msvc-9.0 --with-chrono link=shared runtime-link=static release stage
bjam.exe --toolset=msvc-9.0 --with-chrono link=shared runtime-link=static debug stage

error: link=shared together with runtime-link=static is not allowed
error: such property combination is either impossible
error: or too dangerious to be of any use

過去にここでも話題になってる問題の様です。

--with-python や --with-mpi や --build-type=complete も付けてみましたが
上記ファイルは生成されません。

解決策があれば教えて下さい。

901 :デフォルトの名無しさん:2010/05/05(水) 13:13:30
これで出来たよ
bjam --toolset=msvc stage release debug link=static runtime-link=static

902 :デフォルトの名無しさん:2010/05/05(水) 13:15:25
あーごめん
できてなかった

903 :デフォルトの名無しさん:2010/05/05(水) 19:55:36
Boostっての名ばかりあで結構遅いな

904 :デフォルトの名無しさん:2010/05/05(水) 19:58:37
>>903
https://svn.boost.org/trac/boost/wiki/Guidelines/Requirements
> Aim first for clarity and correctness; optimization should be only a secondary concern in most Boost libraries.
ってことかなぁ、とは思うが、まずは何を見て遅いと思ったのか聞こうか。

905 :デフォルトの名無しさん:2010/05/05(水) 20:06:42
Boostを使えばプログラムの速度が速くなるかって言ったら
早くなるわけが無い
何もしないのが一番早いんだから

906 :デフォルトの名無しさん:2010/05/05(水) 20:31:43
早い遅いって話じゃないもんなw Boostを使う理由は


907 :デフォルトの名無しさん:2010/05/05(水) 21:51:53
>>900
Jamrootの180行目、

EXIT ;



return ;

に変更(エラーを無視)する事によって解決します。
尚この場合、副作用としてlink=shared, runtime-link=staticもビルドが可能になってしまいますが、
これは危険な為本来ビルドが禁止されている構成です。
それから、意図しない構成や名前のおかしなゴミファイルが追加で作成される場合もありますのでお気を付け下さい。

908 :デフォルトの名無しさん:2010/05/05(水) 21:58:51
申し訳ございません、1.42の場合は173行目付近かもしれません。

909 :デフォルトの名無しさん:2010/05/06(木) 05:13:38
どうしても遅いときのために progress_display がある
ていうか Boost が加速するのはプログラミング速度だよ
コンパイル速度とプログラム速度は遅くなるかもしれないけどな

910 :デフォルトの名無しさん:2010/05/06(木) 06:22:18
>>909
>progress_display
progress_timer「お前にばっかりいい格好させないぜ」
compressed_pair「僕も仲間にいれてもらっていい……かな?」

911 :デフォルトの名無しさん:2010/05/06(木) 12:27:59
>>コンパイル速度と

Boost入れるまでVC++で「/Zm200」なんて使う日が来るとは思わなかったよ

912 :デフォルトの名無しさん:2010/05/06(木) 12:54:12
BoostでC++0xのライブラリ「TR1」を先取りしよう (1)(2/2):CodeZine
ttp://codezine.jp/article/detail/1937?p=2
shared_ptrで循環参照が生じる例がすごいわかりやすかった。


913 :デフォルトの名無しさん:2010/05/06(木) 12:55:42
boostその他のライブラリを使わないと
現実的にいつになったらこのプログラムが完成するのか分からない
から使うって感じかな。

914 :デフォルトの名無しさん:2010/05/06(木) 12:58:56
boost使いこなしている自分って
先進的でかっこいい

915 :デフォルトの名無しさん:2010/05/06(木) 13:21:40
>>914
その煽りは哀しいからやめようぜ。自分を曝け出してるようにしか見えないw

916 :デフォルトの名無しさん:2010/05/06(木) 13:29:34
boost使いこなしているあなたって
先進的でかっこいい

これだな。

917 :デフォルトの名無しさん:2010/05/06(木) 18:42:02
Boostのお陰で彼女が出来ました。

918 :デフォルトの名無しさん:2010/05/06(木) 18:44:32
Boostのおかげで魔法使いに弟子入りできました。

919 :デフォルトの名無しさん:2010/05/06(木) 19:22:11
Boostのおかげで魔法使いに慣れました。

920 :デフォルトの名無しさん:2010/05/06(木) 20:59:02
>>907

一応、目的のファイルは生成されました。(link=shared, runtime-link=staticはしなくても)

Boost.Chrono のサンプルプログラムも動きますが、リンク中警告がいっぱい出ます。

一部だけ
1>libboost_chrono-vc90-mt-sgd-1_42.lib(run_timer.obj) : warning LNK4049: ローカルで定義されたシンボル ?throws@system@boost@@3Verror_code@12@A (class boost::system::error_code boost::system::throws) がインポートされました。

これは無理やりビルドしたせい?

921 :デフォルトの名無しさん:2010/05/06(木) 22:33:31
>>914
内に部署だと逆だな、
検索のアルゴリズムのかけないの?
的なあつかいになるから、まったく使わないな

922 :デフォルトの名無しさん:2010/05/06(木) 22:57:35
shared_ptrって遅いの?

923 :デフォルトの名無しさん:2010/05/06(木) 23:07:55
>>922
何と比較して?



遅い遅い言われるけど結構早いよ。
まあ当然だが参照カウントの作業分遅くなるけど、
動的削除子とかスレッドセーフとかの機能ももっているので


924 :デフォルトの名無しさん:2010/05/07(金) 00:57:29
shared_ptrが遅いかどうかを計測するためにprogress_timerがあるんだろ!
と910先生も仰っているぞ

925 :デフォルトの名無しさん:2010/05/07(金) 01:05:44
boost::shared_ptr使わないで自前でスマートポインタ実装してあるライブラリあるけどなんでだろうって思っちゃって

926 :デフォルトの名無しさん:2010/05/07(金) 01:10:26
>>922
shared_ptrは共有の参照を作るためにの必要な機能をわずかなコストで実現してる。スレッドセーフだし安心して使える。
共有が必要でshared_ptrを使わない場合は同等の共有時のリソース管理を自分で書かなくてはならないから結局は同じになる。

共有が不要な参照の場合はshared_ptrを使うまでも無く参照やsocped_ptrを使えば全くコストは掛からない。


927 :デフォルトの名無しさん:2010/05/07(金) 01:25:23
スマポが参照カウント方式なのかどうか
boostを使ってるのかどうかとか
そこら辺が全然見えない

928 :デフォルトの名無しさん:2010/05/07(金) 01:56:00
>>925
boostは標準じゃないからshared_ptrを使わなくても責めることはできないだろう。
c++0xが標準化されたら責めてもいい。

929 :デフォルトの名無しさん:2010/05/07(金) 02:05:49
shared_ptrの参照を使えば呼び出しコストはかからないのかしらん?
関数呼び出しとかはshared_ptrの参照使っても危険性は無いような気もするけど……

930 :デフォルトの名無しさん:2010/05/07(金) 09:04:44
>>929
> shared_ptrの参照を使えば呼び出しコストはかからないのかしらん?
どーゆーこっちゃ?
字面どおりに解釈すると
「const shared_ptr<T>&と書けば呼び出しコストはかからないのかしらん?」
ってこと?
何言っているのかわからんよ。

931 :デフォルトの名無しさん:2010/05/07(金) 09:06:33
>>925
boostが動かない環境でも使える様に、じゃないのかな。


932 :デフォルトの名無しさん:2010/05/07(金) 10:19:12
>>931
でもboostのスレッドとかMUTEX使ってたりします。
ゲーム用のエンジンなんですが

933 :デフォルトの名無しさん:2010/05/07(金) 11:58:33
boost導入する前からスマポだけ自作して使ってた名残なんじゃないの

934 :デフォルトの名無しさん:2010/05/07(金) 13:42:39
1.43正式版でたよー

935 :デフォルトの名無しさん:2010/05/08(土) 02:27:31
まぁC++はC的な側面も持ってるから、必要があるなら美しさも安全性も簡単さも
何を犠牲にしても構わない言語でもあるからな。そういう危険性を剥き出しにせず、
せめてオブラートで(破れやすくても)包む、くらいはしておきたいが、それすら
犠牲にしたいことだってある。仕事なんてそんなもんだ。
常にshared_ptrを使う方が100%いい、なんてことは無い訳で、何か理由があって
そうしたくないなら、好きにしていい。

936 :デフォルトの名無しさん:2010/05/08(土) 19:16:52
当たり前とも言う

937 :デフォルトの名無しさん:2010/05/08(土) 20:44:48
shared_ptrが悪いのではなく
boost::threadが使いやすいだけなんだ

938 :デフォルトの名無しさん:2010/05/08(土) 22:12:29
>>932
shared_ptrは共通のインターフェースとしても使えるんで広範囲に使用する。
だから、俺スマポをshared_ptrに変えるにはプロジェクト全体に適用する必要があるから移行は結構大変なんで見送られてるんじゃないか?
俺も昔は、俺スマポをshared_ptrに変えるのは躊躇してたけど、boost::bindでメンバ関数をバインドするときのthisポインタとしてshared_ptrが使えるのを発見したときに移行を決意した。
俺スマポにくらべてべhared_ptrはライブラリが対応しているメリットは大きい。


939 :デフォルトの名無しさん:2010/05/08(土) 22:17:58
>>938
>hared_ptrは
毛が生えてるのかと思った。うそです

940 :デフォルトの名無しさん:2010/05/08(土) 22:18:11
>>938
std::unique_ptrやstd::shared_ptrが正式に採用された暁には
もう全然悩む事なくなるな。


941 :デフォルトの名無しさん:2010/05/09(日) 18:55:41
>>939
常識で考えろよ
シュッポッポの頭頂部を見れば分かるだろ

942 :デフォルトの名無しさん:2010/05/09(日) 23:09:40
禿同

943 :デフォルトの名無しさん:2010/05/10(月) 01:13:29
boost::waveで、includeするファイルの読み込み部分を自前で行うようにする方法を知ってる人いたら教えてもらえないだろうか?
Context Policyとやらをいじればいいみたいなんだが、サンプルとか見ても全然わからないんだ。

944 :デフォルトの名無しさん:2010/05/10(月) 01:33:00
documentを見て大体boost.waveの使い方は分かったがdocumentより分かりやすい説明はできそうにない

945 :デフォルトの名無しさん:2010/05/12(水) 01:54:41
boost::algorithm::splitの述語としてif_any_of等をわたすそうですが、
代わりに完全に文字列と一致した時にtrueを返す関数オブジェクトは無いですか?
つまり、単一の文字ではなく、文字列で分割したいのです。
無ければ作りますが、おそらくあると思うのです。
が、探すことができませんでした。

946 :デフォルトの名無しさん:2010/05/12(水) 16:02:26
find関数とかじゃだめなの?

947 :デフォルトの名無しさん:2010/05/12(水) 16:22:20
boost::iter_splitを使えばいいらしいよ.

#include <boost/test/minimal.hpp>
#include <vector>
#include <string>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/join.hpp>

int test_main(int,char*[]) {
std::string source = "chocolateandcandyandicecreamandtea";

std::string sep = "and";
std::vector<std::string> result;
boost::iter_split(result, source, boost::first_finder(sep));

BOOST_CHECK (source == boost::join(result, sep));
return 0;
}


948 :デフォルトの名無しさん:2010/05/12(水) 23:40:04
boost::serializationの使い方で相談させてください。

要約してみたソース
http://codepad.org/x2a4fMVL

クラスWholeとクラスPartがあり、この両方がシリアライズ対象です。
WholeはPartを複数所有し、Partは所有者であるWholeを参照しているような関係です。
Partはデフォルトコンストラクタを持っておらず、引数はWholeへのポインタ1つとなっているのですが、
save_construct_dataでWholeを書き出そうとすると以下のコンパイルエラーが出ます。

> error C2679: 二項演算子 '<<' : 型 'Whole *' の右オペランドを扱う演算子が見つかりません (または変換できません)。
(VC++ 2008 Express Edition)

codepad上では75行目になりますが、
このエラーが何故出るのか、どうすればエラーが出ないように出来るかで悩んでいます。

貼り付けるため1つにまとめてありますが、元は
Whole.h,Whole.cpp,Part.h,Part.cpp,main.cpp
の5ファイルとなっています。

よろしければアドバイスお願いします。

949 :デフォルトの名無しさん:2010/05/13(木) 20:38:28
>948
手元の環境(gcc 4.3.4 on cygwin, boost 1.42)だと 75 行目の
ar << p->getOwner();

Whole *tmp = p->getOwner();
ar << tmp;
に書き換えるとコンパイルできるね。
operator<< が非 const な reference を引数に取っているので一時変数である
getOwner の戻り値を直接渡す事が出来ない。

950 :デフォルトの名無しさん:2010/05/14(金) 00:06:08
1.43でthread使用中にデバッグウィンドウに例外がなんとかと出てきた
なんとかしてほしいなぁ
ttp://old.nabble.com/Boost-1.43---Exception-before-main%28%29-is-called-td28536505.html

951 :デフォルトの名無しさん:2010/05/14(金) 01:20:19
>>950 https://svn.boost.org/trac/boost/ticket/4210#comment:2

952 :デフォルトの名無しさん:2010/05/15(土) 12:03:43
operator<< と operator>> の定義されたクラスfooがあったとして、たとえば
boost::lexical_cast<foo>(100)
とすると、デフォルトで std::ostream<char> を介して変換される。

これを wchar_t のストリームが使われるよう変えたりするには
boost::detail::stream_char を特殊化する以外の方法ってないのかな。
detail::以下に触るのはどうにも気持ち悪い。

953 :デフォルトの名無しさん:2010/05/15(土) 12:07:12
間違えた。
× std::ostream<char>
○ std::basic_stringstream<char>

954 :デフォルトの名無しさん:2010/05/15(土) 15:11:59
>>952
wstringで渡せばwchart_tのストリームを使ってくれたと思うよ。

955 :デフォルトの名無しさん:2010/05/15(土) 15:25:57
うん、例えば
boost::lexical_cast<std::wstring>(100)
とかやると wchar_t のストリームで変換される。
この文字型の分岐を行っているのが boost::detail::stream_char テンプレートなわけだ。
で、basic_string等については stream_char が特殊化されていて、
内部の文字型に応じて処理される実装になっている。
で、デフォルトの stream_char<T>::type は常に char を返す。

これを呼び出し側から明示的に指定する方法はないかな、ってこと。
どうやら現行のLexicalCastの実装的に無理っぽい?

956 :948:2010/05/18(火) 21:16:40
>>949
こちらの環境でもコンパイル出来るようになりました。
規制に巻き込まれたので後で報告しようとして忘れていました。

> operator<< が非 const な reference を引数に取っているので一時変数である 
> getOwner の戻り値を直接渡す事が出来ない。 
今まであまり意識してなかったのですがこういう事ってあるんですね…。
勉強になりました。アドバイスありがとうございました。


957 :943:2010/05/22(土) 00:45:48
経過報告。 
boost::wave::contextの3つ目のtemplate引数に、boost::wave::iteration_context_policies::load_file_to_stringの 
ソースをコピペして読み込み部分だけ書き換えた自作のファイル読み込みクラスを渡すと、読み込み部分の入れ替えはできた。 

ただ、「includeするファイルが存在するか?」を判定する処理の部分までは変更できないので、 
例えばzipファイル内のファイルをincludeしようとする処理とかは無理なのかな。
Context Policyに、found_include_directiveという#includeを見つけた時に呼び出されるフック関数があるので、
これを使えばいいんだろうけど…

958 :デフォルトの名無しさん:2010/05/25(火) 08:34:20
boostがビルドできないんですけど
boost_x_xx_x.zipをダウンして解凍
ルートフォルダに移動
bootstrap.batを実行
bjamを実行
ではダメなんですか?
bootstrapの時点で失敗するんですが・・・

959 :デフォルトの名無しさん:2010/05/25(火) 09:08:17
Visual Studio コマンドプロンプトから bootstrap を実行

960 :デフォルトの名無しさん:2010/05/25(火) 22:53:03
>>958
http://www.kmonos.net/alang/boost/install.html

961 :デフォルトの名無しさん:2010/05/25(火) 22:55:22
>>959
すいませんvc++じゃないんです

>>958
そのサイトの手動の方法を見てやったら失敗したので質問しに来ました

962 :デフォルトの名無しさん:2010/05/25(火) 23:12:35
これの5.1あたりから
ttp://www.boost.org/doc/libs/1_43_0/more/getting_started/unix-variants.html

963 :デフォルトの名無しさん:2010/05/26(水) 16:43:30
boost.cppll.jpって誰もメンテしてないの?

964 :デフォルトの名無しさん:2010/05/26(水) 20:00:37
sourceからregexにマッチする部分文字列を探します。マッチする部分文字列が見つかればtrue, 見つからなければfalseを返します。

マッチする部分文字列が見つかったとき、resultsにその詳細が納められます。

resutls.str(n)は、regexにあるn番目の’('とそれに対応する’)'に囲まれた部分にマッチする部分文字列(std::string)を返します。たとえば:

const char* source = "abc1234def";
boost::reg_expression<char> regex = "([a-zA-Z])(.*)[a-zA-Z]";
boost::match_results<const char*> results;
boost::regex_search(source, results, regex);
では、

result.str(1) = "c"

すいません。これが理解できません。教えてください

965 :デフォルトの名無しさん:2010/05/26(水) 20:14:28
何故
result.str(1) = "a"
result.str(2) = "bc1234"
にならないのかしら?

966 :デフォルトの名無しさん:2010/05/26(水) 20:21:00
わかりません。具体的に教えてください!

967 :デフォルトの名無しさん:2010/05/26(水) 20:35:44
boostでかいしコンパイル遅いし、使える機能だけを絞ってライブラリ化してくれよ
一つのヘッダ、lib 読んだら、全ての機能がつかるやつ。

968 :デフォルトの名無しさん:2010/05/26(水) 21:19:08
死ぬほどコンパイル遅くなるだろ馬鹿垂れ

969 :デフォルトの名無しさん:2010/05/26(水) 22:00:02
>>967
bcp使って自作するよろし

970 :デフォルトの名無しさん:2010/05/26(水) 22:15:17
最新版が出るに少し時間が掛かるけど↓これをインストールすれば
コンパイルは不要。

http://www.boostpro.com/download

971 :デフォルトの名無しさん:2010/05/26(水) 22:18:49
boostつかったプログラムのコンパイル時間掛かるのは、
多くのヘッダファイルを読み込むためと思う。
機能を限定して使えるやつだけ絞って、
最小のヘッダだけであとはlibに内蔵したら速いはずだよ。

972 :デフォルトの名無しさん:2010/05/26(水) 22:21:07
templateだからいいのにlibとかアホかと

973 :デフォルトの名無しさん:2010/05/26(水) 22:25:06
template必要なところは対応してなるべく早く動作するようにしたい。
コンパイル時間が掛かる。多方面にヘッダファイルを読みに行くのが駄目なんだ。
特殊なケースだとdouble int float stringなどをlibに展開しておいても良い。
関数の性質から任意の型を受け入れない物もある。

974 :デフォルトの名無しさん:2010/05/26(水) 23:12:16
boostをインクルードするヘッダファイルをプリコンパイルしたらぶったまげた

$ cat hoge.h
#include <boost/asio.hpp>
$ g++ -c hoge.h
$ ls -l
total 37364
-rw-r--r-- 1 oreore oreore 26 May 26 09:58 hoge.h
-rw-r--r-- 1 oreore oreore 38207008 May 26 10:02 hoge.h.gch


975 :デフォルトの名無しさん:2010/05/26(水) 23:36:11
これが Boost の醍醐味。

976 :デフォルトの名無しさん:2010/05/27(木) 02:48:11
だれかラッパライブラリ開発してくれないですか。
主要な有名どころだけをまとめて一ヘッダ、一Libで出来れば
需要あるよ。
boostユーザーの大半が使うかもしれないよ。
HPに誘導してあふぃりえいと出来るよ。

977 :デフォルトの名無しさん:2010/05/27(木) 03:55:26
iphone版ラブプラスにboostライセンスが表示されてるらしい。
必要ないはずなのになんで表示したんだろ。

978 :デフォルトの名無しさん:2010/05/27(木) 07:53:20
愛故に、だろう。

979 :デフォルトの名無しさん:2010/05/27(木) 12:19:05
強制されないライセンス表示は感謝の意味もあると思う。

980 :デフォルトの名無しさん:2010/05/27(木) 18:43:26 ?2BP(0)
使ってないのに表示したらアウトなんだろうか。
そんなことする目的は知らないが。

981 :デフォルトの名無しさん:2010/05/27(木) 19:30:11
「天然由来の成分を使用してます」みたいに
「IT業界最強のライブラリboostをぜいたくに使用した高級プログラムです」とか書いちゃうわけか。
偽装表示もいいとこだけど、それを取り締まる法律とかあるかな。詐欺罪?

982 :デフォルトの名無しさん:2010/05/27(木) 19:43:29
取り敢えずJAROに通報しろ。

983 :デフォルトの名無しさん:2010/05/27(木) 19:54:02
concept checkを使いましたが、バイナリには一バイトも含まれていません><

984 :デフォルトの名無しさん:2010/05/27(木) 20:29:10
アマガミ程度か。

985 :デフォルトの名無しさん:2010/05/27(木) 21:39:31
MPLをType Erasureの為に使ってるだけのコードは手元にあるな
これもバイナリには全く含まれないケースか

986 :デフォルトの名無しさん:2010/05/27(木) 21:42:11 ?2BP(0)
Debugビルドではprogress_displayを使用してますが
Releaseビルドでは使用していません><
とか

987 :デフォルトの名無しさん:2010/05/27(木) 23:33:35
boost.fiber をビルドしたのですが、以下のエラーがでてビルドできません。
解決策を教えて下さい。

C:/lib/boost/boost_1_42_0/libs/fiber/build\pyutils.jam:2: in load
rule PYTHON_IMPORT_RULE unknown in module pyutils.
C:/lib/boost/boost_1_42_0/tools/build/v2/kernel\modules.jam:283: in modules.impo
rt
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:903: in import
libs\fiber\build\Jamfile.v2:14: in modules.load
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:313: in load-jamfile
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:62: in project.load
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:763: in project.use
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:89: in load-used-proj
ects
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:73: in load
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:168: in project.find
C:/lib/boost/boost_1_42_0/tools/build/v2\build-system.jam:553: in load
C:\lib\boost\boost_1_42_0\tools\build\v2/kernel\modules.jam:283: in import
C:\lib\boost\boost_1_42_0\tools\build\v2\kernel\bootstrap.jam:142: in boost-buil
d
C:\lib\boost\boost_1_42_0\boost-build.jam:17: in module scope

988 :デフォルトの名無しさん:2010/05/27(木) 23:41:23
ゾルド済みのこれ使えば

ttp://booster.x0.to/

989 :デフォルトの名無しさん:2010/05/28(金) 00:33:23
>>981
>IT業界最強のライブラリboostをぜいたくに使用した高級プログラムです

それ採用してもいいですか

990 :デフォルトの名無しさん:2010/05/28(金) 01:16:13
boostでよく使われてるのってスマートポインタと正規表現となんだ

991 :デフォルトの名無しさん:2010/05/28(金) 01:18:34
もうoptionalなしの生活は考えられない
あとshared_ptrとformat

992 :デフォルトの名無しさん:2010/05/28(金) 01:36:18
文字列やテキスト処理とあまり縁がないせいか
regex、xpressive、spiritとか使った事ない
だからこのスレの話題についていけない事が多い

993 :デフォルトの名無しさん:2010/05/28(金) 02:44:16
スマートポインタと正規表現とハッシュマップは0xに入っちゃったから
もうBoostなくてもそんなに困らない

994 :デフォルトの名無しさん:2010/05/28(金) 02:48:23
array, foreach, enable_if, filesystem, format, iterator_facade, mpl, optional,
pool, pp, range, smart_ptr, string_algo, thread, timer, type_traits
あたりはよく使うよ

995 :デフォルトの名無しさん:2010/05/28(金) 03:50:51
他にはbindとfunctionかなあ

996 :デフォルトの名無しさん:2010/05/28(金) 04:33:28
>>988 ぞるどwかな打ちw

997 :デフォルトの名無しさん:2010/05/28(金) 06:53:02
smapo

functionかな
全然使いこなせないわorz


998 :デフォルトの名無しさん:2010/05/28(金) 06:55:19
progress_displayさんのことdisってんの?

999 :デフォルトの名無しさん:2010/05/28(金) 06:59:24
もうネットワーク関連はasio無しで書けない。

1000 :999:2010/05/28(金) 07:00:27
というのは気のせいでした

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

258 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)