Boost総合スレ part9

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
2デフォルトの名無しさん:2010/05/28(金) 11:51:08
■関連書籍■
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++相談室 part81
http://pc12.2ch.net/test/read.cgi/tech/1273407971/

C++0x 9
http://pc12.2ch.net/test/read.cgi/tech/1269623636/
3デフォルトの名無しさん:2010/05/28(金) 11:51:54
4デフォルトの名無しさん:2010/05/28(金) 21:38:34
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
5デフォルトの名無しさん:2010/05/29(土) 22:02:12
ublas::vectorには==演算子が定義されていないのでしょうか?
64:2010/05/30(日) 10:57:08
>>4
fiber\build\Jamfile.v2の
14行目の import pyutils ; を消す。
29行目の [ pyutils.linkage ] を "WindowsPE" に変更。
53行目の [ pyutils.architecture ] を "i386" に変更。
(pyutils.py の実行結果を直で書いた・・・)

で解決しました。
7デフォルトの名無しさん:2010/05/31(月) 11:27:35
#include <boost/iostreams/stream.hpp>
#include <boost/iostreams/device/array.hpp>
#include <iostream>

namespace io = boost::iostreams;
char buf[] = {1, 2, 3, 4, 5};

#if 0
// (A)
io::array_source src(buf);
io::stream_buffer<io::array_source> sb(src);
#else
// (B)
io::stream_buffer<io::array_source> sb(io::array_source(buf));
#endif

std::istream s(&sb);

(B)の場合はコンパイルが通るのですが、(A)の場合だと
> C2664: 'std::basic_istream<_Elem,_Traits>::basic_istream(std::basic_streambuf<_Elem,_Traits> *,bool)' : 1 番目の引数を
> 'boost::iostreams::stream_buffer<T> (__cdecl *)(boost::iostreams::array_source)' から 'std::basic_streambuf<_Elem,_Traits> *' に変換できません。
となりますが、理由がわかりません。
array_sourceを直接渡すか変数を介すかで、何故違いが出るのでしょうか?

VC++2010 EE + boost 1.43.0
87:2010/05/31(月) 11:47:01
いろいろ試してみたところ
> io::stream_buffer<io::array_source> sb(io::array_source(buf));
が関数プロトタイプと解釈されている事が原因のようです。
これは言語的に正しい解釈なのでしょうか?
9デフォルトの名無しさん:2010/05/31(月) 20:37:37
>>8
Yes.
Effective STL に載ってる有名な落とし穴。
107:2010/06/02(水) 11:10:46
>>9
io::stream_buffer<io::array_source> sb(io::array_source buf);
という風に解釈されるんですね。
遅くなりましたがありがとうございました。
11デフォルトの名無しさん:2010/06/07(月) 15:35:41
すみません質問です。

VisualStudioの2008と2010が入っている環境でboostをビルドしたところ、msvcのバージョン指定しない場合は「〜vc100〜.lib」等が作成されました
VS2010でサンプルアプリケーションを作って実行したところ正常動作を確認したのですが、欲しかったのはVS2008用のため、msvcのバージョンを指定してビルドしたのですが、
「〜vc〜.lib」というファイルが出来あがり、VS2008でサンプルアプリケーションを作って実行したところ「〜vc90〜.lib」が見つからずエラーとなりました

古いバージョンのビルドでバージョン表記を付けてビルドするにはどうすればいいんでしょうか。

参考にしたURLこちらで、バージョン指定のビルド時は「--toolset=msvc-9_0」を指定しました
http://www.kmonos.net/alang/boost/build.html
12デフォルトの名無しさん:2010/06/07(月) 16:55:39
toolset=msvc-9.0
13デフォルトの名無しさん:2010/06/07(月) 17:33:04
うおおおできたぁあああああああ!!!

有難うございます助かりましたm(_ _)m
14デフォルトの名無しさん:2010/06/08(火) 01:50:23
bjam toolset=msvc-8.0 variant=debug,release link=static threading=multi runtime-link=static stage
bjam toolset=msvc-9.0 variant=debug,release link=static threading=multi runtime-link=static stage
bjam toolset=msvc-10.0 variant=debug,release link=static threading=multi runtime-link=static stage

ウチはこれで容量節約
15デフォルトの名無しさん:2010/06/09(水) 03:06:45
質問お願いします。

ublasで

A=[B~t C^t]~t A,B,Cはベクトル

  Y 0 0
X=[0 Z 0 ]  X,Y,Z,Wは行列
  0 0 W

この時のB,CやY,Z,Wが存在していてそれを元に
AやXを作成したいのですが良い方法はありますでしょうか?s
16デフォルトの名無しさん:2010/06/09(水) 03:08:19
A=[B^t C^t]^t ですね。すみませんでした。
17デフォルトの名無しさん:2010/06/09(水) 03:49:15
ベクトルA,B,C と行列Xになんの関係もないじゃん。
18デフォルトの名無しさん:2010/06/09(水) 07:26:59
そうですね。A,B,CとX,Y,Z,Wの間には関係がないです。
B,CをもとにA、Y,Z,WをもとにZをそれぞれ定義したいという感じです。
19デフォルトの名無しさん:2010/06/09(水) 19:48:55
>>15
ublas使うなら ttp://d.hatena.ne.jp/blono/archiveを1から読むといいよ
15が聞きたいことも頻繁にやってる(projectとかsliceとか)
20デフォルトの名無しさん:2010/06/11(金) 01:06:06
15です。
そのサイトは非常に参考にさせて貰ってます。

たぶんですけどsliceからのswapでいけるのかなぁ〜と考えてます。
ともかく色々試してみます。質問に答えてくれてありがとう。
21デフォルトの名無しさん:2010/06/12(土) 21:45:16
ビルドしたライブラリ(.lib)の名前の後ろにつく文字列に、mtとmt-sという
2種類のものがあるのですが、どのような違いがあるのでしょうか?
mtというのは、VC++のランタイムライブラリ設定で"マルチスレッド"を
選んだからだと思うのですが、sという文字列の意味がわかりませんでした。
初歩的な質問かもしれないですが、教えてもらえるとうれしいです
22デフォルトの名無しさん:2010/06/12(土) 21:46:38
static
23デフォルトの名無しさん:2010/06/12(土) 22:40:53
24デフォルトの名無しさん:2010/06/17(木) 00:54:23
>>21
VC++のランタイムライブラリ設定でいうなら
マルチスレッド libboost_…-mt-s
マルチスレッド デバッグ libboost_…-mt-sgd
マルチスレッド DLL libboost_…-mt
マルチスレッド デバッグ DLL libboost_…-mt-gd

ただし、このDLLというのはCランタイムのDLLのことなので
BOOST C++ ライブラリをDLLで使いたい人のために
boost_で始まるlib/dllも出力されるので
bjam toolset=msvc-10.0 --build-type=complete stage
すると5.8GBにもなるという
25デフォルトの名無しさん:2010/06/21(月) 20:29:21
weak_ptrってshared_ptrが無効かどうか知る場合に使えばいいですか?

26デフォルトの名無しさん:2010/06/21(月) 20:31:26
>>25マルチすんな
27デフォルトの名無しさん:2010/06/21(月) 21:29:27
何が悪いんだよ
おまえ goto 有害説にしか見えないぜ
28デフォルトの名無しさん:2010/06/22(火) 08:39:32
>>25
いいえ
29デフォルトの名無しさん:2010/06/22(火) 10:58:33
>>26
ごめんなさい・・・
スルーされたもんで
30デフォルトの名無しさん:2010/06/22(火) 15:50:16
>>29
そんな言い訳が通用したらマルチは存在しない。
常識で考えればちゃんと取り下げてから来いよ。
31デフォルトの名無しさん:2010/06/22(火) 21:52:41
>>25
できるけど、普通shared_ptrはコンストラクタで初期化するのだし
そういうコードが必要になるような設計に問題があると思う
if (p != NULL) {...} がバグの温床だからやめようというのと同じで
if (p.use_count()) {...} ってのも関心しない
検索してもなかなか出てこないのには好ましくないから
人に見せるような綺麗なプログラムにはあまり出てこないという背景がある
32デフォルトの名無しさん:2010/06/23(水) 18:26:38
p.use_count() はともかく

if (shared_ptr<Hoge> p = wp.lock()) {
...
}

あたりはかなり典型的かつ有用な idiom のような?
33デフォルトの名無しさん:2010/06/23(水) 20:36:20
ブーリアンコンテキストでチェックするのは普通でしょ
そのためにsafe boolが定義されてるんだから

use_count()はデバッグやテストのためであって
製品版では使うなとドキュメントに書いてあったはず
34デフォルトの名無しさん:2010/07/02(金) 17:48:50
へえ
35デフォルトの名無しさん:2010/07/07(水) 10:17:00
ublasって
純粋なCと速度はあんまり変わりないの?

他のboostもコンパイルに時間かかるだけで実行時間は純粋なCとあまり変わりないの?
36デフォルトの名無しさん:2010/07/07(水) 10:36:39
純粋なCってなんだよ
この世には不純なCがあるのか?
37デフォルトの名無しさん:2010/07/07(水) 11:30:27
全てはアセンブリ言語に変換・・・アセンブルされ、リンクし、バイナリは天に召される。
動けわがプログラムよ!
38デフォルトの名無しさん:2010/07/07(水) 11:53:17
天に召されたらうごかないんじゃね
39デフォルトの名無しさん:2010/07/07(水) 15:04:32
天はCPUなり
40デフォルトの名無しさん:2010/07/07(水) 15:13:58
三途のバスを越え、閻魔CPUの裁きが下るそのとき、
あなたの運命は定まるでしょう。
41デフォルトの名無しさん:2010/07/09(金) 10:47:13
boost::regex hosii("hoge ?\(");//boost::reg_expression<char> regex = 正規表現;にするとできない。
boost::match_results<const char*> results;//←もうこの辺から::を押しても出てこない
boost::regex_search(data, results,hoge);
fputs(results.str(0), wfp);←ここでエラー

boostが全然できません
error C2664: 'fputs' : 1 番目の引数を 'std::basic_string<_Elem,_Traits,_Ax>' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照)
1> with
1> [ _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。
キャストする

error C2440: '<function-style-cast>' : 'std::basic_string<_Elem,_Traits,_Ax>' から 'char' に変換できません。
1> with
1> [ _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。
助けてください
簡単にC++で正規表現できるんじゃないんですか?VC++2008EE notCLI 正規表現で文字列取得して配列に入れたいだけです。どうすれば良いのでしょうか?
42デフォルトの名無しさん:2010/07/09(金) 11:05:23
エスケープシーケンス
std::string::c_str()
まずC++の基礎を何とかしてください。
43デフォルトの名無しさん:2010/07/09(金) 11:21:56
ありがとうございます。一応コンパイル通りました
results.str(0).c_str()
こんなのがあるなんて全然知りませんでした。
44デフォルトの名無しさん:2010/07/09(金) 14:00:41
詰みました
boost::regex hosii(" *hoge *\(");←ここで止まります。ハンドルされていない例外ですと
boost::match_results<const char*> result;
boost::regex_search(data, results,hosii);
fputs(results.str(0).c_str(), wfp);
何が間違ってるのでしょうか?
エスケープシーケンスが正しくないかもしれませんみたいな警告が出てましたが何か間違ってますか?
45デフォルトの名無しさん:2010/07/09(金) 14:08:24
\→\\
46デフォルトの名無しさん:2010/07/09(金) 14:14:35
>>45
ありがとうございました
一見\で\が文字化されそうですね
47デフォルトの名無しさん:2010/07/09(金) 14:54:13
簡単さならxpressiveがヘッダファイルだけで済んで手軽
Static版の文法覚えちゃえば処理速度も期待できる
ただしコンパイル時間は延びる
48Regex:2010/07/10(土) 01:03:17
ぼくもほめて(´;ω;`)
49progress_display:2010/07/10(土) 05:24:22
まだまだ未熟だな。
50名無しさん@そうだ選挙に行こう:2010/07/10(土) 08:51:21
ublasは中身替えられるから
ATLASなどを使えばSIMD対応で速いと聞く
ただATLASのコンパイルという壁が・・
51名無しさん@そうだ選挙に行こう:2010/07/10(土) 09:17:03
regexはユーザーが入力した正規表現をそのまま渡しても平気かな?セキュリティーホールになったりしない?
52名無しさん@そうだ選挙に行こう:2010/07/10(土) 10:30:03
Xpressive VC2008だと山のように警告が出る
53名無しさん@そうだ選挙に行こう:2010/07/10(土) 12:17:27
そうか?型の整合性さえ取れれば何も言われないけどな
山のようにって言っても一部の警告がテンプレートの展開で連鎖してるんだろ
54名無しさん@そうだ選挙に行こう:2010/07/10(土) 23:54:14
Boost.Xpressiveサイコー
でも標準入りを果たしたStd.Regexの汎用性には負ける。

55名無しさん@そうだ選挙に行こう:2010/07/11(日) 00:09:26
RegexってインタプリタパターンとかDSLになるん?
56名無しさん@そうだ選挙に行こう:2010/07/11(日) 20:18:20
Regexはインタープリタ
XpressiveはTMP、インタープリタ、両対応。
57名無しさん@そうだ選挙に行こう:2010/07/11(日) 22:54:07
>>55
> インタプリタパターン
> DSL
って何?パターン?
よく知らないんだけど、正規表現の業界用語?
58名無しさん@そうだ選挙に行こう:2010/07/11(日) 23:01:35
>>57
デザインパターン
5957:2010/07/11(日) 23:49:52
>>58
Gang of Fourのdesign patternのこと?
インタプリタパターンなんてあった記憶が無いんだけど。

…あったし!!ごめん!
Interpreter パターン - Wikipedia
ttp://ja.wikipedia.org/wiki/Interpreter_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3

60デフォルトの名無しさん:2010/07/12(月) 08:01:49
> DSL
Domain Specific Language
分野特化言語
61デフォルトの名無しさん:2010/07/12(月) 10:30:16
>>60
ありがとう。
62デフォルトの名無しさん:2010/07/12(月) 19:46:25
Interpreter パターンとか Visitor と Composite 組み合わせて ParseContext 作っただけにしか見えないわ
63デフォルトの名無しさん:2010/07/13(火) 20:33:35
実装詳細を見てわかった気になるヤツって多いよね
64デフォルトの名無しさん:2010/07/17(土) 01:11:16
mac osx 10.6 xcode 環境で boost のインクルードパスをシステムインクルードの検索パスに追加してビルドすると、

/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64/bits/c++locale.h:80:0
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64/bits/c++locale.h:80:
error: 'vsnprintf' is not a member of 'std'

などと言われて、コンパイルできません。
osx内のSDKのヘッダとboost のそれが競合してる見たい何だけど、どうやれば解決できませすか。
65デフォルトの名無しさん:2010/07/17(土) 01:29:37
誰か>>64の解決策教えてよ。友達いないんだ。さみしいの。
66デフォルトの名無しさん:2010/07/17(土) 06:20:17
67デフォルトの名無しさん:2010/07/17(土) 23:47:39
それっす。有り難う。
68デフォルトの名無しさん:2010/07/20(火) 11:55:02
OSXと関係ないが、VC++は<c**>でincludeしてもstdにならないんだよな確か
69デフォルトの名無しさん:2010/07/20(火) 15:14:39
>>68
標準関数はstdに入ってるよ
同時にグローバル名前空間にもぶちまかれるが
70デフォルトの名無しさん:2010/07/22(木) 11:56:17
http://www.atmarkit.co.jp/news/200909/07/lltv02.html
boostより抽象度は高そうなんだが
71デフォルトの名無しさん:2010/07/22(木) 13:21:34
>言語と戯れよう
プログラミング自体が目的になってる方は死んで下さい
72デフォルトの名無しさん:2010/07/22(木) 14:37:08
VC++2010だと、BOOST_SCOPE_EXITとかBOOST_FOREACH使うとクラスビューの
関数解析結果がおかしくなるんだが・・・
73デフォルトの名無しさん:2010/07/22(木) 15:22:58
>>71
MPLの変な文法おぼえるよりlisp覚えたほうが得
どうせ生成されるCは同じなんだし

多分、動く奴はこれ

http://homepage.mac.com/naoki.koguro/prog/dyncomp/index-j.html
74デフォルトの名無しさん:2010/07/22(木) 15:27:56
どこの馬の骨ともしれぬジャップがでっち上げた俺ライブラリなぞ論外
75デフォルトの名無しさん:2010/07/22(木) 16:54:25
そういわずに育ててやれよ
76デフォルトの名無しさん:2010/07/22(木) 17:47:33
これってジェネレーラーはLispでかかれてるんかいな?
落としてみたけどS式書いてあるファイルがみつからんよ??
77デフォルトの名無しさん:2010/07/23(金) 02:56:10
本当の本体はGaucheのソースの中らしい
78デフォルトの名無しさん:2010/07/23(金) 16:27:02
Gaucheのソースを解凍
lib/cgen
の下
79デフォルトの名無しさん:2010/07/23(金) 16:28:51
なるほど、サンキュ!
80デフォルトの名無しさん:2010/07/23(金) 16:37:18
Gaucheソース
ext/uvector
のMakefile
に使用例
81デフォルトの名無しさん:2010/07/24(土) 12:02:15
http://alohakun.blog7.fc2.com/blog-entry-586.html
lispから読めるCを生成する別な方法
82デフォルトの名無しさん:2010/08/05(木) 04:40:34
boost-buildと、boost-jamの関係を教えてください。
83デフォルトの名無しさん:2010/08/05(木) 23:37:31
恋人
84デフォルトの名無しさん:2010/08/06(金) 05:29:27
英語のドキュメント読んでましたが、よく分かりませんでした。
まじめにお願いします。
85デフォルトの名無しさん:2010/08/07(土) 21:52:40
lover
86デフォルトの名無しさん:2010/08/07(土) 23:06:13
boostjamはインタプリタ
87デフォルトの名無しさん:2010/08/08(日) 23:56:10
gauche.cgen.cise
のコード読んでるんだが、これあったらboostいらないかもしれない
88デフォルトの名無しさん:2010/08/11(水) 06:35:05
comp.lang.lispに書いてること信じるなら
thinlispの方がgauche.cgen.ciseよりすごいかもしれない
makefile *.hまで生成するっぽい
89デフォルトの名無しさん:2010/08/13(金) 21:17:55
a
90デフォルトの名無しさん:2010/08/16(月) 20:26:00
>>70
の使い方をまとめた

CiSE simple example
http://d.hatena.ne.jp/niitsuma/20081113/1281521109
91デフォルトの名無しさん:2010/08/17(火) 03:24:37
1.44
Boost C++ Libraries
http://www.boost.org/
92デフォルトの名無しさん:2010/08/17(火) 09:18:48
>>90
これデバッグはしやすい?
93デフォルトの名無しさん:2010/08/17(火) 10:19:11
>>90
別にスレ建てたほうが注目してもらえるよ。
「S式でCを書くCiSEスレ」とかにすれば関数型ファンがすぐ集まるよ
94:2010/08/17(火) 11:20:40
適当なテンプレがあるなら、自分がスレ立てるけど
95デフォルトの名無しさん:2010/08/17(火) 12:54:13
なんでCでこういうのむりやりやろうとするのか疑問だわ。
言語機能に組み込んで新言語つくりゃいいのに。

96デフォルトの名無しさん:2010/08/17(火) 13:01:41
>>95
言語機能で提供すべきことと
言語自身を使って作るものの
単純明快な判断基準がウケたのがC
新基準を開拓に行くと出かけて帰りが遅いのがC++
97デフォルトの名無しさん:2010/08/17(火) 13:16:18
lambdaが言語に組み込まれて良かったわ
ずっとboost.lambda使えっていわれたらどうしようかと思った
98デフォルトの名無しさん:2010/08/17(火) 13:25:20
>>92
そのための
#line
99デフォルトの名無しさん:2010/08/17(火) 14:44:32
>>95
lispの便利さを知ってしまうと他を使いたくなくなる
(コマンドラインgcc からVisualStudioに移ったぐらいの便利さがある)
しかし他から「成果はCかC++で納めてくれ」と言われることは多いらしく
cise とかthinlispとかこの手の試みがいろいろされてきたようだ
100デフォルトの名無しさん:2010/08/17(火) 15:35:02
まあC++も最初はCのトランスレータだったし
101デフォルトの名無しさん:2010/08/17(火) 15:50:02
lispそんなにいいとも思わんしいらんわ
102デフォルトの名無しさん:2010/08/17(火) 18:11:44
誰かboostの構文生成するようなdefine-stm を作って公開しないか
103デフォルトの名無しさん:2010/08/26(木) 16:40:58
質問です。
boost::tokenizer< escaped_list_separator_sjis > tok( csvLine );
for(boost::tokenizer<escaped_list_separator_sjis >::iterator p=tok.begin(); p!=tok.end();++p){

cout << *p + " ";//"\n";

これを実行するとすべてが1行にコマンドプロンプトに表示されます。
これをCSVファイルの並びと同じように行ごとに表示させたいですが
どうしたらよいでしょうか?良い解決策がありましたらお願いします。
<例>
a,e,d
q,d,r
r,u,t
これを実行すると
a e d q d r r u tのようになります。
これを
a e d
q d r
r u t
のようにしたいです。
104デフォルトの名無しさん:2010/08/26(木) 17:31:03
csvLineに1行ずついれてるなら
for( 〜 ) {
105デフォルトの名無しさん:2010/08/26(木) 17:33:26
間違えて送信した
for( 〜 ) {
cout << *p + " ";
}
cout << endl;
とでもすればいい
そういう問題じゃないのか?
106デフォルトの名無しさん:2010/08/30(月) 14:01:04
boost::tokenizer< escaped_list_separator_sjis > tok( csvLine );
for(boost::tokenizer<escaped_list_separator_sjis >::iterator p=tok.begin(); p!=tok.end();++p){

cout << *p + "\t";
}
cout << endl;
これを出力すると
a e d
q d r
r u t
なりました。ありがとうございます。
これをタブ区切りでtsvファイルに出力したいのですがどうすればよいでしょうか?
107デフォルトの名無しさん:2010/08/30(月) 14:05:26
>>106
Boostの埒外なので勝手にどうぞ。
108デフォルトの名無しさん:2010/08/30(月) 14:09:41
tsvってなに?
109デフォルトの名無しさん:2010/08/30(月) 14:21:29
>>108
TabSeparatedValueフォーマットの略。
110デフォルトの名無しさん:2010/08/30(月) 14:34:04
106に書き込んだものです。C++で質問したいと思います。
申し訳ありませんでした。
111デフォルトの名無しさん:2010/08/30(月) 15:03:41
>>108
トンクス、tab区切りなのか・・・。
112デフォルトの名無しさん:2010/09/01(水) 12:12:26
Boost.Polygonきたー
113デフォルトの名無しさん:2010/09/01(水) 16:41:37
Boost.Polygonって何に使うのか全然わからね。
114デフォルトの名無しさん:2010/09/03(金) 22:32:03
boost::regex re("(\\d+)(?:,(\\d+))*");

boost::smatch result;
std::string str = "1,2,3,4";
if (boost::regex_match(str, result, re))
{
 for (int i=0; i<result.size(); i++)
  printf("%d: %s\n", i, result.str(i).c_str());
}

このようなコードを実行すると1と4しかresultから取り出せないんですが、
1から4まで全て取り出すにはどうしたらいいですか?
実際はもっと複雑なフォーマットなので正規表現でなんとかしたいです。
115デフォルトの名無しさん:2010/09/03(金) 23:00:26
((\d+)(?:,|))*
ただのカンマ区切りならboost::tokenizerじゃだめなの?
116デフォルトの名無しさん:2010/09/04(土) 20:16:45
1.44ってVC10とかのmove semanticsに対応してる?
117デフォルトの名無しさん:2010/09/06(月) 10:13:54
CSVはきっちりやるなら一文字ずつチェックしていくしかないだろ。
ダブルクォートの処理とかマジめんどい
118デフォルトの名無しさん:2010/09/06(月) 23:34:29
Boost.Polygon早速仕事で使ってみてる。
なかなかいい感じ。

でもまだ機能が少ないな。
他の表現法からの取り込み対応も必要だ。
119デフォルトの名無しさん:2010/09/07(火) 14:20:33
多角形の頂点管理でもしてくれるライブラリかい?
120デフォルトの名無しさん:2010/09/07(火) 14:44:58
>>119
点とか矩形みたいな基本図形もある
121デフォルトの名無しさん:2010/09/07(火) 14:55:09
3次元のポリゴン・メッシュを管理してくれるのなら使い道もあるのだが。
122デフォルトの名無しさん:2010/09/09(木) 22:50:01
boost.interprocessってメモリアライメントを考慮してくれるんだろうか?
例えば、Win上で64bitアプリとWOW64で動いてる32bitアプリ間で
相互通信する場合はやっぱboost.mpiじゃないと駄目?
123デフォルトの名無しさん:2010/09/12(日) 19:09:03
>>114>>117
そこはほら、Boost.Spiritで
124デフォルトの名無しさん:2010/09/12(日) 22:15:08
>>123
いまいち使い方わかってないんだが、ググってみたらCSVのパースも
シンプルな式になるもんだな・・・
面白そうだから今度やってみよう。
教えてくれてトン。
125デフォルトの名無しさん:2010/09/15(水) 14:59:21
foo-baa.cpp
ってファイル名使いたい
でもboostではfoo_baa.cpp
なんだよね
FreeBSDのxtermだと _ 消えて見えないから見にくい
126デフォルトの名無しさん:2010/09/15(水) 21:55:24
>>91
boostpro からも1.44のインストーラが出てますね。

http://www.boostpro.com/download/
127デフォルトの名無しさん:2010/09/19(日) 14:37:09
Boost.Logって1.45から?
つうかreview scheduleにLoggingもあるんだけど
やつ間接的にLogに殺されたということなのか

Loggingは犠牲になったのか…
128デフォルトの名無しさん:2010/09/20(月) 16:01:06
property_treeのini_parserってメモリ上の文字列に対して使える?
129デフォルトの名無しさん:2010/09/20(月) 18:06:31
stream に対してなら使える。
130デフォルトの名無しさん:2010/09/20(月) 22:04:00
>>129

string path = "C:\\test.ini"
istream stream( path );
property_tree::ptree tree;
read_ini( stream, tree );

これはいけるけど、

string test = "[test]\ntest=100"
istringstream stream( test );
property_tree::ptree tree;
read_ini( stream, tree );

これはエラーが出る。何か間違ってるかな
131デフォルトの名無しさん:2010/09/21(火) 01:36:25
stringstreamのヘッダがインクルードされていないとかってオチ
…はないかw
132デフォルトの名無しさん:2010/09/21(火) 04:18:26
>>130
試してみたけど、PHOENIX_LIMIT のコンパイルエラー以外は普通に通ったぞ(Boost 1.44 + VC9)
とりあえずエラーの内容と環境貼れよ。
133デフォルトの名無しさん:2010/09/21(火) 21:19:18
>>132
すまん、勘違いしていたようだorz
しょーもないミスをしていた。自己解決したんでスルーしてください
134デフォルトの名無しさん:2010/09/22(水) 03:47:30 BE:2161145298-2BP(0)
boost::polygonってlong long使えないのか。
std::abs(long long)が無いってエラーになる。
135デフォルトの名無しさん:2010/09/22(水) 03:51:58
int64_t
136デフォルトの名無しさん:2010/09/22(水) 04:56:31 BE:1050557257-2BP(0)
そっちでも同じっぽい。
std::abs(int64_t)もstd::abs(__int64)も無い。
137デフォルトの名無しさん:2010/09/22(水) 12:29:35
long longが規格に入るのはC99/C++0xからだからしょうがない
138デフォルトの名無しさん:2010/09/22(水) 15:34:54
テンプレートで実装してなかったのは何か理由があるのか?
139デフォルトの名無しさん:2010/09/24(金) 13:46:51
ストリーム暗号を作っているのですが、手動でやると復号できるのに
プログラムでやろうとするとうまくいきません。2回同じ暗号化を
すれば元に戻るはずなのにそうなりません。
出来ればコマンドラインで暗号化復号化の選択ができるようにしたいです。
初心者でよくわからないことが多いのですがよろしくお願いします。

if (argc < 2) { printf("error\n"); return 1;}
sprintf(fin, "%.255s", argv[1]);
sprintf(fout, "%.250s.perm", argv[1]);

if(d==0){
fp=fopen("2.perm","wb");
fq=fopen("2","rb");
}else{
fp=fopen("2.txt","wb");
fq=fopen("2.perm","rb");
暗号化するときに
fp=fopen(fout,"wb");
fq=fopen(fin,"rb");
とするのはいいのですが、復号のときに暗号化されたファイルを
読み込んで処理しても復号できない。
何のデータにばけているのかわかりません。
140デフォルトの名無しさん:2010/09/24(金) 13:50:31
boostといったいなんの関係があるんだ
141デフォルトの名無しさん:2010/09/24(金) 14:07:47
マルチーズ
142デフォルトの名無しさん:2010/09/24(金) 15:35:38
>>140
そこに気付くとは・・・やはり天才・・・
143デフォルトの名無しさん:2010/09/24(金) 18:05:29
VC++10において、BOOST_TYPEOF(hoge)とdecltype(hoge)は等価になると思っていいんでしょうか?
144デフォルトの名無しさん:2010/09/24(金) 19:49:20
VC10のdecltypeは、コンパイラがクラッシュする致命的なバグがあるとか。
145デフォルトの名無しさん:2010/09/24(金) 20:04:26
大丈夫だ、問題ない
146デフォルトの名無しさん:2010/09/24(金) 21:01:53
>>144
コンパイラがクラッシュするって本格的だな。
でも実行時にクラッシュするよりはマシだと思うけど。
147デフォルトの名無しさん:2010/09/24(金) 23:02:26
>>144
クラッシュしないように使えば問題ない
148デフォルトの名無しさん:2010/09/24(金) 23:21:10
>>147
なぜMatz
149デフォルトの名無しさん:2010/09/25(土) 00:01:53
なんでかしらんがdecltypeって文字の並びに一瞬もよおした・・
本能が何かを感じたようだ
150デフォルトの名無しさん:2010/09/25(土) 01:11:10
Microsoft製品はSP1が出てから乗り換えるのが基本
本体の安定性もだが、OSだとサードのソフトが、VSだとプラグインやSDK類の対応がすぐには為されないからな
151デフォルトの名無しさん:2010/09/30(木) 21:40:06
VC9で1_44 pythonの埋め込みを試しているのですが
メモリリークが発生してしまいます
↓のようなコードなのですがどこがおかしいんでしょう?

class Hoge {};

namespace bpy = boot::python;
BOOST_PYTHON_MODULE(Hoge){
bpy::class_<Hoge>("Hoge");
}

int main( int, char **)
{
PyImport_AppendInittab("Hoge", initHoge);
Py_Initialize();

bpy::object global_ns = bpy::import("__main__").attr("__dict__");
bpy::exec(
"from Hoge import *\n"
"h=Hoge()\n"
, global_ns , global_ns
);
Py_Finalize();

return 0;
}

同等のことをクラス(Hoge)ではなく、関数で行うとメモリリークは起きません
152デフォルトの名無しさん:2010/10/07(木) 16:17:32
Macのgccっていろいろ変らしいのだけど
boostはちゃんと動くの?
153デフォルトの名無しさん:2010/10/07(木) 16:30:03
Boost側が頑張ってるから大丈夫
154デフォルトの名無しさん:2010/10/13(水) 20:14:50
variantってwitch()で型を判断するのダサくないですか?
なんかいい方法無いでしょうか
155デフォルトの名無しさん:2010/10/13(水) 20:19:55
Visitor使え。
156デフォルトの名無しさん:2010/10/13(水) 20:26:10
>>155
visitorとは何でしょうか?
157デフォルトの名無しさん:2010/10/13(水) 20:32:21
ググレカス
http://www.kmonos.net/alang/boost/classes/variant.html
ここ見てもわからなかったら氏ね。
158デフォルトの名無しさん:2010/10/13(水) 20:37:35
       ∧∧
       /⌒ヽ)  もはようちゃん
      i三 U   
     〜三 |
      (/~∪
    三三
  三三
三三
159デフォルトの名無しさん:2010/10/13(水) 20:56:27
ファンクションオブジェクトを型ごとにつくればいいのか。。。
160デフォルトの名無しさん:2010/10/14(木) 01:18:45
>>159
オブジェクトはひとつでいい。すべての型に対応するオーバーロードがあれば。

>>154
if (T* p = boost::get<T>(&v)) ... おすすめ。
161デフォルトの名無しさん:2010/10/14(木) 20:18:36
autoでどうにかならないの?
162デフォルトの名無しさん:2010/10/15(金) 01:18:06
>>161 何が?
163デフォルトの名無しさん:2010/10/23(土) 17:09:18
spirit::classicのコードをメンテというか改造使用と思ってるんだけどこれを期にspirit v2に移るべきでしょうか?
機能追加するので全面書き直しOKという前提で。
164デフォルトの名無しさん:2010/10/23(土) 17:33:40
V2ならパース結果をコンテナやタプルに格納する処理を超簡単に書ける。
Boost.Fusionとの連携もすごい。Boost.Qi も出始めと比べて安定して枯れてきてる。
Classic のコードを保守しなくていいなら乗り換えない理由はないと思う。
165デフォルトの名無しさん:2010/10/23(土) 18:28:44
コンパイラの負担が阿呆ほど増えるけどな
166デフォルトの名無しさん:2010/10/23(土) 18:32:06
Spirit 使ってる時点で既にコンパイル時間はboostしてるだろ。
167デフォルトの名無しさん:2010/10/23(土) 18:37:36
>>164-165
わかった。乗り換えてみるよ。
168デフォルトの名無しさん:2010/10/28(木) 15:41:30
sourceforgeのファイル一覧がひどいことになってるな
何のベンチマークだよこれ
169デフォルトの名無しさん:2010/10/31(日) 13:12:33
boostを使用してだいぶ開発が進んだ頃に以下のエラーが出るようになりました

1>d:\sdk\boost_1_44_0\boost\type_traits\detail\is_mem_fun_pointer_tester.hpp(1526): error C2061: 構文エラー : 識別子 'clasw'
1>d:\sdk\boost_1_44_0\boost\type_traits\detail\is_mem_fun_pointer_tester.hpp(1527): error C2365: 'boost::type_traits::is_mem_fun_pointer_tester' : 再定義; 以前の定義は '関数' でした。
1>d:\sdk\boost_1_44_0\boost\type_traits\detail\is_mem_fun_pointer_tester.hpp(1527): error C2998: 'boost::type_traits::yes_type boost::type_traits::is_mem_fun_pointer_tester' : テンプレート定義にはなれません。

リビルドしてもこのエラーが出ることもあるしでないこともあるし、出現位置もバラバラで全く原因がわかりません
上記ファイルを使用する機能や上記エラー内容が分かれば教えてください
170デフォルトの名無しさん:2010/10/31(日) 13:31:52
claswこれなんだ
171デフォルトの名無しさん:2010/10/31(日) 13:33:44
わからないです。そんなもの見つからないし、そんなコードがあったら毎回エラーになるはずですよね・・・
172デフォルトの名無しさん:2010/10/31(日) 13:34:51
とりあえず boost/function.hpp 使ってるところをすべてコメントアウトしたら出なくなったかも
173デフォルトの名無しさん:2010/10/31(日) 13:37:17
と思ったら21回目のリビルドででました・・・
174デフォルトの名無しさん:2010/10/31(日) 13:39:43
ちなみにIDEはVisualStudio2010Express
x86ターゲット、デバッグビルド
CPUはCore2Duoです
175デフォルトの名無しさん:2010/10/31(日) 13:42:54
とりあえずエラーになってしまったオブジェクトも再ビルドすれば普通に通るので、何度がビルドすれば実行ファイルはできます

コンパイラのバグかな?
176デフォルトの名無しさん:2010/10/31(日) 13:55:44
ディスクが壊れてるんじゃね?
177デフォルトの名無しさん:2010/10/31(日) 17:10:56
>>174
VC10なら使える人が多いんだから、エラーの出るソース晒してみそ

ビルドのやり直しで通るなら、簡易ビルドをOFFにしてみるてがある。
178デフォルトの名無しさん:2010/10/31(日) 20:35:59
念のためだけど、Debug フォルダ全消しはしてみたよね?
179デフォルトの名無しさん:2010/10/31(日) 22:18:47
>>176-178

レスありがとうございます

boostのディレクトリを丸々コピー→古いのを削除→新しいのをリネームしたら出なくなったっぽいです。
ディスク障害だったのかな・・・しばらく様子を見てみます
180デフォルトの名無しさん:2010/11/01(月) 15:21:45
昔はc++を喜んで使ってたが
lisp使うようになってからは
lispでデバックしてc++は自動生成するだけだわ
それにしてもc++の案件多いなあ
181デフォルトの名無しさん:2010/11/01(月) 15:25:02
>>180
最近のlispはC++にコンバートできるんだ?
Cへのコンバートなら良く見かけるんだけど・・・。

あとSchemeで実用レベルのCorC++コンバーターとかあります?
182デフォルトの名無しさん:2010/11/01(月) 15:30:32
>>180
Lispのどこらへんが魅力ですか? いや、マジに質問で。そっちのが効率いいなら
そっちに乗り換えるのもありかなと。
183デフォルトの名無しさん:2010/11/01(月) 16:38:02
>>182Lisp族の魅力はググればいろいろ読めるよ。
184デフォルトの名無しさん:2010/11/01(月) 17:46:13
切ったりくっ付けたりかね
185デフォルトの名無しさん:2010/11/01(月) 21:37:58
lispは合理的ではあるけど、アプリのすべての部分をlispで書くのは無茶じゃないか?
186デフォルトの名無しさん:2010/11/01(月) 21:58:24
サポートされるライブラリしだいだとおもうけどね。
187デフォルトの名無しさん:2010/11/01(月) 22:55:59
関数単位はCで書いてフレームにLispとかが良いのかね
188デフォルトの名無しさん:2010/11/02(火) 11:08:28
それもありだね。
189デフォルトの名無しさん:2010/11/02(火) 12:49:37
あなたにVacuum!〜ちょいやわらかめ〜
190デフォルトの名無しさん:2010/11/02(火) 20:02:11
Boost ってweb frameworkないの?
191デフォルトの名無しさん:2010/11/02(火) 22:06:40
馬鹿は死んだほうがいいね。
192デフォルトの名無しさん:2010/11/04(木) 08:26:01
javaをc++の方言としてコンパイルする方法あるみたいだから
tomcatあたりをc++としてコンパイルしたらいいんでないの?
193デフォルトの名無しさん:2010/11/05(金) 00:45:01
メモリーが無限にあればGCなんていらなくなるな。
194デフォルトの名無しさん:2010/11/05(金) 15:28:14
boostのmulti_arrayってコピーすると
ポインタで共有するんじゃなくて内容丸ごとコピーするのね
普通の配列みたいに共有して、不要になったら解放ってできないかな
shared_ptr<multi_array<T,int>>にするしかない?
195デフォルトの名無しさん:2010/11/05(金) 15:31:04
>>194
「普通の配列」が何を指してるのか知らないけど、言語組み込みの配列も std::vector も
boost::array も共有なんて動作はしません。

で、共有したいという目的に対して shared_ptr では何か不満なの?
196デフォルトの名無しさん:2010/11/05(金) 15:31:39
flyweightはダメか?
197デフォルトの名無しさん:2010/11/05(金) 15:37:23
>>194
http://www.boost.org/doc/libs/1_44_0/libs/multi_array/doc/reference.html

multi_array_ref やら view generator やらあるらしいぞ。
198デフォルトの名無しさん:2010/11/05(金) 15:37:30
194の配列とポインタの理解度に不安がよぎるな
199デフォルトの名無しさん:2010/11/05(金) 15:47:22
どうせJavaから来たニワカだろ。
200194:2010/11/05(金) 16:05:03
表現が悪かったっす
クラスメンバに多次元配列がほしいのですが、コンパイル時にサイズが不明なので、
言語組み込みの配列の配列を動的に確保して、多次元配列にしていました
管理が面倒なのでmulti_arrayを使うことに変更したいのですが、
インスタンスをコピーすることがままある&配列の中身は変えないので、
どうせなら配列の中身を丸ごとコピーしないで、ポインタだけで共有したいな、と

目的にはshared_ptr<multi_array<T,int>>が一番合致するんですが、
そうすると結構ソースコードを書き換える必要があるので
201デフォルトの名無しさん:2010/11/05(金) 16:17:11
shared_ptrだと不味いけどmult_arrayがまるごとコピーじゃなかったら問題なかったってことは
*とか->の話なのか?
202デフォルトの名無しさん:2010/11/06(土) 01:48:28
>>200
そんなに書き換えがいやなら、元の名前で multi_array<T,int>& とか multi_array_ref とかを
別で置いたらいいんじゃね?
203デフォルトの名無しさん:2010/11/06(土) 07:41:40
>>200
参照渡しで渡せばよくないか?
204デフォルトの名無しさん:2010/11/20(土) 09:47:50
1.45
Boost C++ Libraries
http://www.boost.org/
205デフォルトの名無しさん:2010/11/20(土) 12:08:55
あれ・・・bjamでビルド失敗するんだがなんだこれ
1.44以前や最新のリポジトリだと問題ないんだが
206デフォルトの名無しさん:2010/11/20(土) 16:58:02
1.45 VC10でビルドできたよ。
bjamがアンチウイルスに引っかかることは昔あったな。
207デフォルトの名無しさん:2010/11/20(土) 17:07:41
1.45ビルドできたと思ってたら、アプリのビルドで未定義外部シンボルが出てきた。
208205:2010/11/20(土) 19:08:36
zipや7zで圧縮されてるソースだと駄目だったけどbz2のはビルド出来た
解凍か何かでしくじってたんではないかと思う
209デフォルトの名無しさん:2010/11/20(土) 19:58:30
あー、解凍云々じゃなくて、ICU入れて--installオプションでビルドしようとするとしくじるみたい
MPICHも絡んでるかもしれん
bjamはフル機能でビルドしようとすると途端に動作がおかしくなるんだよな・・・
210デフォルトの名無しさん:2010/11/20(土) 23:59:36
駄目だ、Regexビルドしようとするとエラー吐く
わけわからんちん
211デフォルトの名無しさん:2010/11/21(日) 00:41:53
今落としてやってみたが普通にビルドできたぞ
212デフォルトの名無しさん:2010/11/21(日) 00:56:26
win vc9環境. 公式から落としてきた bjam.exe だとエラーで、
bootstrap.bat で生成したbjam.exeだとコンパイルできた…
そういうものなの?
213デフォルトの名無しさん:2010/11/21(日) 00:58:17
せっかく入ってるんだからそっちつかえってことじゃね
214210:2010/11/21(日) 02:54:08
今までは最新のリポジトリからビルドしたbjam.exeを常に使ってたんだけど、
>>212のレスを見て1.45リリース版のソースからビルドしたbjam.exeを使ったらビルド出来た
今回のリリースはちょっと癖があるな
215デフォルトの名無しさん:2010/11/21(日) 10:39:02
一番でかい更新はbjamってことか
216207:2010/11/21(日) 13:36:23
>>207のリンクエラーは俺のミスでした。
間違えてx86でライブラリビルドしてx64のアプリをビルドしてました。
x64でboostのビルドやり直したら直った。
217デフォルトの名無しさん:2010/11/21(日) 13:43:43
x64とx86ってライブラリ名同じなんだけどそういうものなの?
218デフォルトの名無しさん:2010/11/21(日) 16:34:15
むしろ別なのを見たことがない
219デフォルトの名無しさん:2010/11/21(日) 16:35:04
>>217
        / /      '" /    / ,,-、 /、ヽ\  ゙i;,-''"   / ./  /─''''" ̄ ,,/
        /  ./ /   ,,,-‐'"-/   / ./ ゙" "\  ゙i;,  | 、// /   "    ,,,/
       / ,-''/ /    ,,-''"_ /   //       ヽ  l /  レ'/~       /‐/
      / /  | l|  ,,-'"/゙/,」|    /    ..::;;;,,,  }  /   |~ ,,-‐,,,-'''  //~
     / /-'''''| | /l /‐'''/'' .人   i'    .:: :;'" / / l  ノ゙i// ,,-‐'"──==
     //'"   ゙i;: | /‐' ./,, ,,ノ ゙i;,.  |     _,,-ヾ.// ノ ,-''" l |  ‐'"   ,,,-‐二
     レ'     ヽl:i' ./  )'、‐,\゙i;: | ,,,-‐二-┬ナ" /‐'"‐ 〉 ,i'───'''" ̄~-''"
         ,-‐',ヽ|'"  ./゙ヽ-ゝ='\゙i,'''ヽ -゙=‐'   '" ,‐'ノ,, /‐''" ,,-‐'''"~
        / / ;;:.  ──ヽ, ゙i;'''''' , ゙ "-‐'''''"""    〔_,/ ゙ヽ'-'"~
       / /   / ,; ,,_}_  ゙、 ./__,,  _,,       /      \    
      ,;'  / ,;;;:;:/;: ,,   ~ ヽ ヽ.  ヽニ‐'、     / /       ゙i,_        おめぇ、ここ大丈夫か?
    ./        ''  ,l,,,,,,/ 〉  ゙ヽ、 ''''    ,,-''" /        ゙i.\
    /          / ヽ /     ゙ヽ、--イ~;;:'" //   ::;:;:;:   | \
   i          /  ̄ ゙̄"          |;:" //            ヽ-‐'''"~l|
  ./    ゙''''ヽ、,,-‐''"              .i /,;'"   _,,,,,,,,,_,,,-‐'''-''"~     |
 (" ̄"'''''‐--、,,_i'                 // '",,-─'''"  ,,,-‐'",-‐'"  ,,,,-‐ .___|
 i' ゙'':::::::::::::::::::::::}

220デフォルトの名無しさん:2010/11/21(日) 20:05:13
CUDAのDLLは32bitと64bitで名前が違うな
221デフォルトの名無しさん:2010/11/21(日) 21:04:11
>>219
どうやってきりかえるん?
222デフォルトの名無しさん:2010/11/22(月) 06:55:09
Intelのライブラリも名前違ってたな。
223デフォルトの名無しさん:2010/11/23(火) 12:58:51
Boost インスコ・コンパイルしてみた
容量でか杉わろす
224デフォルトの名無しさん:2010/11/23(火) 19:41:47
32ビットと64ビットのライブラリでファイル名一緒だから、出力ディレクトリを変えている
自分はstage派だから--stagedir=stage32とstage64
225デフォルトの名無しさん:2010/11/24(水) 23:04:47
(´;ω;)自前 gcc-4.6.0(win) で signals だけが build を失敗する・・・orz
自前 gcc-4.5.1,4.5.2(win) では、build に成功するのにヽ(`Д´)ノウワァァァン
226デフォルトの名無しさん:2010/11/25(木) 01:37:45
msmを試してみてるんだけど
コンパイルに時間かかるね
227デフォルトの名無しさん:2010/11/25(木) 01:47:27
gccはバージョンによってエラー吐いたり吐かなかったりで始末に負えん
228デフォルトの名無しさん:2010/11/25(木) 02:07:17
gcc に限ったことじゃないだろう。
229デフォルトの名無しさん:2010/11/25(木) 02:25:05
Boostはとくにひどいね
230デフォルトの名無しさん:2010/11/25(木) 06:42:52
>>225
(´・ω・) log 吐かせたら stl_map.h の所で error してた
取りあえず、自前 gcc-4.6.0 の事なので放置・・・(´;ω;`)

以下、一部抜粋
-----
In file included from c:\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.0/include/c++/map:61:0,
from ./boost/signals/detail/named_slot_map.hpp:20,
from libs\signals\src\named_slot_map.cpp:12:
c:\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.0/include/c++/bits/stl_map.h: In member function 'void std::map<_Key, _Tp, _Compare, ・・・ < 略 >
libs\signals\src\named_slot_map.cpp:105:23: instantiated from here
c:\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.0/include/c++/bits/stl_map.h:626:9: error: call of overloaded
c:\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.0/include/c++/bits/stl_tree.h:763:7: note: candidates are: void std::_Rb_tree<_Key, ・・・ < 略 >
231デフォルトの名無しさん:2010/11/25(木) 09:26:14
こんなガラパゴスで愚痴ってたって解決せんぞ
さっさとBoostコミュに報告しろ
232デフォルトの名無しさん:2010/11/25(木) 12:57:09
「自前」なので放置、ってことは gcc の中身をいじってるんじゃないか?

相談したいならエラーメッセージを省略とか、わけわからんことするな。
233デフォルトの名無しさん:2010/11/25(木) 16:06:27
>>225
またおまえか。
234デフォルトの名無しさん:2010/11/25(木) 16:10:26
>>231-232
CYGWIN+MinGW+GCCスレでもずっとこの調子で長期にわたって
住民を困らせてるやつだから相手にしないほうがいいぞ。
235デフォルトの名無しさん:2010/11/25(木) 18:23:07
あら、そんな奴だったのか
ならば死ぬがよい
236うp:2010/11/28(日) 23:31:48
237うp:2010/11/29(月) 05:34:15
238デフォルトの名無しさん:2010/12/09(木) 08:16:18
SpritiとかQiとかYacc使えばいいのに
239デフォルトの名無しさん:2010/12/09(木) 08:20:50
boost.FC++
は何故採択されなかったのか
240デフォルトの名無しさん:2010/12/09(木) 08:44:11
Boost.Coroutine
がレビュースケジュールに入ってない
結局入るの?
241デフォルトの名無しさん:2010/12/09(木) 20:24:21
BOOST_SCOPE_EXITでメンバ関数を呼びたいときって

CMyClass* pthis = this;
BOOST_SCOPE_EXIT((&pthis))
{
  pthis->MemberFunc();
}
BOOST_SCOPE_EXIT_END;

こうしないと駄目?
242デフォルトの名無しさん:2010/12/13(月) 12:26:33
gccでC++0xオプションつけても動きますか?
243デフォルトの名無しさん:2010/12/20(月) 01:55:11
static boost::array<int, 5> Array;
のようにboost_arrayにstaticを付けるとvc2005ではデバッグ時にシンボルとして扱ってくれずに
ブレークポイントもウォッチも出来なくなりました。
これはboost::arrayをstaticにしてはだめということでしょうか?
それともvc2005が対応してないだけなのでしょうか?
244デフォルトの名無しさん:2010/12/21(火) 12:00:21
arrayを何とかして要素数の指定無しに使いたいんですが、無理なんでしょうか。

array<int, 3> a = {1,2,3};の要素数は推測して欲しいです。
245デフォルトの名無しさん:2010/12/21(火) 12:07:20
int a[] = { 1, 2, 3};
246デフォルトの名無しさん:2010/12/21(火) 12:27:22
>>245
その場合begin()やend()が提供されません
247デフォルトの名無しさん:2010/12/21(火) 13:00:03
boost::rangeのbegin()とend()を使えばいいのでは?
248デフォルトの名無しさん:2010/12/21(火) 14:57:50
>>247
あり^^
249デフォルトの名無しさん:2010/12/24(金) 08:56:10
なぜYes No判定関数は必ず
is_foo
なんだろう
250デフォルトの名無しさん:2010/12/24(金) 09:03:35
Is 〜はyesかnoしか返さないからだろ
251デフォルトの名無しさん:2010/12/24(金) 13:22:56
>>249 if (x.is_foo()) ... が英語の自然な文として読めるからだろ
252デフォルトの名無しさん:2010/12/24(金) 22:57:42
すみません質問です。
Win32のAPIによくあるコールバックから手軽にメンバ関数を呼びたくて
boost::bindでクラスのメンバ関数にバインドしたいのですがうまくいかず困っています。

具体的にはSetWindowsHookExに渡すHOOKPROCに、以下のメンバ関数を割り当てたいです
LRESULT App::HookProc( int code, WPARAM wp, LPARAM lp )

ちなみにHOOKPROCの定義はこんな感じ
typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam);


こんな感じで描いてみたんですが
SetWindowsHookEx( WM_IME_SETCONTEXT, boost::bind( &App::HookProc, this, _1, _2, _3 ), NULL, 0 );

結果は次の通りです
'SetWindowsHookExW' : 2 番目の引数を 'boost::_bi::bind_t<R,F,L>' から 'HOOKPROC' に変換できません

どう書いたら通るんでしょうか。よろしくお願いします
253デフォルトの名無しさん:2010/12/24(金) 23:10:30
無理に決まってんだろ
静的なメンバ作ってそこから呼ぶしかない
254デフォルトの名無しさん:2010/12/24(金) 23:22:33
インスタンスがあるならそれ使って呼ばせられなかったっけ
255デフォルトの名無しさん:2010/12/25(土) 00:12:42
呼び出し規約と引数をHOOKPROCに合わせたトランポリン関数を
動的に生成して…とか考え始めて無駄な時間を過ごすのが俺は好き。
256デフォルトの名無しさん:2010/12/25(土) 00:53:02
>>252
std::functionを使えばいい。
std::functionのオブジェクトのポインターをLPARAMとかを経由して渡す
コールバック関数は、ポインター経由でfunctionを使う。
257デフォルトの名無しさん:2010/12/25(土) 09:05:05
LPARAMはそういう用途じゃないから渡せなくないか?
258デフォルトの名無しさん:2010/12/25(土) 09:40:30
や、気のせいだった
259デフォルトの名無しさん:2010/12/26(日) 15:12:02
class hoge{ virtual void f(); };
class fuga : public hoge { void f(); };

x_queue<hoge> q;

q.push(hoge());
q.push(fuga());

q.front().f(); // hoge::f
q.front().f(); // fuga::f


こんな感じのコンテナってboostにない?
ようするにptr_vectorからnewも隠蔽したような感じの
stl基準満たしてなくてもいいです
260デフォルトの名無しさん:2010/12/26(日) 15:13:02
あ、間違えた

q.front().f(); // hoge::f
q.front().f(); // fuga::f



q.front().f(); // hoge::f
q.pop();
q.front().f(); // fuga::f
261デフォルトの名無しさん:2010/12/26(日) 15:15:32
>>259
本当にほしいなら ptr_vector をラップすりゃいいんだろうけど、
あんまり意味があるとは思わんな。
262デフォルトの名無しさん:2010/12/28(火) 00:43:51
263デフォルトの名無しさん:2010/12/28(火) 01:19:47
2chニュースは時事ニュースがとんでもなく面白く理解できる。
難しそうではあるが気になるニュースタイトルに飛んでみると記事に対する2ちゃんねらー達の面白い書き込みによってニュースの内容があっという間に理解出来る様になる。
おれは今まで半ば義務感でニュースをサイトなどに目を通していただけなのだが、2chニュースのお陰で仲間の誰よりも時事問題の先端を行く様になってしまった。もはや中毒気味になる位にニュースが毎日楽しくて仕方ない。
ここでは敢えて四つしか取り上げないが、2NNサイト内であればどの掲示板でもRSS生成が可能。
サイトを覗くだけでも良いがRSSリーダーで効率良く情報収集する人ならばこちらがオススメ。(RSSリーダーは各デバイスに応じた専用アプリ・ソフトがある)

またTwitterでも2ch botがある。Twitterは各デバイスに応じた専用クライアントソフト・アプリを介して使用するのが便利。興味が有る人は各々調べて貰いたい。

●2ちゃんねる ニュースサイト(RSS生成可)
2NN新着http://www.2nn.jp/latest/
2NNトップページhttp://www.2nn.jp/
2NN今日のニュース http://www.2nn.jp/ranking/today/
2NN祭級ニュース http://www.2nn.jp/matsuri/

●2ちゃんねる ニュースサイト(RSS生成不可)
2ちゃんねる BBY(各ニュース板における前日までの新着スレッドが一望出来る)http://headline.2ch.net/bbynews/
2ちゃんねる 全板縦断 勢いランキングhttp://2ch-ranking.net/index.html?board=zenban
?page=click_linklog_view.daily_ranking&
264デフォルトの名無しさん:2011/01/02(日) 15:17:28
Windows 7 64bit Visual Studio 2010 に32ビット、64ビット環境を作りたくて
boost1.45 をこのようにインストールしたんだが大丈夫?
265デフォルトの名無しさん:2011/01/02(日) 15:18:16
↑の続きです
bootstrap.bat

bjam --toolset=msvc address-model=64 --stagedir=./stage/x64 link=static,shared release debug stage

bjam --toolset=msvc address-model=32 --stagedir=./stage/x86 link=static,shared release debug stage
266デフォルトの名無しさん:2011/01/05(水) 18:01:17
boost.fusionにlambdaの配列入れたいけど無理っぽい
267デフォルトの名無しさん:2011/01/08(土) 16:57:40
Boost.Chronoがtrunkにきたな

・・・ところでBoost.Chronoってナニ?
268デフォルトの名無しさん:2011/01/08(土) 21:44:44
C++0x の <chrono> の Boost 実装版。
269デフォルトの名無しさん:2011/01/10(月) 16:48:23
時計?
270デフォルトの名無しさん:2011/01/10(月) 16:54:51
検索してまで知りたくないなら、それまでのこと
271デフォルトの名無しさん:2011/01/14(金) 13:16:14
質問があります。

boost で document を作成したいのですが、
その時、doxygen に対して オプションを渡したいです。

doxygen 単体の実行であれば、Doxyfile に書き込むものです。

色々調べて、jam ファイルの中に

<doxygen:param>VAR=VAL

と、いった記述を見かけたのですが、書き方がわかりません。


質問をまとめると、

boost 全体の document 作成に対して、効かせたい doxygen の設定がある場合、
* どこのファイルに
* どのように
記述したらいいのかということです。

ご存じの方、教えていただけないでしょうか?
272デフォルトの名無しさん:2011/01/14(金) 18:25:03
273デフォルトの名無しさん:2011/01/15(土) 10:36:39
並行mapないの?
274xfsd:2011/01/24(月) 22:12:44
boostでベクトル*区間行列の計算のプログラムを作りたいのですが、うまく作れません
。教えてくれませんか
275デフォルトの名無しさん:2011/01/24(月) 23:21:30
>>274
まずは作ってみたコードと、うまくいかなかかった結果と、期待している結果とがわかるようにするんだ。
276デフォルトの名無しさん:2011/01/24(月) 23:37:08
STMなんでboostにはいってねーんだよ
いれろよ

おねがいします。
277xfsd:2011/01/25(火) 23:06:59
#include "stdafx.h"
#include <iostream>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/interval.hpp>
#include <boost/numeric/interval/io.hpp>
namespace ub = boost::numeric::ublas;
namespace bn = boost::numeric;using namespace std;

int main()
{
typedef bn::interval<double> xinterval;
typedef ub::vector<double> xvector;
typedef ub::matrix<double> xmatrix;
xinterval a(1,2),b(1,3);
xmatrix c(2,2);
c(0,0) = 1.; c(0,1) = 0.;
c(1,0) = 0.; c(1,1) = 1.;

xvector vec(2);
vec(0) = 2.0;
vec(1) = 0;

std::cout << "行列 * ベクトル = " << prod(c , vec) << std::endl;

system("PAUSE");

return 0;
}
行列*ベクトルはできたのですが、区間行列*ベクトルができません。誰か教えてくれませんか?
278デフォルトの名無しさん:2011/01/26(水) 14:44:54
関係ないけどublasってopenCVみたいに初期化できないの?
Mat M = (Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);
279デフォルトの名無しさん:2011/01/27(木) 07:14:46
>>278
最近のアップデートで初期化メソッドが追加になったはず
280デフォルトの名無しさん:2011/01/30(日) 20:49:03
そうなのか
281デフォルトの名無しさん:2011/01/30(日) 21:04:05
あしたはみそか
282デフォルトの名無しさん:2011/01/30(日) 21:12:54
明日は晦日、今日は三十日。どちらも読みはみそか。
283デフォルトの名無しさん:2011/01/30(日) 21:15:50
さむい
ねむい
284デフォルトの名無しさん:2011/01/31(月) 08:38:03
明日は朔日
285デフォルトの名無しさん:2011/02/04(金) 18:19:57
286デフォルトの名無しさん:2011/02/04(金) 23:15:44
boostに日本人提案のものあるの?
287デフォルトの名無しさん:2011/02/05(土) 03:40:46
サッカーはナガトモが世界のリーグ行ったのに
コンピューターサイエンスは世界のライブラリに名を連ねる事ができないのか
288デフォルトの名無しさん:2011/02/05(土) 03:42:48
progessが採用されるんだから誰でもOKな筈だ
289デフォルトの名無しさん:2011/02/05(土) 03:48:10
>>286 パッチやバグ報告ならいくつかあるみたいだね。
290デフォルトの名無しさん:2011/02/05(土) 17:47:23
>>287
日本って,他の奴の成果をtake,take,and takeで自分の成果は情け無い程度giveするが国技
だからコンピューターサイエンス(IT)でも他の奴の成果をtake,take,and takeし
自分の成果は情け無い程度にgive。
291デフォルトの名無しさん:2011/02/05(土) 18:33:29
boost::any向け総称関数をMLに投げてみたことあるけど、誰も興味無さそうだったので放置してる。
giveした所で誰も反応してくれないからなあ。
292デフォルトの名無しさん:2011/02/05(土) 19:23:39
最低限、反応されるまで声上げ続ける位のガッツがなきゃどうにもならんだろ
キンタマ付いてんのかお前
293デフォルトの名無しさん:2011/02/05(土) 19:25:13
ついてなかったらどうするんだよ
責任取れるのかお前
294デフォルトの名無しさん:2011/02/05(土) 19:32:01
責任とってもいいの?
295デフォルトの名無しさん:2011/02/05(土) 19:32:15
///
296デフォルトの名無しさん:2011/02/05(土) 19:38:33
ここまでテンプレ
297デフォルトの名無しさん:2011/02/05(土) 19:45:59
>>291
あまりにも情け無いgiveでゴミ扱いなんだろ
本人が凄いgiveと思っているだけじゃね
298デフォルトの名無しさん:2011/02/05(土) 19:55:10
アイディアってのは思いついてから使い道が見つかるまで何年かかるかわかんねえ
思いついた奴が生きているうちかどうかもわかんねえ

大勢に知らしめるところまでが、思いついた奴にできることだ
芽が出るにせよ出ないにせよガタガタさわぐのはみっともないだけだ

俺に言わせれば思いつくこと自体に満足できない奴は俗物だ
299デフォルトの名無しさん:2011/02/05(土) 21:39:49
何を思いついたんだ?
300デフォルトの名無しさん:2011/02/05(土) 22:13:47
色々だよ
例えば周波数帯の合わない検波器の使い方とか
「ある処理」を非再帰で片付ける方法とか
301デフォルトの名無しさん:2011/02/05(土) 22:21:40
その思いつきどうboostと関連あるんの?
302デフォルトの名無しさん:2011/02/05(土) 22:56:49
逆に boost と関係ないものって何だ?
303デフォルトの名無しさん:2011/02/06(日) 15:51:56
boostを使わないプログラム
304デフォルトの名無しさん:2011/02/06(日) 15:53:39
まさか、boostを使わないプログラムに、ここはboostで出来るから変えろ!
とかわ言わないよな?
305デフォルトの名無しさん:2011/02/06(日) 16:30:30
そんなのRubyのひとだけだよ
306デフォルトの名無しさん:2011/02/06(日) 17:04:52
> boost と関係ないもの

boost のライセンスと相容れないものは
とりあえず boost と無関係
307デフォルトの名無しさん:2011/02/07(月) 06:24:52
>>298
Haskellのライブラリなんか殆どが何に使えるのかわからん
308デフォルトの名無しさん:2011/02/07(月) 07:00:45
spiritの機能を動的に使う方法ないですか?
組み込み言語のほうで構文決めたいんですが。
309コピペのレビューお願いします:2011/02/07(月) 14:08:05
5年前の長友は怪我で試合出場どころか
観客席で応援として太鼓を叩くだけだった体たらく

今や世界のインテルに移籍して
口だけじゃなく世界一のSBを目指してる


頑張ればお前らだって(精神の)怪我で社会出場どころか
2ちゃんねるでキーボードと情弱叩くだけだった体たらくから
5年後にはBoostにライブラリを採択されるような
世界級プログラマになってるかもだぞ!

早く世界のインテルに移籍して
愚痴だけじゃなく世界一のSEを目指せ!Σd(`・ω・´)
310デフォルトの名無しさん:2011/02/07(月) 14:52:26
BoostやるよりPythonやっといたほうがいいよ
311デフォルトの名無しさん:2011/02/07(月) 15:05:00
BoostとPythonを並べる理由がわからない…

もしかしてBoostのこともPythonのことも一切分かってない馬鹿なら
並べて云々できるってことなのか…
312デフォルトの名無しさん:2011/02/07(月) 15:14:29
Boostと並べたいならDだろ
313デフォルトの名無しさん:2011/02/07(月) 15:15:04
馬鹿なんだろう
ほっとこうぜ
314デフォルトの名無しさん:2011/02/07(月) 16:58:33
>>309
うまくないし何か痛いわ
315デフォルトの名無しさん:2011/02/07(月) 18:18:00
Eclipse CDTでboostのバージョンが上がる度にフォルダ名を変えるのが
面倒臭いので、"Boost"という単純な名前にしてしまった

これだとパッと見バージョンを間違える事があるけどいちいちプロジェクトを
書き換えなくていい
316デフォルトの名無しさん:2011/02/07(月) 18:46:52
チラ裏
317デフォルトの名無しさん:2011/02/08(火) 02:01:41
>>314
あり^^
318デフォルトの名無しさん:2011/02/08(火) 09:15:58
>>312
D はもう終わってる
Boost はまだ始まっていない
319デフォルトの名無しさん:2011/02/09(水) 19:29:01
Boostは始まってるだろ
320デフォルトの名無しさん:2011/02/09(水) 19:38:46
ちゅうか、Dと比べたら、Boostは既に市場に行き渡ってると言っていい状況だよな。
321デフォルトの名無しさん:2011/02/09(水) 20:03:27
全然始まってるじゃんよ。
322デフォルトの名無しさん:2011/02/09(水) 21:05:15
BoostとDを並べる理由がわからない…

もしかしてBoostのこともPythonのことも一切分かってない馬鹿なら
並べて云々できるってことなのか…
323デフォルトの名無しさん:2011/02/09(水) 21:09:25
やる氣のないレス改変だなあ
324デフォルトの名無しさん:2011/02/09(水) 21:33:30
気持ち悪い
325デフォルトの名無しさん:2011/02/10(木) 19:42:54
ンギモッヂイイッ!!!ハッハッハッ……
326デフォルトの名無しさん:2011/02/11(金) 14:50:49
Polygonの活用方法がいまいちよく分からないんだけど
使ってる人がいればどんなふうに使ってるのか教えてくれ
327デフォルトの名無しさん:2011/02/17(木) 13:42:37
なんでPythonのライブラリがあるの?
Pythonはそんなに優遇されてるの?
328デフォルトの名無しさん:2011/02/17(木) 14:28:43
ruby厨乙
329デフォルトの名無しさん:2011/02/17(木) 16:11:31
何でって、書いてくれる人がいるからあるんだろ。
330デフォルトの名無しさん:2011/02/19(土) 21:23:39.09
>>328
誰と闘ってるんだ
331デフォルトの名無しさん:2011/02/20(日) 16:43:59.53
こちらboostン宇宙基地
332デフォルトの名無しさん:2011/02/20(日) 18:49:18.02
multi_index_containerの質問です。

classをデータとして登録してみたのですが、
get<0>()で取得した場合、constメンバ関数しかアクセスできませんでした。

BOOST_FOREACH( const Hoge& h,hoge.get<0>())
{
h.test();
}
constを付けないとコンテナ側のコンパイルエラーとなってしまい、
constを付けると test()がコンパイルエラーとなってしまいます。

multi_index_containerは、const利用が前提なのでしょうか?
それとも、constを外して利用する手段は存在しますか?
一応、get<0>()以外にそういった用途の物がありそうなのですが、
見つけられなかった・・。
333デフォルトの名無しさん:2011/02/20(日) 19:13:14.44
Boost.MultiIndex の実装は、std::set に近いと考えればいい。
自由に要素を書き換えられたら要素のソート状態が崩れるだろ。
334デフォルトの名無しさん:2011/02/20(日) 19:15:48.26
やはりそうですか、
すっきりしました、ありがとうございます。
335デフォルトの名無しさん:2011/02/21(月) 21:01:12.20
regexの一文字マッチのドットを
日本語の一文字に対応させることってできます?
336デフォルトの名無しさん:2011/02/21(月) 21:10:57.75
wregex使えばいいよ
337デフォルトの名無しさん:2011/02/21(月) 21:23:14.07
c++の列挙体をboost.python使ってpythonから扱いたいんだがどうすればいいんだ?
338337:2011/02/21(月) 21:51:13.44
ごめん自決した
339デフォルトの名無しさん:2011/02/21(月) 21:53:21.41
マジか。漢らしいな
340デフォルトの名無しさん:2011/02/21(月) 22:13:21.78
スレ違い。冥府板へ

【自刃】一番すごい自決した奴が優勝【陰腹】 その6
ttp://greek.2ch.net/test/read.cgi/hades/1293804606/
避難所
ttp://kamome.2ch.net/test/read.cgi/river/1293804606/
341デフォルトの名無しさん:2011/02/22(火) 15:49:23.13
342デフォルトの名無しさん:2011/02/23(水) 13:57:57.13
>>336
ttp://www.boost.org/doc/libs/1_46_0/libs/regex/doc/html/index.html
wregexについての記述が見当たらないんですが、
この中にありますか?
なんか探しても見つかりません…
343デフォルトの名無しさん:2011/02/23(水) 14:07:55.35
344デフォルトの名無しさん:2011/02/23(水) 14:15:50.98
345デフォルトの名無しさん:2011/02/23(水) 15:37:32.53
>>343,344
ありがとうございます。
346デフォルトの名無しさん:2011/02/23(水) 19:17:49.15
Boost.lclなるものが加わったみたいでなんじゃこりゃと思ったらIclかよ
フォントによっては区別つかねーよ
347デフォルトの名無しさん:2011/02/23(水) 19:29:12.48
Boost のドキュメントのフォントだとまじで区別つかない。
348デフォルトの名無しさん:2011/02/23(水) 19:47:02.23
Iclって何するんだ?
名前からすると間隔つーか値の範囲を持ったオブジェクトあたり?
349デフォルトの名無しさん:2011/02/23(水) 22:29:37.03
時間間隔をキーにしたコンテナじゃないか?
350デフォルトの名無しさん:2011/02/24(木) 16:53:06.62
boost.Intervalじゃ[1,3)みたいな一つの開区間しか表せないけど
数直線状の任意の部分を表すには[1,3)と[3,5)と[7,9)みたいに複数の区間がいるから
それを扱うものなんじゃないか?
351デフォルトの名無しさん:2011/02/24(木) 16:53:49.11
ごめん、×開区間→○区間な
352デフォルトの名無しさん:2011/02/25(金) 06:48:04.25
>>350
それを実現するのが interval_set
interval_set 間の集合演算もできる。
interval_map というのもあってこっちは各区間に値を付けられる。
{[1,3]->1} に [2,4]->1 を追加すると {[1,2)->1,[2,3]->2,(3,4]->1}になる、多分。
353デフォルトの名無しさん:2011/02/25(金) 20:22:58.92
boost::wregex r(L"(.)");
boost::wsmatch m;
wstring s = L"ほげ";

boost::regex_search(s, m, r);

これで、
sub_match.hpp(429)
: error C2679: 二項演算子 '<<' : 型 'std::basic_string<_Elem,_Traits,_Ax>' の
右オペランドを扱う演算子が見つかりません (または変換できません)。
とかいうエラーがでるんですがなんなんでしょう?
354デフォルトの名無しさん:2011/02/25(金) 22:44:46.42
>>353
boost_145@MSVC2010
エラー無し

boostのバグじゃね?
あいつらワイド文字気分で作って大してテストもしてねぇから
355デフォルトの名無しさん:2011/02/25(金) 23:01:29.37
vs2010ならstd::wregexの方使ってみればいいよ
356デフォルトの名無しさん:2011/02/28(月) 16:34:27.96
質問です。
以下ページにあるC++0x用LINQメソッドを
http://smellegantcode.wordpress.com/2009/01/26/linq-to-c0x/
使用した結果をBOOST_FOREACHに入れて回そうとしたのですが、
コンパイルエラーとなってしまいます。
std::vector<int> array = { 1, 2, 3, 4, 5 };
auto result = from(array).where([] (const int & n) { return (n % 2) == 0; });
auto itr = result.begin(); // 通る
BOOST_FOREACH (auto n, result) { } // コンパイルエラー
http://ideone.com/Iu133 (boostの環境が作れなかったのでソース閲覧用に)
iteratorのBOOST_FOREACHに対する要件が足りていないのかと思い、
iterator_adaptorやiterator_facadeを
const_iteratorに継承させたりしてみたのですが、
私がこれらをあまり理解出来ていないこともあってか
最終的にコンパイルエラーを取り除くことが出来ませんでした。
(あとtypedef const_iterator iterator;も追加してみました)
どなたか解決のヒントをいただけませんでしょうか?
357デフォルトの名無しさん:2011/02/28(月) 17:24:43.30
>>307
例えば?
358デフォルトの名無しさん:2011/03/01(火) 02:11:17.74
>>356 エラーメッセージは?
359デフォルトの名無しさん:2011/03/01(火) 09:41:42.85
エラーメッセージ書かない時点で
答えてもらう気ないだろ
360デフォルトの名無しさん:2011/03/01(火) 09:49:27.12
boost使用時のコンパイラエラーメッセージって役に立つか?
立たないことは無いけど、異様に長いし、エラーをピンポイントで指摘してないし。
結局、行番号を頼りに修正することが多い。
361356:2011/03/01(火) 10:40:42.97
プロジェクトパス\project\boost_1_45_0/boost/mpl/eval_if.hpp:
In instantiation of 'boost::mpl::eval_if<mpl_::bool_<false>,
boost::range_const_iterator<filter<int, int, filter<int, int, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >,
pass_thru<int>, always_true<int> >::const_iterator, pass_thru<int>, main()::<lambda(const int&)> > >,
boost::range_mutable_iterator<filter<int, int, filter<int, int, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >,
pass_thru<int>, always_true<int> >::const_iterator, pass_thru<int>, main()::<lambda(const int&)> > > >':
プロジェクトパス\project\boost_1_45_0/boost/foreach.hpp:355:13:
instantiated from 'boost::foreach_detail_::foreach_iterator<filter<int, int, filter<int, int, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >,
pass_thru<int>, always_true<int> >::const_iterator, pass_thru<int>, main()::<lambda(const int&)> >, mpl_::bool_<false> >'
プロジェクトパス\project\linq.cpp:150:2:
instantiated from here
プロジェクトパス\project\boost_1_45_0/boost/mpl/eval_if.hpp:38:31:
error: no type named 'type' in 'struct boost::mpl::eval_if<mpl_::bool_<false>,
boost::range_const_iterator<filter<int, int, filter<int, int, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >,
pass_thru<int>, always_true<int> >::const_iterator, pass_thru<int>, main()::<lambda(const int&)> > >,
boost::range_mutable_iterator<filter<int, int, filter<int, int, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >,
pass_thru<int>, always_true<int> >::const_iterator, pass_thru<int>, main()::<lambda(const int&)> > > >::f_'
362356:2011/03/01(火) 11:12:03.69
失礼しました。上記のがideoneのソースそのままでのコンパイルエラーです。
イテレータの解釈辺りでtypeのtypedefが無いということのようなので、
イテレータがforeachの走査対象に足る要件を満たしていないのかなと判断しました。
iterator_adaptors系を使えば良い感じに揃えてくれるのかな?と思ったのですが、
それらを用いるコードが私の理解ではきちんと書けていない状況です。
363デフォルトの名無しさん:2011/03/01(火) 13:34:43.76
日本人の貢献者ねえ・・・

cpanオーサーに日本人増えてきたらこんな事件おきたり
http://www.yabbforum.com/community/YaBB.pl?num=1286567562
phpが「流行」したりする謎を知らないのかな
364デフォルトの名無しさん:2011/03/01(火) 17:18:11.86
Boost.Rangeを使ってみているのですが、
STLコンテナのinsert等にrangeを渡したりは出来ないんでしょうか?
begin/endを呼ぶためだけに変数に格納するのが何かおかしく感じます。
365デフォルトの名無しさん:2011/03/01(火) 21:17:41.84
>362
>イテレータの解釈辺りでtypeのtypedefが無いということのようなので、
>イテレータがforeachの走査対象に足る要件を満たしていないのかなと判断しました。
多分違う。エラーが出てるのは mpl::eval_if のところなのでここでエラーの出てる type は
mpl のメタ関数としての type だ。
あとエラーの出てる行は古いコンパイラ用の workaround のところで VC++ .NET 2002 以前を使ってる場合に
当たるんだけど C++0x 向けでラムダ式とか使ってるみたいだしなんかどっかおかしそう。
366デフォルトの名無しさん:2011/03/01(火) 21:25:53.46
>364
コンテナにメンバ関数を追加するわけにはいかにので別途アルゴリズムが用意されてる。
http://www.boost.org/doc/libs/1_46_0/libs/range/doc/html/range/reference/algorithms/new.html
367356:2011/03/02(水) 03:39:10.88
>>365
なるほと・・、私の見当違いだったんですね。
マクロシンボルでの分岐をトレースして原因を調べてみたいと思います。
おかげで一歩前へ進めます。どうもありがとうございました。
368364:2011/03/02(水) 04:08:56.10
>>366
おぉぉありがとうございます!
これでbegin/endのタイプ量が激減してソース横幅も縮みそうです。
やはりきちんと用意されているものなのですね。

ただメンバ関数とは書く順番が変わってしまうのですか・・
黒魔術的な何かで何とかされているかと思っていたので少し残念です。
C++にも拡張メソッドが欲しくなりますね。
369デフォルトの名無しさん:2011/03/02(水) 18:19:07.50
どうも1.46.1が出るっぽい
なんぞ不具合でもあったのかしら
370デフォルトの名無しさん:2011/03/03(木) 00:50:04.85
>>356
そこのconst_iteratorをstd::iterator<std::input_iterator_tag, TElemTo const>から派生させたら、
BOOST_FOREACH (auto n, boost::make_iterator_range(result.begin(), result.end()))
がコンパイル通るようになった。
371デフォルトの名無しさん:2011/03/03(木) 02:37:10.73
boost/regexで
マッチする部分をすべて取り出すことって出来ます?

boost::regex r("a[^a]+b");
boost:smatch m;
string s = "ahb anb atb";

ならahb anb atbそれぞれを取り出したいのですが。
372デフォルトの名無しさん:2011/03/03(木) 02:49:02.95
std::string::const_itarator itbegin = s.cbegin();
std::string::const_itarator itend = s.cend();
while (std::regex_search(itbegin, itend, r, m) {

itbegin = m[0].second;
}
373デフォルトの名無しさん:2011/03/03(木) 02:53:01.08
>>372
ありがとうございます。
374デフォルトの名無しさん:2011/03/03(木) 12:25:13.55
以前に
VisualStudio
の環境でダウンロードしただけで動くものをまとめてファイルにアップしてた人がいたけど
誰かurl知りませんか?

便利なのにテンプレに載ってないのはなんでです?
375デフォルトの名無しさん:2011/03/03(木) 12:28:20.53
過去ログでみつけた
http://boooster.x0.to/
376デフォルトの名無しさん:2011/03/03(木) 15:31:43.47
前と違って、今は公式でVisualStudio用のバイナリが配付されてるじゃん
そういえばどっかの企業もバイナリ配布してたけどやめちゃったな
377デフォルトの名無しさん:2011/03/03(木) 17:21:36.18
>>374,375
それsvnの野良ビルドだよね確か。
svn最新なので万人向けじゃないし、svn追っかける人なら自分でビルドするし、特に需要がなかったんじゃない?
あと更新される度にスパムのようにURL貼ってたのでウザがられてた。
テンプレ申請なりサイトでRSS配信なりすればよかったのにね。
378デフォルトの名無しさん:2011/03/03(木) 17:55:36.54
bjamでビルド簡単になったんだからboostぐらいビルドしようぜ・・・
boost使う=開発環境あるわけだし。
ビルドに時間掛かるのは別w
379デフォルトの名無しさん:2011/03/04(金) 10:17:25.38
Windowsは知らないけどLinuxでBoostビルドすると風呂入って一眠りしてコーヒー飲むぐらい時間かかるんだけど・・・
380デフォルトの名無しさん:2011/03/04(金) 10:32:46.31
>>379
それってPCの性能じゃなくてOSの差なんですか?
381デフォルトの名無しさん:2011/03/04(金) 11:54:38.77
>>379
出涸らし風味な話題だけれど・・・
C2Q 6550/RAM 4GB/XP SP3(x86)/7200rpm HDDの環境で時間は忘れたけど結構掛かったな。
あまりの遅さにSSD買ってVSとboostのソースを置いてビルドしたら爆速で終わった。
仕事なら時間単価で計算すると1ヶ月ぐらいで元取れるしなw
382デフォルトの名無しさん:2011/03/04(金) 12:44:49.19
うちの場合wave, mpi, serialization, program_options辺りいらないのでビルドから外す。
383デフォルトの名無しさん:2011/03/04(金) 12:45:41.93
CPU性能ももちろん大事だけど、ストレージのランダムアクセス性能が一番影響しそうだね
数GB読み書きするでしょ
384デフォルトの名無しさん:2011/03/04(金) 13:39:59.80
その用途ならSSDよりメモリ馬鹿積みでRAMDISKの方がよさそう
385デフォルトの名無しさん:2011/03/04(金) 15:31:35.14
debugはビルドしてない
386379:2011/03/04(金) 16:00:59.64
俺の環境がシングルコアでへぼいというのは百も承知だが
・静的ライブラリ
・静的ライブラリ(デバッグ情報付き)
・静的ライブラリ(STLportのデバッグモードを使ったデバッグ情報付き)
・動的ライブラリ
・動的ライブラリ(デバッグ情報付き)
・動的ライブラリ(STLportのデバッグモードを使ったデバッグ情報付き)
を全部のライブラリに噛ましてやると俺のマシンは悲鳴を上げるんだぜ
情けないよな
387デフォルトの名無しさん:2011/03/04(金) 16:26:40.23
要らない情報だよねそれ
388デフォルトの名無しさん:2011/03/04(金) 16:48:16.20
>>387
つ[strip --strip-all]
389デフォルトの名無しさん:2011/03/04(金) 17:52:40.76
>>387
要らないレスすんなよ
390デフォルトの名無しさん:2011/03/04(金) 18:23:39.74
こうしてゴミレスがまたひとつ
391デフォルトの名無しさん:2011/03/04(金) 18:30:11.33
これが後世に残るゴミレススパイラルの始まりであった
392デフォルトの名無しさん:2011/03/04(金) 18:55:41.45
-jxオプションを付けてやると並列ビルドされるのでかなり高速化されるよ
並列数はCPUのコア数とクロックに応じて程々に

例:8並列の場合
bjam -j8 (以下いつものオプション色々)
393デフォルトの名無しさん:2011/03/04(金) 19:05:54.26
使うライブラリだけビルドすればいいだろ
394デフォルトの名無しさん:2011/03/04(金) 19:12:49.58
やりかた知らないんだと思うよ
395デフォルトの名無しさん:2011/03/04(金) 19:48:33.59
そうやって「俺がいらないものはいらない」で排除ばっかしてるから
ゴミレスしか残らなくなるんだろ
396デフォルトの名無しさん:2011/03/04(金) 20:14:20.85
とはいえいきなり自分の手際の悪さを晒されましても
ゴミレス以外にどうリアクションをとればいいのやら
397デフォルトの名無しさん:2011/03/05(土) 02:25:40.00
並列ビルドしちゃいけないわけじゃあるまいに
398デフォルトの名無しさん:2011/03/05(土) 09:06:33.90
セキュリティソフトのリアルタイム検索切ってみるとか?
399デフォルトの名無しさん:2011/03/05(土) 21:17:22.92
ゴミレスしかねぇ
400デフォルトの名無しさん:2011/03/06(日) 08:50:33.24
>>396
馬鹿だなお前w
ゴミレスしなきゃいいじゃん
401デフォルトの名無しさん:2011/03/06(日) 10:17:19.96
まさにゴミレース
402デフォルトの名無しさん:2011/03/06(日) 13:56:54.46
403デフォルトの名無しさん:2011/03/06(日) 19:55:44.16
ここ数年でこのスレの質が落ちまくってる
404デフォルトの名無しさん:2011/03/06(日) 21:01:09.87
twitterみたいなサービス使ってると、2chはログ検索でしか使わなくなる人が多いのでは。
405デフォルトの名無しさん:2011/03/06(日) 21:11:49.41
やっぱりTwitterの影響は大きいのかな。
406デフォルトの名無しさん:2011/03/08(火) 20:54:12.50
boostのrandomで0以上1未満じゃなくて、
0より大きく1未満の乱数を作れませんか?
407デフォルトの名無しさん:2011/03/08(火) 21:17:48.07
0が出たときだけもう一回まわせば良いんでね?
408デフォルトの名無しさん:2011/03/09(水) 12:53:47.39
数式クラスとかってありませんか
R言語並とはいいませんが、式の評価とか代入とか微積分とかあれば
409デフォルトの名無しさん:2011/03/09(水) 13:05:17.96
>>408
Rを呼び出した方が早くない?
410デフォルトの名無しさん:2011/03/10(木) 09:35:51.00
boost::python で sci.py 呼ぶ
411デフォルトの名無しさん:2011/03/10(木) 15:10:55.28
boost.pythonからrpyでR呼ぶ
412デフォルトの名無しさん:2011/03/10(木) 15:16:10.88
ウェブブラウザがjavascriptでなくてc++を直に実行してくれるの出るみたいだけど
boostも使えるのかな
413デフォルトの名無しさん:2011/03/10(木) 15:57:19.46
414デフォルトの名無しさん:2011/03/10(木) 16:28:00.78
boost.FC++
って開発停止なの?
415デフォルトの名無しさん:2011/03/11(金) 12:12:04.64
boost protoで無限数列作るの無理なの?
416デフォルトの名無しさん:2011/03/13(日) 06:29:13.40
1.46.1
Boost C++ Libraries
http://www.boost.org/
417デフォルトの名無しさん:2011/03/22(火) 19:20:20.51
Macでboost扱う場合ってVisualStudioに相当するものないの?
418デフォルトの名無しさん:2011/03/22(火) 20:00:51.24
XCodeってのがそうなんじゃないの
419福盛俊明:2011/03/23(水) 23:52:34.77
アハ〜♪”
420デフォルトの名無しさん:2011/03/28(月) 12:47:40.42
xcodeは糞だってじっちゃがいってた
421デフォルトの名無しさん:2011/03/29(火) 19:45:09.25
>>820

は?
お前ちょっとおかしいんじゃねーの?

そんな事言ったら、男はスカート履いたり口紅塗ったりしたら
いけないってこと???
422デフォルトの名無しさん:2011/03/29(火) 20:14:35.77
どこの誤爆だよ
423デフォルトの名無しさん:2011/03/30(水) 12:55:32.68
いいけど近くに寄るな
424デフォルトの名無しさん:2011/03/30(水) 17:23:19.29
すごい美人になるなら、許す。
425デフォルトの名無しさん:2011/04/02(土) 06:36:38.55
ここ死んでるんでhttp://www.boostpro.com/download/

ここみつけた。http://boost.teeks99.com/
426デフォルトの名無しさん:2011/04/02(土) 06:42:18.95
死んでないぞ?
427デフォルトの名無しさん:2011/04/02(土) 06:54:32.94
500 Internal Server Error
428デフォルトの名無しさん:2011/04/02(土) 06:55:29.53
429 ◆LLLLLLLLL. :2011/04/03(日) 08:55:02.65
| ̄:/ : : /: : : : : : : :i: : : i: :\ : :\    \
|: / : : : / : : : : :.i: : : : |: : : :|: : : |: : : i     '
: :|: : : : |: : i: : : :|: : : /i|: : :|:| : : :|: : : |     |
: :|: : : : |: :.|:斗 十‐/ i|: :∧-‐ト|: : : |     |
: :|: : : : |イ|: :|:/ |:/   |:/ |ハ: : |: : : |  \_,ノ
: :|: : : : | レヤ示ト     rテv|:./|: : : :|
ヽ|: : : : |/{:::::::i }     トイ レ: :|/|/   関東地方 
( |: : : : 代c::ノソ     レリ |: : : : |       東北地方 北海道地方
.〈.|: : : : |x`¨       、¨x.|: : : i:|    にいる
\|i: : : :|        ,   /|: : : i:|      すべての 愛すべき 国民へ 告ぐ
∨リ\: :iト 、      `´ ィ  |: : /|リ      
‐┴―\|- 〈 >rァ 爪|V  |/
:::::::::::::::::::::::ヽ \ リ
::::::::::::::::::::::::__\
:::::::::::::::/ ::r――‐へ      rっr‐-、_
:::::::::/ :://      ∧. | ̄ ̄ ̄| | | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄|..
:::/ ::/ /          ヽ|.    L|_|_ト'           |
/ ::::/  /         \   ただちに 逃げろ    |
. :::/ |/           |                 |
430デフォルトの名無しさん:2011/04/06(水) 15:56:15.32
今boostを利用してシリアライズをしようと思っているのですが
#include <boost/serialization/vector.hpp>
#include <boost/serialization/deque.hpp>
などをインクルードしようとすると
>LINK : fatal error LNK1104: ファイル 'libboost_serialization-vc100-mt-gd-1_46_1.lib' を開くことができません。
というエラーが出てしまうのです。他の
#include <boost/serialization/serialization.hpp>
#include <boost/serialization/string.hpp>
は問題なく通るのですが・・・いったい何が原因でしょうか?
431デフォルトの名無しさん:2011/04/06(水) 16:21:12.20
事前にboostビルドしておけよ
432デフォルトの名無しさん:2011/04/06(水) 18:36:59.44
VC++ならビルド済みboostライブラリが自動インストールできると書かれていたのでそれを利用したのですが・・・
433デフォルトの名無しさん:2011/04/06(水) 18:47:36.90
libboost_serialization-vc100-mt-gd-1_46_1.libが存在する見てこい
なかったら自分でビルドしろ
434デフォルトの名無しさん:2011/04/06(水) 19:07:30.14
libboost_serialization-vc100-mt-gd-1_46_1.libはlibフォルダにちゃんと存在するようです
435デフォルトの名無しさん:2011/04/06(水) 19:10:14.87
パス通ってないだけじゃねーか
436デフォルトの名無しさん:2011/04/06(水) 19:22:20.63
VC++のインクルードファイルにC:\Program Files\boost\boost_1_46_1を設定するだけではだめなのでしょうか?
437デフォルトの名無しさん:2011/04/06(水) 19:24:00.98
インクルードパスだけじゃなくてライブラリファイルも指定しろ
ライブラリパスの方は~.libが置いてるフォルダな
438デフォルトの名無しさん:2011/04/06(水) 19:43:19.64
インクルードパス通ってないのになんでインクルード出来てないんだ?
それともインクルードパスは通したがライブラリパスは通し忘れた or 存在を知らないってやつか?
439デフォルトの名無しさん:2011/04/06(水) 19:44:31.59
ライブラリディレクトリにlibが入っているファイルを追加しましたがエラーが消えないですね・・・
440デフォルトの名無しさん:2011/04/06(水) 19:54:50.84
libが入っている「フォルダ」を指定してみて
441デフォルトの名無しさん:2011/04/06(水) 20:44:26.30
失礼、ファイルとフォルダを間違えてしまいました

おお、上手くいきました!ありがとうございました

なんか「std::streamsize' から 'size_t' への変換です。データが失われる可能性があります。」
みたいな警告が出てますけどこれは仕様なんですかね
442デフォルトの名無しさん:2011/04/06(水) 20:46:17.09
あ、これはboost/archive/binary_oarchive.hppの警告だったようです。申し訳ない
443デフォルトの名無しさん:2011/04/08(金) 03:47:53.82
誘導されてきました。
http://hibari.2ch.net/test/read.cgi/tech/1297142195/589
お願いします。
444デフォルトの名無しさん:2011/04/08(金) 03:51:32.81
書き忘れましたが、そのスレッドで指摘されているBOOST_PP_EQUALに数値を入れても解決されません。
コンパイラはVS2008を使っています
445デフォルトの名無しさん:2011/04/08(金) 04:01:00.43
すみません。
#include <boost/preprocessor/comparison/equal.hpp>
をしたら自己解決しました。
446デフォルトの名無しさん:2011/04/16(土) 13:27:19.01
すみません
serializeの侵入型 非侵入型って英語でなんて言いますか?
447デフォルトの名無しさん:2011/04/16(土) 15:39:30.60
intrusive/non-intrusive
448デフォルトの名無しさん:2011/04/17(日) 04:24:44.07
ありがとうございます!
449デフォルトの名無しさん:2011/04/21(木) 13:19:37.66
iphoneで動かないのなんてありました?
mm経由でなんでも使えるっぽいですが
450デフォルトの名無しさん:2011/04/21(木) 13:31:12.82
https://svn.boost.org/trac/boost/ticket/5010
微妙にダメなのかな?
451デフォルトの名無しさん:2011/04/21(木) 15:24:04.84
BOOST_AUTO(xx , boost::fusion::list<double,int,double>(1.12, 3 ,3.4) );

エラーになる
だめなのかな
452デフォルトの名無しさん:2011/04/22(金) 10:52:11.38
fusion便利だね
CG関連のライブラリでしか使ってるのみたことないけど
accumulaterも使ってるの?
453デフォルトの名無しさん:2011/04/22(金) 21:08:36.95
>>452
accumulators は知らんけど Spirit がばりばり使ってる。
454デフォルトの名無しさん:2011/04/25(月) 15:40:13.45
accumulatorに静的に代入した値って
コンパイルタイムで計算される?
455デフォルトの名無しさん:2011/04/25(月) 21:15:57.16
void funcRef(shared_ptr<Hoge>& ref = shared_ptr<Hoge>()) {}
デフォルト引数をヌルポインタにしたい場合、これって問題ないですか?
456デフォルトの名無しさん:2011/04/26(火) 00:21:13.07
>>455
ダメですな。
http://codepad.org/ivr7NQAk

これならおk。
http://codepad.org/6cyqwPkA
457デフォルトの名無しさん:2011/04/26(火) 04:57:15.86
const shared_ptr<Hoge>& ref = shared_ptr<Hoge>()
458デフォルトの名無しさん:2011/04/26(火) 08:08:06.84
>>456
>>457
ありがとうございます。
459デフォルトの名無しさん:2011/05/01(日) 09:26:30.16
なんでconst要るのー?
460デフォルトの名無しさん:2011/05/01(日) 09:32:52.23
>>459
funcRef() の中でデフォルト指定された ref に値を設定することには意味が無いから、
そういうコードは書けないように言語のルールとして定められているのです。
461デフォルトの名無しさん:2011/05/02(月) 03:06:37.55
boost.pythonを使いたいのですがセットアップ法が分かりません
環境はWindowsとGCCです
bootstrap.batを実行して、project-config.jamの内容を
using gcc : 4.6.0 ;
using python : 3.2 ;
libraries = --with-python ;
と変更してbjamを実行しましたが何かエラー(failing)が出てstage\libに何も生成されません
どなたか教えてください
462461:2011/05/02(月) 03:10:54.93
二箇所あるエラー内容は次のようになっています
gcc.compile.c++ bin.v2\libs\python\build\gcc-mingw-4.6.0\release\link-static\threading-multi\converter\builtin_converters.o
libs\python\src\converter\builtin_converters.cpp: In static member function 'static std::wstring boost::python::converter::{anonymous}::wstring_rvalue_from_python::extract(PyObject*)':
libs\python\src\converter\builtin_converters.cpp:436:32: error: cannot convert 'PyUnicodeObject*' to 'PyObject*' for argument '1' to 'Py_ssize_t PyUnicodeUCS2_AsWideChar(PyObject*, wchar_t*, Py_ssize_t)'

gcc.compile.c++ bin.v2\libs\python\build\gcc-mingw-4.6.0\debug\link-static\threading-multi\converter\builtin_converters.o
libs\python\src\converter\builtin_converters.cpp: In static member function 'static std::wstring boost::python::converter::{anonymous}::wstring_rvalue_from_python::extract(PyObject*)':
libs\python\src\converter\builtin_converters.cpp:436:32: error: cannot convert 'PyUnicodeObject*' to 'PyObject*' for argument '1' to 'Py_ssize_t PyUnicodeUCS2_AsWideChar(PyObject*, wchar_t*, Py_ssize_t)'
463デフォルトの名無しさん:2011/05/06(金) 00:09:52.31
Adobe って Boost使ってたんだな
俺も勉強しようかな
464デフォルトの名無しさん:2011/05/06(金) 09:18:56.65
他の人と同じ道具使いたがる男の人って・・・
465デフォルトの名無しさん:2011/05/06(金) 16:05:30.62
協調性高そうでいいよね
466デフォルトの名無しさん:2011/05/06(金) 16:19:08.01
ワロタ
467デフォルトの名無しさん:2011/05/06(金) 19:16:48.94
Boostってなんで
オブジェクト.メンバ関数()
じゃなくて
関数(オブジェクト)型が多いの?
468デフォルトの名無しさん:2011/05/06(金) 19:49:46.40
性的に解決できるようにじゃない
469デフォルトの名無しさん:2011/05/06(金) 20:30:45.77
性的にねえ
470デフォルトの名無しさん:2011/05/06(金) 21:12:51.90
オブジェクトが対応するメンバ関数を持っていなくても
フリー関数ならメンバ関数がなくても「デフォルト実装」にフォールバックできる。
後から専用の処理を追加・削除しても呼び出し側はソースを編集しなくてもいい。
引数の暗黙の変換を利用することもできる。
組み込み型に対しても同じ書式を適用できる。
と色々メリットがある。
471デフォルトの名無しさん:2011/05/06(金) 21:44:27.93
public操作だけで済むなら、カプセル化の観点からも
性的外出しユーティリティが良いってメイヤーズおじちゃんがゆってた
472デフォルトの名無しさん:2011/05/06(金) 21:44:32.30
あり^^
473デフォルトの名無しさん:2011/05/07(土) 01:37:20.43
フリー関数でもfriend使えばprivateメンバにアクセスできるしね。
実はメンバ関数は要らない子のような気がしてきた。
474デフォルトの名無しさん:2011/05/07(土) 04:20:52.49
ハーブ・サッターも非メンバ関数を勧めてるな
475デフォルトの名無しさん:2011/05/07(土) 05:25:58.44
メンバ関数ちゃんを仲間外れのするのはやめろよー
476デフォルトの名無しさん:2011/05/07(土) 13:43:02.91
プログラミング言語C++第3版でも、メンバ関数はできる限り
privateにすべし、って話があるな
477デフォルトの名無しさん:2011/05/07(土) 15:34:37.82
もはやなんのためのOOPかわからんな
478デフォルトの名無しさん:2011/05/08(日) 01:20:12.57
構造化のために決まってんだろ
479デフォルトの名無しさん:2011/05/08(日) 22:48:51.05
メソッドを全部privateにしたらどこからアクセスするん?
480デフォルトの名無しさん:2011/05/09(月) 16:14:04.76
>>479
インターフェースはprivateにしないとおもうけどなあ。
>>477
継承はOOPの本質じゃないんじゃないかな?
ポリモがどうしても必要なとき意外使うなって事だと思うんだけど。
481デフォルトの名無しさん:2011/05/14(土) 01:41:27.26
こんにちわ。
質問していいですか?
>>24で書いてあるような、
「この機能を使うためにはこのライブラリをリンクする必要があるよ。」
みたいな情報ってどこに書いてありますか?
公式のThreadのドキュメントみてもそれっぽいの無かったですよ。
482デフォルトの名無しさん:2011/05/14(土) 16:10:21.87
俺は英文で見かけたよ。どこだか忘れたが。
dll名でググってみれば?
483デフォルトの名無しさん:2011/05/14(土) 20:39:49.15
Boost1.46.1ちゃんのRegexをSTLPortでBuild(Linux)するとエラー吐いちゃうけどどうしたらいいの?
484デフォルトの名無しさん:2011/05/14(土) 22:24:45.89
>>482
個人で運営なさっている解説サイトとか、メーリング
リスト等には書いてあるんですけど、もう少しオフィ
シャルな情報が欲しいじゃ無いですか。

そう考えて公式サイトを読んでいたんですけど、私の
拙い英語力と集中力じゃさっぱりでした。
485デフォルトの名無しさん:2011/05/14(土) 22:41:30.83
Getting Started の Library Naming 書いてあるだろう
486デフォルトの名無しさん:2011/05/14(土) 22:58:08.96
>>485
ありました!有り難うございます!「6.3 Library Naming」にありましたよ!!

Getting Startの最初のページの右下のNext:の部分を見逃してました。
命名規約からライブラリのファイル名を導き出してたんですね。

jamfaileのコメントとかを必死に翻訳していた自分が情けないです。
有難うございました。
487デフォルトの名無しさん:2011/05/15(日) 09:11:00.23
Boost Graphに巡回セールスマン問題を解ける
アルゴリズムがあったら名前を教えて欲しい
488デフォルトの名無しさん:2011/05/15(日) 09:44:19.53
>487
近似解で良ければ metric_tsp_approx
489デフォルトの名無しさん:2011/05/15(日) 09:45:08.77
>>488
ありがと!
490デフォルトの名無しさん:2011/05/20(金) 06:15:31.08
>>480
〉継承はOOPの本質じゃないんじゃないかな?

:(;゙゚'ω゚'):マジで……?
491デフォルトの名無しさん:2011/05/20(金) 10:54:00.91
http://ja.wikipedia.org/wiki/オブジェクト指向#オブジェクト指向プログラミングの構成要件
情報隠蔽 - これは古典的な可視性の定義である。(?)

*旧来の多くのオブジェクト指向言語が備えている性質
継承 - クラスベースのオブジェクト指向に固有の概念である。
多態性 - プロトタイプベースのオブジェクト指向の場合では関係がない概念とされる。
動的束縛 - これはオブジェクト指向の本質的な概念ではあるが、実行時性能に制約が生じる為、この特性を備えていないオブジェクト指向言語もある。

だと。
492デフォルトの名無しさん:2011/05/20(金) 12:02:46.37
で、C++でクラスベースなBoostだと何がどうだと?
493デフォルトの名無しさん:2011/05/20(金) 12:12:29.26
>>490
480ではないが、継承がやってることといえば
polymorphismの実装
基底のコードの流用
だけだからな
これらがそれぞれ別の手段で実現できれば継承はなくてもいいと思う


と俺が思ってるだけで一般的には継承はOOPの重要な要素だけどね
494デフォルトの名無しさん:2011/05/20(金) 13:39:21.05
データとアルゴリズムの論理的結合があればOOPと言える。
「動的な」結合が必要かどうかは言語によるのではないかと思う。
495デフォルトの名無しさん:2011/05/20(金) 14:24:28.46
そうだよなー。

それぞれアトミックな概念かもよく分からずに、仮想関数は静的に型付けされた動的束縛だから、仮想関数や抽象(インターフェース)クラスはC++のOOPの本質のひとつじゃね?って感じで深みにハマって結局訳わかめになる。
496デフォルトの名無しさん:2011/05/20(金) 15:36:30.29
Data + Algorithm = Programと言えばニクラウス・ヴィルトだが、要はオブジェクトとは
データとアルゴリズムのまとまった単位、即ち一つの完結した部分プログラムであって、
それの寄せ集めが全体としてのプログラムであるという観点および方法論のことを
オブジェクト指向と呼んでいるのだと思う。
それとは別にストラウストラップがカプセル化・継承・多態性をC++言語による
オブジェクト指向サポートの基本要素としたのは一つレイヤーの上がる話だ。

// ちょっとBoostとは関係ない話になったが
497デフォルトの名無しさん:2011/05/21(土) 04:37:29.17
複数人で開発するようになると、
継承はコードが読みづらくなるから避けてほしい。
498デフォルトの名無しさん:2011/05/21(土) 04:37:53.91
IF継承は別ね。
499デフォルトの名無しさん:2011/05/21(土) 09:59:29.67
クラス構成が仕様で決まってないってことか
問題はむしろそっちだな
500デフォルトの名無しさん:2011/06/02(木) 17:39:21.54
boostのtrunk面白いなぁ
bjamに--without-mpi付けてたのにmpiのライブラリできた
501デフォルトの名無しさん:2011/06/02(木) 18:13:44.93
もしかして:Jamfileのバグ
502デフォルトの名無しさん:2011/06/03(金) 21:52:25.68
shared_ptrつかいまくりのプログラムで問題が無いか調べるにはどうしたらいいですか?
プログラム終了時に例外とメモリリークでなければOK?
503デフォルトの名無しさん:2011/06/04(土) 00:16:10.77
終了時に全部開放されてるか調べる。
終了順に依存関係があるものは設計で対応してあるか確認する。

こんなもんじゃね。楽するためのものだから、判ってて使ってるなら気にしなくていいとおもうが。
心配なら、全部resetしたらw
504デフォルトの名無しさん:2011/06/04(土) 18:26:55.96
>>503
ありがとうございます
505デフォルトの名無しさん:2011/06/07(火) 19:04:36.62
boost::shared_ptrのデリーターを一旦取り出して開放時の処理を追加してまた元に戻す、みたいな事したいんだけど出来ますか?

shared_ptr<Hoge> hoge;
HogeRegistry hogeReg;

hogeReg.insert(hoge.get()); // ライブラリの都合上生ポインタしか登録できない。ので、ここでhogeのデリーターに新たにhogeReg.erase(hoge.get())に相当する処理を追加したい

506デフォルトの名無しさん:2011/06/07(火) 19:13:08.40
HogeRegistoryをラップするクラス作った方がいいんじゃないか?
507デフォルトの名無しさん:2011/06/07(火) 20:19:29.36
そんなコンテナ捨てちまえ
508デフォルトの名無しさん:2011/06/07(火) 22:20:38.76
っ template<class Y, class D> shared_ptr(Y * p, D d);
  Effects: Constructs a shared_ptr that owns the pointer p and the deleter d.
509デフォルトの名無しさん:2011/06/08(水) 01:35:32.50
>>505
できた。
http://codepad.org/rQiAg0yO

けど、 >>507 のほうが正しい気がする。
510デフォルトの名無しさん:2011/06/08(水) 10:06:56.11
>>509
なるほど、別のスマポを作ってしまうというのは盲点でした
511デフォルトの名無しさん:2011/06/08(水) 10:20:29.14
盲点て
shared_ptr捨てるとかないわ
512デフォルトの名無しさん:2011/06/08(水) 21:33:22.84
シェアポ
513デフォルトの名無しさん:2011/06/09(木) 11:06:07.76
vector<any> の中身を順番にostreamに突っ込みたいんですが,
組み込み型ならある程度typeごとに条件わけで書けるのはわかるんですが,
ユーザー定義型の場合はどうやって動的にany_castしたら良いんでしょう??
placeholderのtype()に合うように自動的にcastってできるんでしょうか.
初心者ですいませんorz
514デフォルトの名無しさん:2011/06/09(木) 19:35:19.60
>>513
作ったクラスに<<をオーバーロードすればいいじゃない
515デフォルトの名無しさん:2011/06/09(木) 20:13:21.12
>>514
初級者なのでよくわかっていないのですが,
class A; vector<any> b; b.push_back( A() );
みたいにしたあと,any_cast<A>を正しくするにはどうしたらいいのか…
せめてfor_each( any &a in b ) cout << any_cast< a.type() >(a);
みたいな事ができるといいのですが…
516513:2011/06/09(木) 22:21:11.39
動的にany_castする方法はわからなかったですが,
やりたいこと自体は基底にオペレータを定義して,
あとは多態性で解決できました.
できてみれば簡単でした…なんで思いつかなかったんだろう...
ありがとうございました.
517デフォルトの名無しさん:2011/06/09(木) 23:19:22.71
>513
静的な解決はできないから動的なマルチディスパッチしかない。

多態で済むんだったら、普通に基底ポインタで保持したら?
518513:2011/06/10(金) 11:36:36.57
>> 517
静的にはムリなんですね.そりゃそうか...
それで行きます!
519デフォルトの名無しさん:2011/06/14(火) 00:01:56.65
property_treeのiniファイルパーサーですけど、セクションとキーの文字列を
大文字小文字の区別をつけないようにできないんでしょうか?
APIのGetPrivateProfileString()は、大文字小文字の区別が無かったので
すでにあるINIファイルをこれで読み込もうとすると、大文字だったり小文字
だったりするので、設定が見つからなかったりするんです。

520デフォルトの名無しさん:2011/06/14(火) 08:27:27.95
>>519
basic_ptree の第 3 テンプレートパラメータで大文字小文字無視する比較を渡せばいいんじゃないかな。
521デフォルトの名無しさん:2011/06/14(火) 08:36:03.92
同じことだけど ptree → iptree (wptree → wiptree)
522デフォルトの名無しさん:2011/06/14(火) 09:04:35.81
property_treeもう手放せないんだけど、-O3でバイナリが
数100k膨れ上がるのは何とかならんのか
523デフォルトの名無しさん:2011/06/14(火) 21:45:32.04
>>521
やってみます!ありがとうございます。
524uy:2011/06/21(火) 07:11:35.99
素晴らしい言語だな・・・・・
525uy:2011/06/21(火) 07:41:23.38
【ノード】uyプログ... Part4.0【更なる未来】
http://hibari.2ch.net/test/read.cgi/prog/1306135242/

ゴミが積もって四スレ目
526uy:2011/06/21(火) 15:51:38.99
ゴミみたいなスレだな・・・・
527デフォルトの名無しさん:2011/06/29(水) 17:25:25.50
1.47期待hosyu
528デフォルトの名無しさん:2011/06/30(木) 00:32:47.62
geometry楽しみ
529デフォルトの名無しさん:2011/06/30(木) 06:53:43.21
>>528
なんも動きがないんだが大丈夫なのかアレ
530デフォルトの名無しさん:2011/07/02(土) 23:23:39.21
新機能をブリーフィングして俺をワクワクさせろ
531デフォルトの名無しさん:2011/07/02(土) 23:26:20.96
もうちょっとコンパイル早くしてくれませんか?
532デフォルトの名無しさん:2011/07/03(日) 01:27:40.58
TMP使うソースのコンパイルは
指示する度にうんこしてこれる
533デフォルトの名無しさん:2011/07/03(日) 07:55:11.52
Boost.CompilationFirewall
534デフォルトの名無しさん:2011/07/03(日) 12:31:34.50
マルチコアCPU使ってる場合はコンパイラオプションに/MP付ければ多少速くなるよ
535デフォルトの名無しさん:2011/07/05(火) 08:18:42.24
boostにマルチスレッド対応コンテナってある?
536デフォルトの名無しさん:2011/07/05(火) 21:13:20.99
lockfreeコンテナのことなら今レビュー中だったかな?
537デフォルトの名無しさん:2011/07/12(火) 17:23:37.47
538デフォルトの名無しさん:2011/07/13(水) 22:55:11.55
<boost/archive/binary_iarchive.hpp>を使用すると警告が出てくるのですがこれはどうにもならないのでしょうか
インクルードしているだけで出てくるのでコードが悪いわけではなさそうですが・・・
539デフォルトの名無しさん:2011/07/13(水) 22:56:18.32
警告なら非表示にすればいいだろ
540デフォルトの名無しさん:2011/07/13(水) 23:00:22.26
んー、そうなんですけど利用したらなんかバグとか出そうで心配なのですが・・・
データが失われる可能性とか出てるので
541デフォルトの名無しさん:2011/07/13(水) 23:07:01.70
そんな餌に俺はつられんぞ
542デフォルトの名無しさん:2011/07/13(水) 23:57:17.82
いやいや、まじめに
543デフォルトの名無しさん:2011/07/14(木) 01:29:57.03
とりあえず、どんな警告が出てくるか位ははろうぜ
544デフォルトの名無しさん:2011/07/14(木) 01:36:18.29
そうですね。申し訳ない
長かったのでこちらに
ttp://codepad.org/ylgwJM88
545デフォルトの名無しさん:2011/07/14(木) 01:38:01.28
>>544
std::streamsizeってstd::size_tのtypedefだったと思うけどどうしてそれに対する警告が出てるの?
546デフォルトの名無しさん:2011/07/14(木) 01:45:06.68
さぁ・・・自分ではなんとも
boostの中を見てもさっぱり
547デフォルトの名無しさん:2011/07/14(木) 03:24:52.14
>>538,544
streamsize は size_t 以下の精度とは限らないからね。

https://svn.boost.org/trac/boost/search?q=streamsize+size_t
報告されてはいないみたいだから、 1.47 で試してまだ出るようなら Trac へ Go
548デフォルトの名無しさん:2011/07/14(木) 14:08:54.03
どうやら1.47でも出るみたいですね
・・・しかし英語ができなくて報告の仕方がわからない
549デフォルトの名無しさん:2011/07/14(木) 16:41:24.32
う〜BOOST_FOREACHって意外と遅かったのねぇ、便利だから使い過ぎてしまったよ
書き直しorz
550デフォルトの名無しさん:2011/07/14(木) 16:48:14.75
問題になるほど遅い印象はないけどな
551デフォルトの名無しさん:2011/07/14(木) 19:51:12.74
>>594
何年も前の話だけど、BOOST_FOREACH のコンパイルされたアセンブラコードを見て、
あまりのひどいコードに愕然としたことがあったよ。

以来使っていない。
552デフォルトの名無しさん:2011/07/15(金) 00:27:44.82
foreachならopenmpやtbbにもあったと思うのでそっち使ってみてはどう?
553デフォルトの名無しさん:2011/07/15(金) 19:42:28.31
そんなんあったっけ?
見当たらぬ・・・
554デフォルトの名無しさん:2011/07/15(金) 21:51:05.85
http://eetimes.jp/content/3156
http://parallel-for.sourceforge.net/tbb.html

公式ドキュメントは日本語検索だと出づらいが、サンプルコードは出てくるぞ
555デフォルトの名無しさん:2011/07/17(日) 22:00:44.81
xpressive_static.hppをプリコンパイルに入れただけでpchが40MB以上膨らんだでござる
556デフォルトの名無しさん:2011/07/17(日) 22:03:18.06
boostの中の人って頭いいのにアホなのかな
あの技術と熱意を新低級言語開発に回してたらいまごろとっくにもっと便利なもんできてただろ
557デフォルトの名無しさん:2011/07/17(日) 22:25:23.28
D言語の二の舞になるだけだろ
558デフォルトの名無しさん:2011/07/17(日) 22:32:27.26
言語の核の部分は人数多くてもしょうがない。
重要なのは汎用性と一貫性で、技術と熱意は邪魔なだけ。

低級言語ならForth最強だろ。
559デフォルトの名無しさん:2011/07/17(日) 22:57:03.18
ジェネリックな低級llvm言語、その名はclay
560デフォルトの名無しさん:2011/07/20(水) 21:39:22.18
property_treeのini_parserなんですが、XP以降だと問題ないのですが
Win2kだと正しくiniファイルが読み込めないのですが、対応してないって
ことでしょうか?
561デフォルトの名無しさん:2011/07/20(水) 21:57:19.39
どんなふうにできないのか?
562デフォルトの名無しさん:2011/07/20(水) 22:01:58.89
Boost::pythonの質問はココで良いですか?
563デフォルトの名無しさん:2011/07/20(水) 22:18:35.25
>>561
Win2kのPCにVSが入ってないんで、まだ詳しく見れてません。
ただ、現象的には、

・セクションが見つからない
・キーが見つからない
・イコール(=)の後に文字列がない

のいずれかですね。
この場合は、デフォルト文字列になるようにしてるんですが、
読み出そうとしている文字列がすべてデフォルトになっちゃってるんで。
564デフォルトの名無しさん:2011/07/22(金) 22:07:40.02
>>560
自己レスです。

Win2kの問題では無く、ファイルのパス名に日本語を含んでいるためでした。
read_iniで直接ファイル名を指定せずに、ifstreamで開いてからそのストリームを
read_iniに指定することにしました。
565デフォルトの名無しさん:2011/07/23(土) 02:01:43.28
>>556
boostより便利なものってなんだよw
566デフォルトの名無しさん:2011/07/23(土) 04:24:22.55
いい加減boost.GUIを作れよ
567デフォルトの名無しさん:2011/07/23(土) 07:01:26.61
>>565
python最強
568デフォルトの名無しさん:2011/07/24(日) 01:16:39.11
>>566
やってみろ
そして、どこが「boost」なのか説明してくれ
569デフォルトの名無しさん:2011/07/25(月) 01:20:20.78
>>567
そのうちC++でboost使うほうが楽になるよ。
570デフォルトの名無しさん:2011/07/25(月) 14:35:01.36
GUIはどうすんの
571デフォルトの名無しさん:2011/07/25(月) 17:51:44.10
wxWidgets
572デフォルトの名無しさん:2011/07/25(月) 18:41:46.88
wxWidgets って Boost 版あったっけ
573デフォルトの名無しさん:2011/07/25(月) 18:51:49.10
っていうかwxWidgets使ってるとBoostいらねって思うわw
574デフォルトの名無しさん:2011/07/27(水) 15:45:22.63
c++0xのlambdaと同じ様なものは
boost組み合わせてできないものでしょうか

_1

じゃなくて

x

とか変数に使いたい
575デフォルトの名無しさん:2011/07/27(水) 19:05:09.41
shared_ptrってマクロでマルチスレッドをONOFFできるけど
ONのshared_ptrとOFFのshared_ptrを共存させるのってアリなの?
576デフォルトの名無しさん:2011/07/27(水) 20:54:57.72
>>575
ない
577デフォルトの名無しさん:2011/07/27(水) 22:02:54.24
>>574
_1 の別名として使えればいいだけなら
boost::lambda::placeholder1_type X;
とすれば X が _1 と同じように使える。
Boost Phoenix で似たようなことしつつ let 使った方がもう少し望みに近くなるかもしれない。
578デフォルトの名無しさん:2011/08/11(木) 19:09:09.86
BOOST_CHRONO_HEADER_ONLY マクロ有効にしても.libリンクしろって怒られます
date_timeとかは普通にヘッダオンリで使えてるんですけど、Chronoの場合なんか他に必要なんですか?
579デフォルトの名無しさん:2011/08/11(木) 19:31:03.92
自己解決しました
BOOST_SYSTEM_NO_LIB と BOOST_ERROR_CODE_HEADER_ONLY も有効にしたらできました・・・
もっと調べてから聞くべきだった
580デフォルトの名無しさん:2011/08/18(木) 11:43:35.00
c++0x確定でboostもいろいろ影響うけるかな
581デフォルトの名無しさん:2011/08/24(水) 11:13:47.94
https://gist.github.com/1167135

spirit 試してみてます
上記のコードで helper って関数書かないで、
39 行目みたいにしたいんだけど、うまく書く方法ありませんか?
582デフォルトの名無しさん:2011/08/26(金) 14:22:00.42
復帰
583デフォルトの名無しさん:2011/08/29(月) 16:25:44.13
matlabとか他の計算結果を全部ublasの形式に合わせて出力してるんだが
単純に数値並べただけの方が便利だったりするのかな
584デフォルトの名無しさん:2011/08/29(月) 21:45:43.13
>>583
その計算結果の用途によるとしか……
ublasへの入力が多いならそれでいいんじゃね?
585デフォルトの名無しさん:2011/08/30(火) 05:28:57.20
もっと背景を書いてくれないと答えようがないな
586デフォルトの名無しさん:2011/08/31(水) 03:17:50.94
boostでシリアライズしてたんだけどエラーがどうしても消えなかったんだ
それでいろいろやってたら出なくなったんだがその内容が
friend class boost::serialization::access;
template<class Archive>
void serialize( Archive& ar, unsigned int ver )
{
ar & string型;
ar & string;
ar & int;
ar & int;
ar & int;
ar & int;
}
の並びを
ar & int;
ar & string型;
ar & int;
ar & string;
ar & int;
ar & int;
にしたらエラーが出なくなった。原因は何なんだろう
587デフォルトの名無しさん:2011/08/31(水) 03:28:52.43
588デフォルトの名無しさん:2011/08/31(水) 09:40:03.66
>>586
エラーの内容も書かずに云々
589デフォルトの名無しさん:2011/09/01(木) 21:32:00.35
boost::property_tree で要素の削除ってどうやってするんでしょうか?
たぶんeraseだとは思うんですがうまくいきません。
590デフォルトの名無しさん:2011/09/04(日) 17:34:26.96
http://www.kmonos.net/alang/boost/classes/asio.html
をみてasioでwebサイトからデータを取得しています
ip::tcp::iostream s( "www.boost.org", "http" );
によって作られたsはs << flush;を実行した時点で通信が開始されていると思いますが
while( getline(s, line) ) cout << line << endl;
によってデータを受信した後sを再利用するとこはできませんか?
質問するところが間違っていたらすいません
591デフォルトの名無しさん:2011/09/05(月) 04:45:04.36
boost:threadに関する質問です
スレッドを作って内部で勝手に処理させるクラスを作っています
class test {
boost::thread thr;
void start(){
thr = boost::thread(func);
}
void stop();
}
のようにして生成したスレッドのコピーをメンバ変数に保存してい置くのはまずいでしょうか
一応boost::thread(func)がスコープを外れて破棄されても動作するようですがどうなのでしょうか
592デフォルトの名無しさん:2011/09/05(月) 08:59:00.97
>>591
別にまずくはない。
boost::threadのデストラクタはdetach()を呼び出す。つまり、threadオブジェクトと
スレッドの寿命は同期していないし、スレッドが終わるまで待ってくれたりもしない。
同期させたければthreadオブジェクトを破棄する前にスレッド関数を抜けるように
フラグやcondition_variable等で指示しておき、(thread::join()等で)スレッドが終了した事を確認してから、
threadを破棄する必要がある。
593デフォルトの名無しさん:2011/09/05(月) 14:55:53.84
>>589
自己レスです。

実際には、iniファイルの読み書きで使ってるんですが、
セクションごと消すのは出来るんですが、その中のあるキー設定を
消すと、write_ini()で例外が発生してしまいます。

だれかご存じないでしょうか?
594デフォルトの名無しさん:2011/09/05(月) 15:06:36.43
>>593
さらに自己レス。

[Section]
Key1=1234
Key2=9876

と有ったときにKey2は消せるんですが、Key1を消すと、write_ini()パーサーで
例外が発生します。
これって、write_ini()のバグ?
595デフォルトの名無しさん:2011/09/05(月) 20:03:55.89
>>594
またまた自己レスです。

どうも、erase()またはwrite_???()がバグっているように思える。
iniパーサーでなくて、xmlやjsonパーサーでもerase()してwriteすると
おかしくなる。erase()したあと、ptreeをたどるとeraseしなかった要素は
残っているようなので、write_???()がくさい。
596デフォルトの名無しさん:2011/09/05(月) 20:07:12.19
コード書けや
597デフォルトの名無しさん:2011/09/05(月) 20:11:17.10
>>595
やっぱerase()がおかしい。earse()したあと別のptreeにコピーすると
異常が出てしまう。(clone()ルーチンで)
erase()は使えないなぁ。
これ、ptreeってmulti_index_containerですよね。そっちもバグってるってことか?
598デフォルトの名無しさん:2011/09/05(月) 20:16:43.56
>596

ptree pt;
read_ini("hoge.ini", pt);

ptree& n1 = pt.get_child("Section");
ptree::assoc_iterator it = n1.find("Key1");
if (it != n1.not_found()) {
write_ini("hoge.ini", pt);
}

<hoge.ini>
#=================
[Section]
Key1=1234
Key2=ABCDE
#=================
599デフォルトの名無しさん:2011/09/05(月) 20:21:26.46
>>598
すまん。肝心のerase()が抜けてたorz

ptree pt;
read_ini("hoge.ini", pt);

ptree& n1 = pt.get_child("Section");
ptree::assoc_iterator it = n1.find("Key1");
if (it != n1.not_found()) {
pt.erase(n1.to_iterator(it));
write_ini("hoge.ini", pt);
}

<hoge.ini>
#=================
[Section]
Key1=1234
Key2=ABCDE
#=================
600デフォルトの名無しさん:2011/09/05(月) 20:51:46.57
このコードでどうだろうか

ptree pt;
read_ini("hoge.ini", pt);
ptree::assoc_iterator it = pt.find("Section");
if (it != pt.not_found()) {
 it->second.erase("Key1");
 write_ini(std::cout, pt);
}
601デフォルトの名無しさん:2011/09/06(火) 08:06:09.21
>>600
おお!うまくいきました!
ありがとうございました。

なるほど、最下層の要素を削除するときはこうしないといけないんですね。
boostにも削除のサンプルを入れて欲しいな〜。
602デフォルトの名無しさん:2011/09/06(火) 08:08:44.87
常識だから入れなかったんじゃない?
603デフォルトの名無しさん:2011/09/06(火) 09:14:40.07
結局、キーの方も find()で探して、もしあれば、そのイテレータを使って

ptree::assoc_iterator it2 = it->second.find("Key1");
if (it2 != it->second.not_found()) {
 it->second.erase(it->second.to_iterator(it2));
}

として消すようにしました。
まあ、例外で受けていいのですが他の処理もあるので。
604デフォルトの名無しさん:2011/09/06(火) 11:49:02.47
リンクエラーが出て先に進めないのでご存知の方がいたら教えて下さい。
環境 Visual C++ 2008
   boost Ver.1_46_0

C:\>cl /EHsc test.cpp
とコンパイルしたら
LINK : fatal error LNK1104: ファイル 'libboost_thread-vc90-mt-s-1_46.lib' を開くことができません。
と出力されました。
また、以下のサイトでlibboost_thread-vc90-mt-s-1_46.libらしきファイルをDLできたので、
\boost_1_46_0\stage\lib配下にコピーしましたが結果同じでした。
 http://hg.splayer.org/splayer/src/3fe3f0a75e68/lib/boost/

ソースファイルは以下のようなファイルです。

#include <iostream>
#include <boost/thread.hpp>
using namespace std;
using namespace boost;
void func(){
}
void main(){
thread threadA(func);
threadA.join();
}

ご教授お願いします。 m(__)m
605デフォルトの名無しさん:2011/09/06(火) 11:58:31.75
突っ込んだ所で追加のライブラリ ディレクトリに入ってなきゃダメだろ
606デフォルトの名無しさん:2011/09/06(火) 12:51:54.38
607604:2011/09/06(火) 14:27:03.46
>>605
>>606

ありがとうございます m(__)m

自動インストーラでboost_1_47を再インストールしたあと、
vsvars32.batに
@set LIB="C:\boost_1_47\lib";C:\Program Files\Microsoft Visual Studio 9.0\VC\LIB;%LIB%
も追加したらリンク通るようになりました。
608デフォルトの名無しさん:2011/09/08(木) 04:08:47.89
http://www.kmonos.net/alang/boost/classes/asio.html
ではgetlineによって1行づつしか読んでいませんが
char *buf = new char[size];
s.read(buf,size);
のようにして一気に読み込みたいのですがどうすればいいでしょうか
609デフォルトの名無しさん:2011/09/12(月) 00:07:38.37
フェニックスがFC++の後継だそうだけど
いろんな意味で中途半端すぎないか
それともこれから発展していくのだろうか
610デフォルトの名無しさん:2011/09/12(月) 01:17:16.20
arrayって宣言時以外に入力するには1つずつ入れないとダメ?
面倒くさいんだけど
611デフォルトの名無しさん:2011/09/12(月) 01:45:29.28
assignとかなかったっけ
612デフォルトの名無しさん:2011/09/12(月) 02:39:33.09
おぉ、arrayにも使えたのか
613デフォルトの名無しさん:2011/09/13(火) 21:55:59.68
VS2005使ってるのですがboostが正しくインストールされてるか簡単に確かめる方法ないですか?
614デフォルトの名無しさん:2011/09/19(月) 11:54:58.40
memoizationをtemplate使って汎用に書いた関数ってなかったでしょうか
615デフォルトの名無しさん:2011/09/19(月) 13:57:11.65
pstadeのmemoizedぐらいしかしらん
616デフォルトの名無しさん:2011/09/20(火) 10:42:28.53
http://p-stade.sourceforge.net/oven/doc/html/index.html
これいいな
早く公式にとりこまれないかな
617デフォルトの名無しさん:2011/09/20(火) 11:58:01.13
2chの過去ログみたら
eggが誰もレビューされないでレジェクトだって?

公式の説明はどうなってるの
今ならレビューするのに
618デフォルトの名無しさん:2011/09/20(火) 12:32:36.15
619デフォルトの名無しさん:2011/09/20(火) 13:12:27.24
一度レビューに上ったこともあるんだぜ。
あまりにもレビュー数が少なかったので、落とされたが。
620デフォルトの名無しさん:2011/09/20(火) 13:38:38.71
なんでドキュメント改良して再チャレンジって話にならなかったの?
621デフォルトの名無しさん:2011/09/20(火) 15:00:38.77
本人が長いこと更新してないみたいだし
誰かが本人と連盟扱いでドキュメント更新したものを再チャレンジしたらダメなのかな?
622デフォルトの名無しさん:2011/09/29(木) 16:11:38.71
VS2008ではワーニングが出なかったんだが、VS2010にすると

C4503 装飾された名前の長さが限界を超えました

っていっぱい出るんだが、どうすればワーニングが出ないようにできるんでしょうか?
コンパイルそのものは、正常終了してます。
623デフォルトの名無しさん:2011/09/29(木) 18:19:11.04
boost-coroutineはx84-64で動かないって本当ですか?
2010年にバージョンアップしたみたいですが
x84-64で動かないってコメントみかけるのが2009年より前のものばかりなので
ひょっとして改善したのかと
624デフォルトの名無しさん:2011/09/29(木) 19:46:32.94
試してみてくれ
俺も気になる
625デフォルトの名無しさん:2011/09/30(金) 00:13:17.37
そんな事より大変だよおまえら
progress_displayさんがdeprecatedされるって
626デフォルトの名無しさん:2011/09/30(金) 00:52:26.07
奇跡のような存在だったからな。
627デフォルトの名無しさん:2011/09/30(金) 07:13:20.60
progress_displayさんはboostの癒しキャラ
技巧凝らしたソースばかり見ていたら疲れるだ
628progress_display:2011/09/30(金) 21:19:30.73
みんな反対してよ(´;ω;`)
629デフォルトの名無しさん:2011/09/30(金) 21:26:13.06
progress_displayに
呼び出し元プロセスとの進捗状況をやりとりする機能を実装し
そのプロトコルも規格化したりすると延命できるのかな。
630デフォルトの名無しさん:2011/09/30(金) 21:34:09.65
progress_displayやprogress_timerの実装に使われてる大元のBoost.Timerの刷新のついでだからどうしようもないな
631progress_display:2011/09/30(金) 21:57:09.32
何でみんなそんなに冷静なのっ!?
632デフォルトの名無しさん:2011/10/01(土) 08:36:25.31
来るべき時が来たって感じだから…
633デフォルトの名無しさん:2011/10/01(土) 10:52:59.90
この際eggやovenをだな
634デフォルトの名無しさん:2011/10/01(土) 13:07:50.36
レビューがBoostConと重なったためにまともに評価されなかったんだよね>egg
どう考えてもovenの方がrangeexより優れてる筈なのに・・・どうしてああなった
635デフォルトの名無しさん:2011/10/01(土) 13:51:24.87
|をパイプ処理に使う仕様とかはqtみたいな言語のサブセット的な巨大フレームワークを構築してその中に隔離しておいてくれ
636デフォルトの名無しさん:2011/10/03(月) 09:54:06.59
oerator |  
の定義って斬新だな
フェニックスも大概独自世界構築してるけど| の方がわかりやすくてええわ
637デフォルトの名無しさん:2011/10/03(月) 11:06:36.24
俺はうげーってなるから止めて欲しい
638デフォルトの名無しさん:2011/10/03(月) 13:11:45.27
シェルのパイプからの発想なんだろうけどC++で順序に意味のある結合に|を使うのは一般的になって欲しくない
639デフォルトの名無しさん:2011/10/03(月) 20:59:58.34
同感
640デフォルトの名無しさん:2011/10/04(火) 19:22:39.08
>>633
>eggやoven
boostライセンスだから
作者の許可なしで「改良したもの」をboostに提案しても問題ない予感がするのだが
もちろん作者の名前も入れる
641progress_display:2011/10/04(火) 19:50:11.11
・・・
642デフォルトの名無しさん:2011/10/04(火) 20:34:30.64
返事が無い
ただのdeprecatedのようだ
643デフォルトの名無しさん:2011/10/04(火) 20:37:41.95
誰かが作ったのを別人が改良というのはよく見るから
改良したらいいんじゃないの?
644デフォルトの名無しさん:2011/10/05(水) 19:12:35.16
progress_display って、なんだかんだでみんな一度は使うよね
645デフォルトの名無しさん:2011/10/05(水) 19:13:37.47
boostの親善大使だから
646デフォルトの名無しさん:2011/10/05(水) 19:17:28.31
そうだったのか。。

でも確かに、親善大使という言い方に、しっくりくるものを感じる。。。
647デフォルトの名無しさん:2011/10/06(木) 00:55:35.76
まぁ初めてboost触る人にSpirit薦めるわけにはいかないしねぇ
俺はlexcal_castから入門したけど
648デフォルトの名無しさん:2011/10/06(木) 04:42:44.99
誰もが一発でわかる最も簡単なboost
noncopyableをよろしく
649デフォルトの名無しさん:2011/10/06(木) 07:18:53.85
BOOST_FOREACHがいいんじゃないか
650やんやん ◆yanyan72E. :2011/10/06(木) 10:42:50.54
BGLから入った俺は変態ですか?
651デフォルトの名無しさん:2011/10/06(木) 11:15:42.53
俺はshared_ptrとregex
652デフォルトの名無しさん:2011/10/06(木) 12:00:49.57
俺はtokenizer
653デフォルトの名無しさん:2011/10/06(木) 13:05:24.59
filesystemから入ったかなぁ
654デフォルトの名無しさん:2011/10/06(木) 13:17:38.99
randomだったと思う。
655デフォルトの名無しさん:2011/10/06(木) 13:19:25.53
和訳されてる書籍にあるライブラリしか使えん
656デフォルトの名無しさん:2011/10/06(木) 14:35:14.08
scoped_arrayからかな・・・auto_ptrの配列版探していて知った

ところでprogress_displayを実用した著名ソフトってあるのかしら
657デフォルトの名無しさん:2011/10/06(木) 14:59:48.03
google code検索で検索してみよう
658デフォルトの名無しさん:2011/10/06(木) 19:29:22.00
>>656
めっちゃ有名なライブラリで使ってるよ。

Boost C++ Libraries
659デフォルトの名無しさん:2011/10/06(木) 23:55:45.01
一番最初につかったのが、progress_displayだわ
まぁLet'sboostみながら一番わかりやすそうだったからってだけだが
660デフォルトの名無しさん:2011/10/07(金) 10:59:06.69
意外にもformatが挙がらないな
661progress_display:2011/10/08(土) 01:20:12.74
私の後継に相応しい者はいないようだな
これではまだまだ親善大使を退くわけにはいかんう・・・
662デフォルトの名無しさん:2011/10/08(土) 17:22:29.70
早くprogress_display2.0を作る作業に戻るんだ
663デフォルトの名無しさん:2011/10/08(土) 17:38:11.23
Boost.Timerv2に対応したprogress_displayです!!!1111
みたいにboost.develに投稿してまずはsandbox入りを目指そう
664デフォルトの名無しさん:2011/10/08(土) 17:54:54.35
表示処理部分を差し替え可能にすればなんとか・・・
665デフォルトの名無しさん:2011/10/08(土) 19:09:47.22
誰か>>629とMPIにも対応させてくれ
666デフォルトの名無しさん:2011/10/08(土) 20:21:58.06
そしてboost.interprocessに吸収されるわけですね
667デフォルトの名無しさん:2011/10/09(日) 00:26:41.87
bjamこそprogress_display使うべきじゃね?
668デフォルトの名無しさん:2011/10/19(水) 16:49:04.00
filesystemのwpathってなんでdeprecatedなの?
669デフォルトの名無しさん:2011/10/19(水) 16:51:32.26
ごめん自己解決
pathそのものが両方サポートしてるのね。
670デフォルトの名無しさん:2011/10/25(火) 14:09:17.02
「boost::this_thread」っていう名前空間の「this」ってどんな意味なのでしょうか?
どなたかご存知です?
671デフォルトの名無しさん:2011/10/25(火) 14:12:05.06
このスレ
672デフォルトの名無しさん:2011/10/25(火) 14:16:33.54
>親善大使
簡単にスレッドを使いたくて調べてたらboostにあたった。
boost::thread は非常に簡単でいい。

「boost::this_thread」っていう名前空間の「this」ってどんな意味なのでしょうか?
どなたかご存知です?
673デフォルトの名無しさん:2011/10/25(火) 14:24:37.71
>>670
"this"の意味は「この」。
"this_thread"で「このスレ」。
674672:2011/10/25(火) 19:21:41.47
>>620
あれ?2回も投稿してるし、しかもageてるよ。申し訳ない。

>>671, >>673
ありがとうございます。
助かりました。
説明もらって、Webで見つけたサンプル達を眺めたら理解できました。
675672:2011/10/25(火) 20:36:08.22
連続で失礼!
どちらかというと、Boostというより、C++のクラスについての質問になります。
よろしくお願いします。

ttp://melpon.tank.jp/pukiwiki147/index.php?Memo%2F%CB%DD%CC%F5%2FBoost.Thread
↑この辺り( Boost.Thread )を読んで試したりしているのですけど、
 boost::this_thread sleep()  ※Static member function sleep()
 boost::this_thread::sleep()  ※Non-member function sleep()
の二つのsleepがあるじゃないですか。それぞれ、
 指定した時間になるまで、現在のスレッドをサスペンドします
 指定した時間が経過するまで、現在のスレッドをサスペンドします
と若干引数の扱いが違いますが、似ています。

threadクラスの中に入れたのと、外(this_thread)に入れたのとで、どのように使い分ければいいのですか?
「中断ポイント」として、利用されるのが前者、程度の違いでしょうか?
何か他に大事なことを知らない気がしています…。

676672:2011/10/25(火) 21:33:35.07
ミスった
×boost::this_thread sleep()  ※Static member function sleep()
○boost::thread sleep()  ※Static member function sleep()
677デフォルトの名無しさん:2011/10/27(木) 18:00:45.65
property_treeのINIパーサーだけど、XMLパーサーみたいに書きこむときに
コメントを再現できないんだろうか?
今は無視して読み飛ばしてるみたいだが。
678デフォルトの名無しさん:2011/10/27(木) 18:05:26.87
コメントなんて読んでどうすんだ
679デフォルトの名無しさん:2011/10/30(日) 20:51:44.73
boost::thread のスレッドが動いているか、それとも終了しているか、を自作の関数を用いないで確認する方法ってあります?
680デフォルトの名無しさん:2011/10/30(日) 21:20:35.33
timed_join
681679:2011/10/31(月) 02:40:46.69
>>680
!!そうかっ!
感動した!
ありがとうございます。
682デフォルトの名無しさん:2011/11/01(火) 00:34:42.48
既存のクラス
namespace Hoge {
struct Fuga // 独自にカウンタを持つ
{
int count ;
int add_ref(void);
int release(void);
};
}
があってintrusive_ptrを使いたいんだけどnamespace Xに追加禁止の場合は
グローバルスコープにintrusive_ptr_add_refとintrusive_ptr_releaseを書くしか無い?
なにかうまい回避策とかあるのかな
683デフォルトの名無しさん:2011/11/01(火) 01:47:51.17
>>682
namespace に追加禁止の意味がわからん。
684デフォルトの名無しさん:2011/11/01(火) 01:54:37.13
Xってどこだよ、おいといて、>>682でHogeの中に置けないならnamespace boostに置く
685デフォルトの名無しさん:2011/11/02(水) 06:59:20.82
ttp://melpon.tank.jp/pukiwiki147/index.php?Memo%2F%CB%DD%CC%F5%2FBoost.Thread#x68e5715
「Thread Constructor」の説明に書いてある、「*this」って何のことか説明もらえたりしませんか?
呼ばれる関数内でthisとか書いてもthreadのインスタンスメソッドとか呼べないのですけど…。
さっぱりわかりません。
686685:2011/11/02(水) 07:33:33.34
あ、何か急にわかりました。
スレ汚し失礼しました。
687685:2011/11/02(水) 14:26:44.40
>>675
ttp://melpon.tank.jp/pukiwiki147/index.php?cmd=read&page=Memo%2F%CB%DD%CC%F5%2FBoost.Thread#ldd60c2a
これみると、後方互換性のために存在する感じのように見える。
「// 後方互換性のため」のスコープがどこまでなのかがハッキリしないが、たぶん後方互換性に含まれるんだろ。
ちなみに、boost1.47のヘッダみたら、「static」の方の引数の変数名が「this_thread」にあわせられていた。
確信無いので参考までに。
688デフォルトの名無しさん:2011/11/02(水) 20:59:30.05
もう少しよく見ればthread::yield/sleepがthis_thread::yield/sleepを呼び出してるだけなのがわかっただろうになあ
689679:2011/11/05(土) 06:15:53.53
join()・timed_join()(成功)・detach()を複数回実行した時の動作は未定です?
timed_join()を繰り返して、起動した全てのスレが終了したか検知するコードを書いて今はうまく動いているのですけど、
幾つかのスレが終了している最中に、もしも別のスレが起動したらどうなるのかな?デタッチした領域は開放されているから再利用される可能性があるかな?なんて考えて…。
それとも、スレの起動箇所ごとに、アタッチするメモリ番地が決まってるのかな。
そうすると、forやwhileで起動する際に説明がつかないし…。
未定か。
690デフォルトの名無しさん:2011/11/05(土) 11:36:39.78
なに言ってるかわからないがたぶん心配してるようなことにはならないだろ。基本的なところを勘違いしてるように思える。
691689:2011/11/06(日) 22:23:39.49
>>690
レスありがとうです。

スレッド周りのヘッダとcppと読んでみたのですけど、あまりわかりませんでした。
スレッドが終了したかどうかって、Win32 APIとどのようにやり取りするのかわからないのがマズイ気がする。
先は長い…。

ところで、さっきと今との、経過時間をmillisecで取得したいのですけど、Boostを利用すると比較的容易な気がするのですが、どのクラスを利用すればいいでしょうか?
boost::posix_time付近で探しているところですが。
692689:2011/11/06(日) 22:34:54.18
ageてしまいました。すみません。
Win32APIでみつけることができました。GetTickCountで差分をとればいけそうでした。

もしBoostで、同じようなことが出来れば御教示ください。出来れば環境依存は少ない方がいいと思いますし。
693デフォルトの名無しさん:2011/11/06(日) 22:45:34.52
boost::timer
694デフォルトの名無しさん:2011/11/06(日) 23:13:37.80
chrono
695デフォルトの名無しさん:2011/11/07(月) 06:41:56.52
いつもチンコ?って思っちまう
696デフォルトの名無しさん:2011/11/08(火) 17:34:26.68
半年くらい前までは[スマポ]で検索するとスマートポインタのサイトがずらっと出てきたのに
今出てこなくなってるな
こういう新しいものが出たときにもともとあった情報の取得の障害になることをなんていうんだろうね
697デフォルトの名無しさん:2011/11/08(火) 17:36:23.99
産業革命
698デフォルトの名無しさん:2011/11/08(火) 17:54:00.58
シャドウイング
699デフォルトの名無しさん:2011/11/08(火) 21:56:57.82
オレオレ略語使いの憂鬱
700デフォルトの名無しさん:2011/11/09(水) 12:34:52.49
スマポなんて初めて聞いたぞ
701デフォルトの名無しさん:2011/11/09(水) 12:38:10.56
ナマポは生活保護か生ポインタか
702デフォルトの名無しさん:2011/11/12(土) 15:27:47.67
むしろ誰も使ってなかったからグーグル先生の超推理でスマートポインタにヒットしてたんだろ。

いまは使われるようになったからな。
703デフォルトの名無しさん:2011/11/12(土) 18:32:09.00
>>696
10年以上前の話だがCの関数をググれてたのが
PHPに占領されたときは殺意を覚えた
704デフォルトの名無しさん:2011/11/12(土) 18:42:18.38
>>696
いまは「スマ」と打つとsmileageが出てくるように・・・まだなってないか
705デフォルトの名無しさん:2011/11/12(土) 20:10:00.06
clangが規格に忠実すぎてBootのソースがコンパイルできん。
706デフォルトの名無しさん:2011/11/15(火) 07:45:19.68
JOSN用モジュールってありますか?
707デフォルトの名無しさん:2011/11/15(火) 12:43:22.14
>>705
コンパイルエラー晒せ。
直接バグレポートするともっといい。
708デフォルトの名無しさん:2011/11/15(火) 22:07:44.75
>>706
JSON?
boost::property_tree

boost::property_treeを使ってXMLを読み込んでみるコードを書いてるのですけど、
hoge.piyo.fooの要素が複数存在する可能性がある仕様の時、何個あるかしらべるには、foreach使って全て読み込んでみないとわからないですか?
mapのsize()のような関数って無いでしょうか?
709デフォルトの名無しさん:2011/11/16(水) 01:35:08.82
710デフォルトの名無しさん:2011/11/16(水) 05:45:06.58
boost に gettext 相当のものってありますか?
711デフォルトの名無しさん:2011/11/16(水) 06:01:45.60
>>710
ちょうどBoost.Localeが入ったぞ
712デフォルトの名無しさん:2011/11/16(水) 09:45:15.35
フェニックスってコンパイルは遅くなるけど
実行時間はふつうにfor文かいたりするのと変わらないの?
713デフォルトの名無しさん:2011/11/16(水) 12:20:42.65
714デフォルトの名無しさん:2011/11/17(木) 01:58:09.28
Windowsでstd::locale("en_US.UTF-8")すると死ねますか?
715デフォルトの名無しさん:2011/11/17(木) 01:59:23.32
たぶん無視されるだけかと
716デフォルトの名無しさん:2011/11/17(木) 13:49:42.72
>>712
うん。gccレベルのコンパイラでも最適化オプションつけるとfor文展開と変わらない。
最適化しない場合は知らん。
717デフォルトの名無しさん:2011/11/17(木) 14:52:45.35
1.48.0 released
718デフォルトの名無しさん:2011/11/17(木) 15:59:38.87
Boost.Containerの詳しい解説たのむ
主にflatシリーズ
719デフォルトの名無しさん:2011/11/17(木) 17:27:47.13
> 主にflatシリーズ
ソート済みvector使った擬似setや擬似mapあるだろ。つまりそれ。
720デフォルトの名無しさん:2011/11/17(木) 18:56:20.37
b2 ってのは bjam と同じなの?
1.47.0 から変わったみたいでコンパイルがよく分からなくなった

それと、オプションの toolset は -- がいらなくなったの?
721デフォルトの名無しさん:2011/11/17(木) 19:35:49.47
boost::interprocess::detailから
boost::interprocess::ipcdetailに仕様が変わってるんだな
コンパイルエラー吐かれて初めて気付いた
722やんやん ◆yanyan72E. :2011/11/17(木) 20:16:14.19
俺はbootstrap.shでtoolsetなどのオプションを指定して
b2でコンパイルという感じでやってるけど、
b2をbjamと同じように使うこともできるみたいだね。
723デフォルトの名無しさん:2011/11/17(木) 20:28:23.12
>>719
ありがと
724デフォルトの名無しさん:2011/11/18(金) 13:41:41.76
VC++2008でエラーになる・・・
boost.moveが原因くさい

#include <boost/unordered_map.hpp>

int main()
{
struct data_type
{
boost::unordered_map<int, int> a;
};

data_type a;
const data_type b;
a = b;

return 0;
}
725デフォルトの名無しさん:2011/11/18(金) 16:32:03.78
Why don't you write your version of boost.
726デフォルトの名無しさん:2011/11/18(金) 18:19:04.28
>>724
boostの使用以前にエラー。
クラス型のconstオブジェクトを初期化子なしで初期化する(default-initialized)ときは
そのクラス型はユーザー定義のデフォルトコンストラクタを持っていなければならない。
727デフォルトの名無しさん:2011/11/18(金) 20:45:24.66
property_treeのxml_parserでencodingをutf-8にして
文字列データに日本語を含ませるとunexpected end of dataという例外が飛んできます
utf-8のxmlを読み込むにはどうすればいいんでしょうか?
728デフォルトの名無しさん:2011/11/18(金) 20:46:15.79
data_type a;
data_type b;
a = static_cast<const data_type&>(b);
でもエラーになるな。
729727:2011/11/18(金) 20:47:18.46
あ、ちなみに環境はwindows7でVC++EE2008
boostのバージョンは1.46.1です
730デフォルトの名無しさん:2011/11/18(金) 22:38:19.46
>1.46.1です
731デフォルトの名無しさん:2011/11/19(土) 02:13:30.33
732デフォルトの名無しさん:2011/11/19(土) 02:53:37.99
733デフォルトの名無しさん:2011/11/19(土) 04:00:51.16
moveエミュレーションってOFFにできないの?
734デフォルトの名無しさん:2011/11/19(土) 08:18:33.39
>>726は規格準拠の動作。VC++で出るべきエラーが出ないのはいつものことなのでお察しください
735デフォルトの名無しさん:2011/11/19(土) 13:13:26.51
よくわからんけど>>728が通らないっていろいろ問題でないか?
736デフォルトの名無しさん:2011/11/19(土) 14:04:06.67
std::mapに変えてcodepadで試したけどエラー出なかったぞ
737デフォルトの名無しさん:2011/11/19(土) 15:16:38.02
>>726はclangとかで試せばエラーになるだろうけど
とりあえずboostとは関係ないし軽く流せよ
738デフォルトの名無しさん:2011/11/19(土) 16:22:22.43
へえ
739デフォルトの名無しさん:2011/11/19(土) 17:02:27.30
>>733
1.47とか古いboost使えば

>>735
boost1.48のコンテナを使うならdata_typeに必要なメンバを追加すれば通るようにはできる

>>736
どういう話だ。
>>724,728が言いたかったのはboost1.48のコンテナを使ったときの話でstd::mapでは再現しない。
>>726が言ってるのはこういう話 ttp://codepad.org/wc7uBetz
740デフォルトの名無しさん:2011/11/19(土) 17:02:36.69
Boost.Containerのパフォーマンスに期待
741デフォルトの名無しさん:2011/11/19(土) 23:12:47.21
>>730
治りました!
ありがとうございます
742デフォルトの名無しさん:2011/11/20(日) 07:40:41.25
Visual C++向けのboostのlibのディレクトリを覗くと、
 (1)boost〜.dll
 (2)boost〜.lib
 (3)libboost〜.lib ※:〜の部分は同じ
という3種類のファイルがあるのですけど、それぞれ何なのですか?

何となく、(3)が静的リンクなライブラリの本体で、
(1)が動的リンクなライブラリの本体で、(2)が(1)向けのインポートライブラリかなぁなんて考えたのですが、
どうして静的と動的と両方あるのだろうか?と考えると、さっぱりわかりません。
boostって静的リンクじゃないのですか?
743デフォルトの名無しさん:2011/11/20(日) 08:38:29.93
どこでダウンロードしたやつだ
公式じゃないよな?
744デフォルトの名無しさん:2011/11/20(日) 10:05:05.07
インストーラ配布してるとこがあるじゃん
んで、boostライブラリにはダイナミックリンクとスタティックリンクの2種類があるよ
ファイルの区別は>>742の通りで間違い無い

もう少し詳しくいうと、末尾に-sgdが付いているのがデバッグCRTスタティックリンク型(/MTd)、
-sが付いているのがCRTスタティックリンク型(/MT)、
-gdが付いているのはデバッグCRTダイナミックリンク型(/MDd)、
何も付いていないのがCRTダイナミックリンク型(/MD)
その他命名規則の詳細はこちら
http://www.boost.org/doc/libs/1_48_0/more/getting_started/windows.html#library-naming
745デフォルトの名無しさん:2011/11/21(月) 07:27:35.14
実際スタティックリンクの方が速いな
ダイナミックリンクはどうしてもコールゲートを通すのでリングレベルの移行など
CPUで処理すべき仕事が多く相当速度が落ちる

速度とサイズのトレードオフか
でもDLLやsoもメモリ内に読み込むのでサイズが小さいとも言えないし
同時に走らせるプログラムが多くなってきた時だけ違う
746デフォルトの名無しさん:2011/11/21(月) 07:44:52.93
747デフォルトの名無しさん:2011/11/21(月) 11:36:28.84
dllでコールゲート通らないし
しかもリング変えるのにコールゲートとかいつの話だ
748デフォルトの名無しさん:2011/11/21(月) 12:13:15.70
聞いたことある単語を適当に並べてみただけって感じの文だな
749デフォルトの名無しさん:2011/11/21(月) 12:14:32.91
ダイナミックリンクでコールゲートを通すような処理系を教えてくれよ
750デフォルトの名無しさん:2011/11/21(月) 16:19:33.53
リンク時の最適化が効かない以外はあんまかわらんかね
751デフォルトの名無しさん:2011/11/24(木) 00:57:26.19
コールゲートが必要なのはカーネルだけだろ。
カーネルの場合は、ゲートとなるアドレスが記述されていて、
そこへ飛ぶとメモリー空間がユーザー空間からカーネル空間へ変わる。
通常のDLLは、ユーザー空間にコードマッピングして、関数テーブルを
そこのアドレスに書き換えてるだけ。
752デフォルトの名無しさん:2011/11/24(木) 21:03:45.95
助けてください ><
boost::tupleのメンバ関数get<N>をboost::lambda::bindで束縛するにはどうしたらいいでしょう?

下記のコードでは、

error: invalid static_cast from type ‘<unresolved overloaded function type>’ to
type ‘int (*)(const boost::tuples::tuple<int, int, boost::tuples::null_type, boost::tuples::null_type, ....

と言われてしまいます。

get<N>のテンプレート周りかなと思うのですが。。

using namespace boost::lambda;
int r;

r = (bind(
static_cast<int(*)(const boost::tuple<int,int>&)>( &boost::tuple<int,int>::get<0> ),
_1)
) (boost::tuple<int,int>(1,1));
753デフォルトの名無しさん:2011/11/24(木) 21:43:07.29
static_cast<const int&(boost::tuple<int,int>::*)()const>(&boost::tuple<int,int>::get<0>)
メンバ関数がどんな型になるか勉強しなおしたほうがよさそう
754デフォルトの名無しさん:2011/11/24(木) 22:03:39.03
>>753
ありがとうございます!
いろいろとカン違いしていました。
返り値型がconst int &というのも言われてみればなるほどで、
自分はまだまだ勉強が足りないですね。。
755デフォルトの名無しさん:2011/11/25(金) 00:07:39.70
read_xmlでunicodeが読めないのですが仕様ですか?
引数にマルチバイト文字しか受け付けないし、
文字コード宣言があるXML文書のパースを
ロケール指定して使うproperty_treeに依存するとかあほですか
756デフォルトの名無しさん:2011/11/25(金) 16:11:45.03
yes
757デフォルトの名無しさん:2011/11/25(金) 22:45:17.23
boost.spirit.qiでセマンティックアクションから、
一致したruleのrangeを示すiteratorが欲しいのですがclassicを使うしか方法はないのでしょうか?
例えば、以下の様にしたいです。

void action(Iter first, Iter last){ ... }
//...
(char_('(') >> *char_('0') >> char_(')'))[action];
758デフォルトの名無しさん:2011/11/25(金) 22:48:13.14
ptreeはutf8一択と心に決めて使うものだし
759デフォルトの名無しさん:2011/11/26(土) 13:15:59.82
tupleってfusionよりメリットある部分あるの?
760デフォルトの名無しさん:2011/11/26(土) 15:08:01.25
機能が少ない分全貌を把握しやすくてとっつきやすい。
TMPに馴染みのない人がfusionの説明見たら引くでしょ。
761デフォルトの名無しさん:2011/11/26(土) 20:56:08.16
そしてtupleのソースコードを読んで引く
762デフォルトの名無しさん:2011/11/26(土) 20:58:58.39
俺なんかanyですらやや引きだぜ
763デフォルトの名無しさん:2011/11/26(土) 21:23:12.42
any使えて嬉しいことって人生で一度でもあればいいほうだよね
764デフォルトの名無しさん:2011/11/26(土) 21:25:13.00
>>753
オレオレ言語作るときに使えないか期待している。
しかし、まだ俺にそのスキルはない。。。
765デフォルトの名無しさん:2011/11/27(日) 00:43:23.40
ヘッダをプリコンパイルヘッダーに突っ込んでも遅い。
みんなどうやってんの?
766デフォルトの名無しさん:2011/11/27(日) 00:45:44.67
PCを買い替える
767デフォルトの名無しさん:2011/11/27(日) 00:49:14.99
それどころかヘッダファイルをRAMDISK上に置いても遅い
極限までOCするとちょっと速くなる
結局並列ビルドが効く様な構成にしてその上でクロック周波数を極限まで上げるしかない
後はメモリアクセス速度とCPUのキャッシュ容量も効いてくるかもな
768デフォルトの名無しさん:2011/11/27(日) 02:26:15.97
boostのヘッダー1個、boostを使うソース1個でも十分遅いからな。
769デフォルトの名無しさん:2011/11/27(日) 08:09:02.14
64bitにする
770デフォルトの名無しさん:2011/11/28(月) 09:48:46.81
多倍長整数型の一桁ずつをint型の配列に入れるために、
多倍長整数型をまずstringに代入し、一桁ずつの分割をして、それをboostでint型に変換してみようとしています。
つまり、charを使わないで
多倍長整数→string→string一桁ずつ→int
の変換をしたいのです。
お尋ねしたいのが、string→string一桁ずつの変換をどのように行ったらいいのかということなんです。
もしわかる方がいらっしゃるなら教えていただけると嬉しいです。
771770:2011/11/28(月) 09:55:53.46
>>770に補足で、言語はc++です。
772デフォルトの名無しさん:2011/11/28(月) 10:14:46.90
基数のべき乗で割ったあまり使えば?
773デフォルトの名無しさん:2011/11/28(月) 10:16:56.88
>>772
言われてみればそうやれば簡単にできそうですね
774デフォルトの名無しさん:2011/11/30(水) 03:44:49.48
OpenMPのような並列ライブラリってありますかね?
素直にboost::threadですかね・・・

boost Proの全自動インストーラーのほうが便利ですね
入れるなら
775デフォルトの名無しさん:2011/12/02(金) 21:24:52.86
boost.fusionあたり使ってstd::vectorだろうが構造体だろうが
かたっぱしからオブジェクトのメンバーをprintしてくれる
debug関数みたいなのないですか
776デフォルトの名無しさん:2011/12/03(土) 13:04:42.91
grep のことかな
777デフォルトの名無しさん:2011/12/03(土) 18:27:57.73
デバッガでウオッチすればいい
778デフォルトの名無しさん:2011/12/03(土) 19:10:34.41
シリアリズしてstd::cout
779デフォルトの名無しさん:2011/12/04(日) 01:45:36.46
シリアライズのコードぱくれば作れそうだな
780デフォルトの名無しさん:2011/12/07(水) 12:42:57.64
boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(1));
boost::this_thread::sleep(boost::posix_time::milliseconds(1));
↑ふたつって、意味は同じ?
それとも、下側のソースは、基準になる現在時刻がないから、最低の時間(オーバヘッド)のsleepになる?
どういうルールでどのテンプレートが利用されるのかが理解できないです。
よろしくおねがいします。
…boostスレに書いたほうがいいです?(過疎ってるみたいなのでこちらに書いてみました。)

>【初心者歓迎】C/C++室 Ver.76【環境依存OK
>>836 @ 2011/11/30(水) 10:57:59.02
でも同じ質問を書きましたのでマルチです。1week経ったので引っ越しました。
781デフォルトの名無しさん:2011/12/07(水) 15:53:52.11
boostのメルセンヌ・ツイスタを自作のアプリケーションに使用した場合にも
「著作権表示、ライセンス条文、無保証の旨」を書かないと駄目なんでしょうか?
それとメルセンヌ・ツイスタに限らずboostを利用する際にライセンスに関わる注意点はありますか?


782デフォルトの名無しさん:2011/12/07(水) 16:34:29.67
>>781
random/mersenne_twister.hpp を見るとライセンスがhttp://www.boost.org/LICENSE_1_0.txtであるとわかる
バイナリ配布にあたってはライセンス同梱は必要ないようだが、
mersenne_twister.hpp込みでソースを配布するならライセンス表示、同梱は必要だろう。
これはboost全体に言える。
783デフォルトの名無しさん:2011/12/07(水) 16:44:24.56
>>782
ありがとうございます
ヘッダを見ればよかったんですね
784デフォルトの名無しさん:2011/12/07(水) 20:15:47.01
>>780
> boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(1));
> boost::this_thread::sleep(boost::posix_time::milliseconds(1));
> ↑ふたつって、意味は同じ?
意味は違うがよっぽど変な状況でないかぎり結果は同じ。

this_thread::sleepには指定した日時まで待機するのと指定した期間の間待機するのと二種類ある。
上側は指定した日時(たとえば01時23分45秒まで。上の例だと現在時刻の1ミリ秒後)まで待機するもので
下側は指定した期間(たとえば1秒間。上の例だと1ミリ秒間)待機するもの。
どっちになるかは引数の型で決まる。
785デフォルトの名無しさん:2011/12/15(木) 07:47:16.25
Boost.Regex って、UTF8 テキストに対して使えますか?
例えば、"." を検索すると”あ”等のマルチバイト文字にマッチするのでしょうか?
786デフォルトの名無しさん:2011/12/15(木) 07:48:07.75
使えない
787デフォルトの名無しさん:2011/12/15(木) 12:25:20.07
ダメじゃん
788デフォルトの名無しさん:2011/12/15(木) 13:51:07.46
馬鹿には無理
789デフォルトの名無しさん:2011/12/16(金) 06:51:38.22
Boost.Anyなんて使うならLuaを組み込んだほうがまし
790デフォルトの名無しさん:2011/12/20(火) 03:53:05.45
variantやanyを使って実行速度遅くするなら
工夫してunion使った方がマシな気がする
実行速度を落さないunionの拡張はboostにないのだろうか
791デフォルトの名無しさん:2011/12/20(火) 08:49:08.27
>>790
素の union で何が不満なの?
792デフォルトの名無しさん:2011/12/20(火) 10:41:49.00
unrestricted union使うぐらいならvariantでいいや
793デフォルトの名無しさん:2012/01/03(火) 13:59:33.58
boost::array<int,5> arr = { {1,2,3,4,5} };


arrayで要素数を省略した初期化って現状不可能ですか?

794デフォルトの名無しさん:2012/01/03(火) 17:48:55.48
微妙に意味がわからないがテンプレートをインスタンス化するときの<int,5>の5の省略は不可能(おそらくずっと)
795デフォルトの名無しさん:2012/01/03(火) 18:12:16.28
要素数の後決めしたいとか、array使う意味が皆無になるんだが。
796デフォルトの名無しさん:2012/01/03(火) 18:51:36.87
やっぱり不可能ですか、、、
後決めしたいというより、ただただ書くのを省略したいだけなんですがね。。。
797デフォルトの名無しさん:2012/01/03(火) 19:16:16.71
>>796
#include <iostream>
#include <boost/array.hpp>
#define ARY(t, n, ...) \
static const t n ## _[] = {__VA_ARGS__}; \
boost::array<t, sizeof (n ## _) / sizeof (n ## _[0])> n = {{__VA_ARGS__}}
int main()
{
ARY(int, arr, 1, 2, 3, 4, 5);
std::cout << arr[2] << std::endl;
return 0;
}

省略できてもあまり嬉しくなかった。
798デフォルトの名無しさん:2012/01/03(火) 19:45:18.04
int a[] = {1, 2};
のような事をしたかったってことなんだろうね
799デフォルトの名無しさん:2012/01/03(火) 20:56:46.18
まさにそれをしたかった。なぜそうしなかったかというと、境界チェック付きの
配列を使いたかったから。
800デフォルトの名無しさん:2012/01/03(火) 21:55:20.06
別スレで同じこといってるやつみたけど
結局boost使うことにしたのかな
801デフォルトの名無しさん:2012/01/06(金) 12:54:36.97
ublasってopencvより遅い気がするのだけど気のせい?
ublasの方が速い場合ってエクスプレッショナルテンプレートが効く場合だけ?
gccのコンパイルオプションで同じぐらいの速度にならないものだろうか
802デフォルトの名無しさん:2012/01/06(金) 14:50:46.10
>>797
どうでもいいがプリプロセッサの
可変長引数でコンパイルエラー
世の中C99対応のコンパイラばかりではない
803デフォルトの名無しさん:2012/01/06(金) 14:54:39.38
>>801
分岐の少ない問題でOpenCVがublasごときに負けたら
OpenCVの存在意義が無くなると思うが?
OpenCVはGPUを使って数百の並列実行してるんだからな。
804デフォルトの名無しさん:2012/01/06(金) 21:00:18.40
lexical_cast ってスレッドセーフ?
805デフォルトの名無しさん:2012/01/07(土) 20:45:04.63
corutineはそろそろ正式リリースしてくれないものか
806progress_display:2012/01/08(日) 15:36:56.20
明けましておめでとうございます。
挨拶が遅くなり申し訳ありませんが、今年も何卒宜しくお願いいたします。
807デフォルトの名無しさん:2012/01/09(月) 13:20:18.76
>>806
開けましておめでとうございます。

ところで、後でちょっとお話がありますので、
会議室を1時間くらい予約しておいてください

よろしく
808progress_display:2012/01/09(月) 14:36:31.42
>>807
やだ課長、1時間は短いですよぉ
809Regex:2012/01/09(月) 17:52:20.64
>>808
打ち合わせどうだった?
何言われたの??
810boost::tuple:2012/01/09(月) 20:23:36.80
さてと、C++11への引っ越しを始めるとするか・・・。
811デフォルトの名無しさん:2012/01/09(月) 20:26:00.89
corutineがいろいろ改変されたのあって
どれが一番いいのかわからない
x86 amd64 のwindows linux mac で動けばいいのだけど
812progress_display:2012/01/13(金) 23:37:40.00
@typeに登録しておこう(´;ω;`)
813デフォルトの名無しさん:2012/01/13(金) 23:51:00.44
shared_ptrってスレッドオフしてallocate_sharedすればintrusive_ptrとパフォーマンスたいして変わらんっすよね?
814デフォルトの名無しさん:2012/01/14(土) 05:42:46.00
shared_ptrのサイズはポインタ二つ分。
共有管理オブジェクトにはweak_ptr用のカウンタもある。
大した違いかどうかは場合による。
815デフォルトの名無しさん:2012/01/14(土) 09:35:55.06
メモリ intrusive_ptr
生成破棄 intrusive_ptr
参照カウント増減 shared_ptr
816デフォルトの名無しさん:2012/01/18(水) 15:11:46.99
ttp://www.boost.org/doc/libs/1_48_0/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html
自分で定義した(例えば多倍精度浮動小数点数)型を数学関数内部でも使える様にするにはどうすればいいですか?
817デフォルトの名無しさん:2012/01/18(水) 23:51:54.60
ttp://www.boost.org/doc/libs/1_48_0/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html
やったことはないがその型に対してこれ↑を満たすように必要なものを自分で書けばboost::mathでその型を使えるんだろ
818デフォルトの名無しさん:2012/01/20(金) 03:32:32.30
void func2( boost::array<int, 3> & c)
{
c.assign( 0 );
}
error: invalid initialization of reference of type ‘boost::array<int, 3ul>&’ from expression of type ‘const boost::array<int, 3ul>’

arrayを参照引数にできないんだっけ?
819デフォルトの名無しさん:2012/01/20(金) 07:59:21.04
>>818
おまいはエラーメッセージも読めんのか?
820デフォルトの名無しさん:2012/01/20(金) 08:58:09.76
ああ!constついてました
821デフォルトの名無しさん:2012/01/21(土) 05:12:42.79
boost::fusion::list a の先頭要素が
a.begin()
で参照できないのがちょっと気持ち悪い
822デフォルトの名無しさん:2012/02/01(水) 23:49:52.05
bjamの利点がわからないのですが、autoconfとかを用いずbjamを利用してるのは何故でしょうか?
823デフォルトの名無しさん:2012/02/02(木) 00:18:21.01
POCOとほとんど同じ機能持つライブラリ
ありませんか?
824デフォルトの名無しさん:2012/02/02(木) 16:01:00.05
ubuntuでboost入れたら一瞬でインスコ完了で使えるようになった
一方、Windowsではサイズがでかい上にビルドにかなり時間がかかる。
この差はなんでつか?ちなみにWindowsではVCで使う感じです
825デフォルトの名無しさん:2012/02/02(木) 16:32:49.79
apt-get とかでパッケージをインストールしたんのなら、既にバイナリが含まれてるからだろ。
826デフォルトの名無しさん:2012/02/02(木) 17:06:15.79
なるへそ
Windowsでは全部落としてきて自分でビルドしたからか
827デフォルトの名無しさん:2012/02/03(金) 01:20:40.57
>>823
なんでpoco不可?
828デフォルトの名無しさん:2012/02/03(金) 08:07:34.00
ポコチン
829デフォルトの名無しさん:2012/02/05(日) 22:05:47.61
ちんぽこ
830デフォルトの名無しさん:2012/02/06(月) 23:10:55.09
ちんぽこ商用ライセンスだと制限きついしなぁ
831デフォルトの名無しさん:2012/02/09(木) 00:01:35.59
VC2010 Essentialsを使っています。
boost::serializationを使うと、アプリケーションを作成するためのプロジェクトでも
.libと.expを作ってくれるようになるのですが、これを抑制する方法はないでしょうか?
832デフォルトの名無しさん:2012/02/09(木) 00:02:11.18
ちんぼ
833デフォルトの名無しさん:2012/02/09(木) 01:54:03.78
っぽ
834デフォルトの名無しさん:2012/02/09(木) 02:07:40.85
ぬるぽ
835デフォルトの名無しさん:2012/02/09(木) 12:57:55.72
>>831
前に別のライブラリで同じ症状に遭ったことがあるけど、解決策見つからず

本当にどうしても嫌なら、ビルド後のプロセスでdelするとか・・・
836デフォルトの名無しさん:2012/02/09(木) 15:29:48.48
libが生成されるってことはエクスポートテーブルもできてるんだから
ファイルを消せばいいってもんじゃないだろ

どこかで間違えて__delcspec(dllexport)が定義されてるんだろうね
837デフォルトの名無しさん:2012/02/09(木) 18:34:24.22
serializationがらみで
ttp://codepad.org/bp6RCbxw

boost::shared_ptrのシリアライズコードを改造して、std::shared_ptr用の物を書いたのですが、
コレにカスタムデリータのサポートを追加するいいアイデア無いでしょうか?
838デフォルトの名無しさん:2012/02/09(木) 22:45:06.20
poco高すぎだろ
pro買わないとネットワーク系全滅だし
839デフォルトの名無しさん:2012/02/10(金) 12:34:22.38
>>824
linuxでC++やるときってエディタ何使うんですか
emacsのタグジャンプの設定で苦労した覚えが
今はもっといいのあるんだろうか
840デフォルトの名無しさん:2012/02/10(金) 17:27:39.08
現在Boostのthreadを使って、ワークパイルを管理するクラス、各スレッドに付随するクラス(ワーカーとします)を作っています。
ワーカーは仕事を一通り終えた後、管理クラスが終了許可を出すまで「待ち」を行うようにするため、mutexとconditionを用いています。
管理クラスが終了許可を出せば「待ち」が解除されてスレッドとして動作していた関数を完了するのですが、待ちが解除されるときにmutexにロックがかけられてしまいます(それより前でmutexにロックはかけていない)。
そのため、ワーカーが破棄されるときにmutexでunlock()関数を使わないとエラーが生じます。

ワーカーで行いたいことは通知が来るまで待つだけで、排他制御の必要はありませんが、わざわざunlock()を使わなければならないのでしょうか。
イメージ的にはconditionにmutexを渡さないwait()があれば期待通りになりそうなのですが、それは存在しません。

よろしくお願いします。また私の解釈に間違いがあれば指摘いただけると幸いです。
841デフォルトの名無しさん:2012/02/11(土) 16:10:52.17
待つだけでいいならミューテックスでもいいのでは…そういう話ではない…?
#include <iostream>
#include <boost/thread.hpp>
#include <unistd.h>
void f( boost::mutex* guard )
{
std::cout << "worker: working" << std::endl;
std::cout << "worker: waiting until the mutex was unlocked" << std::endl; guard->lock();
std::cout << "worker: finished" << std::endl; guard->unlock();
}
int main()
{
boost::mutex m;
std::cout << "main: lock a mutex" << std::endl; m.lock();
std::cout << "main: create a worker" << std::endl; boost::thread worker(&f,&m);
std::cout << "main: sleeping 3 seconds" << std::endl; sleep(3);
std::cout << "main: unlock the mutex" << std::endl; m.unlock();
std::cout << "main: waiting for join" << std::endl; worker.join();
std::cout << "main: finished" << std::endl;
return 0;
}

$ ./sample
main: lock a mutex
main: create a worker
main: sleeping 3 seconds
worker: working
worker: waiting until the mutex was unlocked
main: unlock the mutex
main: waiting for join
worker: finished
main: finished
842デフォルトの名無しさん:2012/02/11(土) 17:00:53.33
>>841
返信ありがとうございます。
管理側は仕事追加・終了許可時に、ワーカーのインスタンスそれぞれのメンバー変数であるconditionでnotifyすることで待ちを解除させています。
ワーカーは、管理側が仕事を追加すると通知を受けて仕事を開始するためにwhileループ内で待ちを行っています。(終了許可待ちと仕事待ちは共通のconditionとmutex)
void Worker::run() {
 while (true) {
   TaskData* task = NULL;
   while (_taskBag->getTasks(&task)) {
     job(task);
   }
   if (_finishable && _taskBag->numTasks() == 0) {
     _mtx.unlock();
     break;
   }
   _cond.wait(_mtx);
 }
}
ワーカーが複数いるので、mutexロック解除で待ち解除の通知を行うと、「仕事追加→いずれかのワーカーが仕事に着手」の後にmutexの所有権が管理側に戻ってこないかもしれないので難しそうです。
まぁ実装の仕方次第でmutexだけでもいけそうですが。

あとよくよく考えると_cond.wait(_mtx)の時に暗黙的に_cond.wait(mutex::scoped_lock(_mtx))のようになっているんでしょうか。
となると、ロックがwait解除後に再度かけられてしまうのはある意味当たり前ですね。

申し訳ありません。簡潔な文章で伝えるのがもの凄く難しいですねw
843デフォルトの名無しさん:2012/02/12(日) 07:46:49.88
waitにはmutexをロック済みのunique_lock渡す必要がある。直接mutexをwaitの渡せているのはたぶんVCのせい。
unique_lockのローカル変数を作ればunlockを呼び出す必要は無い。
condition_variableは他の変数と一緒に使うことが前提。
waitはnotifyの通知以外でも誤って解除されるのでbool変数などと合わせて使わないとだめ。
bool変数で確認するからにはmutexでの排他制御が必要。
844デフォルトの名無しさん:2012/02/13(月) 09:57:29.58
>>843
ありがとうございます。
排他制御が要らなく見えていたので、待ちの実現だけにcondition、mutex両方を使うことに冗長さを感じていたのですが、conditionはそもそも単体では使わないものなんですね。

ちなみに_cond.wait(_mtx)の記述はXcode4.2でもできています。C++の引数1つの場合の暗黙的なコンストラクターですね。
こういう場合に暗黙的にできてしまうと見落としてしまう場合があって危険だと感じます。
845デフォルトの名無しさん:2012/02/13(月) 11:57:41.20
>>844
それじゃあboostのバージョンが低いだけじゃないの?一時変数は非const参照に拘束できない。
846デフォルトの名無しさん:2012/02/13(月) 19:45:57.66
>>845
Boost 1.48です。ちなみに上記の_mtxはワーカークラスのメンバー変数です。
847デフォルトの名無しさん:2012/02/13(月) 19:55:58.52
>>846
そうか。あとはコードを実際に追わないと分からないわ。
848デフォルトの名無しさん:2012/02/14(火) 07:34:07.70
boost::asioの非同期通信でhttpクライアントつくろうと思ってasync_read_someでデータ取ってるんだけど、何故か5kbくらいでデータが途中で切れちゃうんだ
誰かピンとくる人居ないか…助けてくれ
849デフォルトの名無しさん:2012/02/15(水) 01:04:19.29
>>848
async_read_until使えば?
850デフォルトの名無しさん:2012/02/15(水) 15:40:45.11
今作成中のプログラムに<boost/thread.hpp>と<boost/thread/condition.hpp>をインクルードすると、システムのlocale_facets.tccとboostのshared_count.hppにおいて大量のエラーが発生します。
これらのファイル自体には問題は無く、何らかの依存関係でエラーが出ているんだろうということは想像がつくのですが、全く原因がわかりません。

何かこのような現象について心当たりのある方は居られないでしょうか。

Xcode4.2で、ヘッダーサーチパスには/opt/local/includeを(boostはこの下にインストール)設定しています。ライブラリーファイルのリンクも行っています。

よろしくお願いします。
851デフォルトの名無しさん:2012/02/15(水) 19:46:15.26
>>850ですが、自己解決しました。申し訳有りません。

原因はboostを使っているソースファイルとは別のファイル内で定義した「swap」という名称のマクロでした。
それぞれのソースファイルを最終的にmain関数で参照する形となっていたためにboost内の何かとマクロ名が衝突したようです。

自分で定義したswapをユニークな名称に変更することで解決しました。

今後どなたかの参考になれば幸いです。
852デフォルトの名無しさん:2012/02/15(水) 19:49:52.51
こらたかし!マクロは全部大文字にって言ったでしょ!
853デフォルトの名無しさん:2012/02/15(水) 21:30:41.91
さすがにswapをマクロ名にするのはないな
854デフォルトの名無しさん:2012/02/15(水) 22:26:50.21
cpp側なら問題なかったのですが、実装も含めたヘッダーに書いてしまったのが盲点の原因でした...
855デフォルトの名無しさん:2012/02/15(水) 22:40:49.07
気が、狂っとる
856デフォルトの名無しさん:2012/02/15(水) 22:45:19.13
君は優秀な人材だぜひマイクロソフトに就職しなさい
857デフォルトの名無しさん:2012/02/15(水) 22:53:13.67
>cpp側なら問題なかったのですが
よくねぇよ。
規格にちゃんと、

「標準ライブラリーのヘッダーをincludeする翻訳単位は、全標準ライブラリーヘッダーで宣言されている名前を#defineもしくは#undefしてはならない。」

と書いてある。
だから、ひとつでもどれか標準ライブラリーのヘッダーをincludeしたならば、swapという名前は#defineも#undefもできない。
858デフォルトの名無しさん:2012/02/15(水) 23:06:42.94
min
max
859デフォルトの名無しさん:2012/02/15(水) 23:27:50.00
>>857
swapって名前標準ライブラリーにあるの?
860デフォルトの名無しさん:2012/02/15(水) 23:29:27.19
あぁalgorithmにあるのか。使ったこと無かったわ。
861デフォルトの名無しさん:2012/02/15(水) 23:29:55.03
嘘だろ…
862デフォルトの名無しさん:2012/02/15(水) 23:34:09.02
iostreamをインクルードするだけで使えるというのに・・・。
863デフォルトの名無しさん:2012/02/15(水) 23:44:50.77
>>859
名前だぞ名前。
クラスのメンバーにも等しく適用されると何故わからないんだ。
多くの標準ライブラリのクラスがswapという名前のメンバーを持っているのを知らないのか。
864デフォルトの名無しさん:2012/02/16(木) 00:11:46.32
>>858
MSは禿にごめんなさいしないといけないよね
865デフォルトの名無しさん:2012/02/16(木) 03:25:04.66
C++にテンプレートが無い様な時代から既に用意されてたんだから
後出しのハゲが謝りお願いすべき
866デフォルトの名無しさん:2012/02/16(木) 03:49:30.66
小文字が入ってるマクロ名は紛らわしいから
コンパイラが警告吐いてくれたらいいのにな
867デフォルトの名無しさん:2012/02/16(木) 07:22:59.71
assertみたいなマクロ実装関数で警告が出ることになるか
ところでassertをキーワードに昇格させて定数式なら
コンパイル時エラー出す設計にはできなかったのかな
そうするとstatic_assertと書き分けなくて良いような気もするけれど
868デフォルトの名無しさん:2012/02/16(木) 12:13:03.95
例によってCとの互換性が
869デフォルトの名無しさん:2012/02/16(木) 12:38:53.66
staticの方はともかくassertってあんまし使わなくねーか?
870デフォルトの名無しさん:2012/02/16(木) 12:38:56.08
iOS開発でObjCのコンテナクラス類使わずにどうもSTL/boost多用してしまうんだけど
果たしてこれはよくないのかどうか・・・
871デフォルトの名無しさん:2012/02/16(木) 15:37:52.34
threadのwaitってどこのサイトみても

while(!ready) {
 cond.wait(lock);
}

のようになっていますよね。これを起こす場合には
ready = true;
cond.notify_all();
とすると思うのですが、while分の!readyを判定してからcon.waitをかけるまでの間に上記の起こすコードが呼ばれた場合には、動かなくなってしまう気がします。

これを回避する方法などあるのでしょうか。timed_waitでしょうか。
872デフォルトの名無しさん:2012/02/16(木) 18:47:36.71
>>871
cond.wait(lock);でロックを要求している素晴らしい設計を無視するなよ
873デフォルトの名無しさん:2012/02/16(木) 19:01:27.73
>>872
ありがとうございます。
よくよく考えてみるとwhile文の前と起こすコードの先頭でミューテックスをロックすればいいんですね。
今まで引っかかっていたものがスッキリとれました!
874デフォルトの名無しさん:2012/02/16(木) 21:10:13.56
>>872,873を理解するまで1時間かかってしまった
875デフォルトの名無しさん:2012/02/27(月) 18:51:24.80
1.49出たのに反応なしか
876デフォルトの名無しさん:2012/03/01(木) 01:31:34.53
小学生並みの発想だな
877デフォルトの名無しさん:2012/03/04(日) 14:05:48.47
中学生並みの反応だな
878デフォルトの名無しさん:2012/03/06(火) 21:26:03.54
大学生並の考察だな
879デフォルトの名無しさん:2012/03/06(火) 22:17:31.08
院生並の皮肉だな
880デフォルトの名無しさん:2012/03/06(火) 23:36:14.79
社会人並みの判断だな
881デフォルトの名無しさん:2012/03/06(火) 23:51:07.07
年金生活者は余裕だな。
882デフォルトの名無しさん:2012/03/07(水) 00:00:44.76
病院生活並の苦労だな
883デフォルトの名無しさん:2012/03/07(水) 09:58:05.77
世捨て人並の達観だな
884デフォルトの名無しさん:2012/03/07(水) 18:03:57.16
銀河皇帝並みの独断だな
885デフォルトの名無しさん:2012/03/10(土) 00:18:09.27
原子核級の大志だな
886デフォルトの名無しさん:2012/03/10(土) 14:27:31.51
風俗嬢並の偏屈だな
887デフォルトの名無しさん:2012/03/11(日) 00:11:07.28
俺並みの性欲だな
888デフォルトの名無しさん:2012/03/11(日) 00:46:18.10
風説の流布
889デフォルトの名無しさん:2012/03/11(日) 02:29:45.81
痛風の呂布
890デフォルトの名無しさん:2012/03/11(日) 09:45:46.39
風呂の風俗
891デフォルトの名無しさん:2012/03/11(日) 18:41:57.17
温泉の効能
892デフォルトの名無しさん:2012/03/11(日) 20:16:36.14
駄レスがスレをboostする!
893デフォルトの名無しさん:2012/03/11(日) 23:11:17.86
歌舞伎町の893
894デフォルトの名無しさん:2012/03/11(日) 23:36:25.70
ゲスの極み
895デフォルトの名無しさん:2012/03/11(日) 23:45:41.65
お肉の厚み
896デフォルトの名無しさん:2012/03/12(月) 00:07:56.91
boostってC++11の要素は取り込みはじめてるの?
897デフォルトの名無しさん:2012/03/12(月) 00:33:35.99
C++11がBoostを取り込んだの間違いだろ
Boost.Moveのことなら知らん
898デフォルトの名無しさん:2012/03/12(月) 00:37:49.12
Boost.Chrono とかは C++11 からの逆輸入。
899デフォルトの名無しさん:2012/03/12(月) 00:49:09.56
既存コンパイラで動くようにしてくれてるならいいことだ
900デフォルトの名無しさん:2012/03/13(火) 00:46:51.29
◆ 便利な今までに出た風説の流布一覧
伝説の流川
伝説の呂布
解説の掛布
風疹の漁夫
ふーてんの流浪
妖鳥の流布
入れ墨の鯨布
風の谷の呂布
骨折に湿布
聖教新聞の配布
電設の鈴木
通風の湿布
テンセルの毛布
テンソルの分布
ピンサロの主婦
風雪ながれ旅
風雪の露天風呂
風俗で炉利
風俗の幕府
風てんのトラ
温泉の掛川
風の谷のナウシカ
季布の一諾
空席の椅子
秀策の棋譜
特攻の拓
ピンフの20符
901progress_display:2012/03/19(月) 23:18:49.04
最近おれっちの話が出来ていないが、C++11先取りしておれっちを実装するコンパイラってまだ出てきてないの?
902デフォルトの名無しさん:2012/03/24(土) 20:20:56.52
serialization を使ったときに、exe ファイルにいろんなシンボルがエクスポートされるのを防ぐ方法ってないでしょうか?
903デフォルトの名無しさん:2012/03/25(日) 11:34:46.67
仕様です
>>901
あれ、あなた風の噂で左遷されたって噂を聞いてたけど・・・?
boost::optional<int> test () { return 1; }

void func {
if (auto i = test() && i.get() != -1) {
return ;
}
}
これコンパイル通らないけどどうして?
funcの定義
void func () {
      ↑
908デフォルトの名無しさん:2012/04/11(水) 21:59:09.93
>>905 エラーメッセージ見ろよ。
909デフォルトの名無しさん:2012/04/12(木) 00:58:06.25
>>906-908
そこじゃなくて
>if (auto i = test() && i.get() != -1) {
俺が言いたいのはこっちのほうだった
auto i = test()この段階で初期化されてるはずなんだけどどうして無理なんだろう
910デフォルトの名無しさん:2012/04/12(木) 01:05:06.21
>>909
規定された条件部の文法↓にマッチしないから。
condition:
  expression
  attribute-specifier-seq/opt decl-specifier-seq declarator = initializer-clause
  attribute-specifier-seq/opt decl-specifier-seq declarator braced-init-list
911デフォルトの名無しさん:2012/04/12(木) 01:25:55.07
>>910
そもそも規格上無理なのね
ありがとう
912デフォルトの名無しさん:2012/04/21(土) 16:18:52.52
テンプレートクラスのメンバ関数を、
boost::threadとboost::bindで呼び出して、別スレッドで動かしたいのですが
うまくいきません。ご教授願います。

template<class T>
class TestClass : public T
{
public:
TestClass(void) : T() {}
};

class TestBase
{
public:
void print(TCHAR *str){ cout << str << endl; };
};

typedef TestClass<TestBase> MyTestClass;

int _tmain(int argc, _TCHAR* argv[])
{
TCHAR *char str = _T("test");
MyTestClass myTestClass;
myTestClass.print(str); // 正常に動作

boost::thread myThread(boost::bind(&MyTestClass::print,str)); // ←コンパイルエラー
// c:\Program Files\boost\boost_1_47\boost\bind\mem_fn.hpp(333): error C2296: '->*' : 無効な左オペランドです。

}
913デフォルトの名無しさん:2012/04/21(土) 17:52:34.92
>>912
boost::bindでクラスのメンバ関数ポインタを拘束した場合、第一引数はそのクラスのインスタンス(かインスタンスのポインタとか)になる
boost::bind(&MyTestClass::print, myTestClass, str)
914デフォルトの名無しさん:2012/04/21(土) 18:08:58.52
>>913
ありがとうございます。無事にコンパイルが通りました。
915デフォルトの名無しさん:2012/04/21(土) 19:19:10.20
boost::threadを使って、メンバ関数ではなくて、
クラスそのものを別スレッドで動かしたい場合は、どのように指定すればよいでしょうか?
916915:2012/04/21(土) 20:04:05.95
boost::threadに渡せるのは関数ポインタだけなのかな?
boost::threadにクラスのコンストラクタを渡せば、そのクラスは別スレッドで動いてくれるのかと思ったけど
勘違いでしょうか?
917デフォルトの名無しさん:2012/04/21(土) 20:54:52.22
クラスが動くってなんだ?
・・・って関数オブジェクトのことか?
関数オブジェクトのインスタンスを渡せばそのoperator()を別スレッドで実行させることはできる
918デフォルトの名無しさん:2012/04/21(土) 21:32:08.83
>>916
具体的にどんなコードを書きたいのかここに出したほうが良いと思う。
919915:2012/04/21(土) 21:36:19.05
ウインドウクラスをクラス化したので、
そのクラスを別スレッドにして、プロシージャなどの処理をしたかったんです。

とりあえず、グローバル関数作って、その中でクラスのインスタンスを作って、
boost::threadでそのグローバル関数を呼び出す形にしてみました。
いちいち関数を作るのも面倒なので、無名関数でやってみようかな。
無名関数使ったことないけど。
920デフォルトの名無しさん:2012/04/22(日) 02:06:07.47
JavaやFlashで使われている、イベント/リスナーをC++で実現したいのですが、
boostを使ってできますでしょうか?
921デフォルトの名無しさん:2012/04/22(日) 02:13:52.12
>>920
イベントはシステム側の要求でとある時に「この処理をどうします?」ってプログラマに聞くことなのでそれは可能。
で、リスナは結局デリゲートかなんかに処理をキックする機構なので、
例えばバインドなどでインスタンス関数をイベントに渡したりしたとして、そのインスタンスの寿命がなくなって無効になるタイミングをコントロール出来れば可能だろう。

と、言うわけでできなくは無いけど、GC無いからそこをどうにかしないと難しいと思う。
922デフォルトの名無しさん:2012/04/25(水) 18:39:55.58
boost::graphについて質問です。
例えば、RPGゲームのマップ移動の最短経路を求めたいとします。
ただしマップを通過できるかどうかは条件があって、
・一定のキャラクターレベルを超えていないと通れない
・特定のアイテムを所有していないと通れない
などの条件があります。

私の考えたチープなやり方では、propertyでマップノードごとにRequireLevel、RequireItems
などを持たせて、
レベルによってグラフノードの書き換えをする関数、
DisableGraphByLevel(graph,characterInfo);
アイテムの有無によってグラフノードの書き換えをする関数、
DisableGraphByItem(graph,characterInfo);
などを処理してから、グラフに対して最短経路アルゴリズムを実行するという形です。

ただ、これだと処理後に毎回グラフを元に戻さないといけないし、
条件がより複雑なものが追加されるとこの形では対応できません。
それに第一、スマートではありません。
boostっぽく処理するにはどのように設計すればよろしいでしょうか?
923やんやん ◆yanyan72E. :2012/04/26(木) 02:13:10.40
http://www.boost.org/doc/libs/1_49_0/libs/graph/doc/dijkstra_shortest_paths.html
これの、distance_mapとか、distance_compareとかdistance_combineとかを
うまく定義すれば、グラフを書き換えなくても望みの動作をさせられるんでない?
924922:2012/04/27(金) 14:45:37.73
>>923
ありがとうございます。参考にして見ます。

boostを使うだけでなく、boostの中身を理解して、自分でアロケーターだとか
イテレーターとか作ってみたいと思っているのですが、
やんやんさんのように高度に詳しくなるには、どういった書籍やサイトがお勧めでしょうか?
よろしければ教えてください。
925デフォルトの名無しさん:2012/04/27(金) 18:41:03.11
document嫁
926デフォルトの名無しさん:2012/04/27(金) 22:27:30.41
>>905
if (auto i = test() && i.get() != -1) {

auto i = test() && i.get() != -1;

auto n = test() && i.get() != -1;
auto i = n;

多少構文をばらしてみれば無理なの解るだろ
927デフォルトの名無しさん:2012/04/27(金) 22:29:18.96
>>920
boost::functionとboost::bindと、なんかブロードキャストするクラスか
なんかがあったから、それ組み合わせりゃ楽にできるよ
928デフォルトの名無しさん:2012/04/27(金) 22:43:36.06
>>924
興味があるところから入っていって、もっと知りたいと思ったら勝手に詳しくなるもの
929デフォルトの名無しさん:2012/04/27(金) 23:47:34.23
>>920
boost::signals2はどうだろ
930デフォルトの名無しさん:2012/05/20(日) 00:07:51.46
<boost/thread.hpp>をインクルードすると下記のエラーが出ます。
どうすればいいでしょうか?
開発環境はVC++ 2008/2010 WinXPです
ソースコードは
http://metalphaeton.blogspot.jp/2011/04/boostthread.html
ここにあるものをそのまま使いました

1>c:\program files\boost\boost_1_47\boost\thread\win32\basic_timed_mutex.hpp(160) : warning C4793: boost::detail::basic_timed_mutex::unlock': ネイティブ関数としてコンパイルされました:
1> マネージ コードでサポートされていない組み込み型が見つかりました
1>c:\program files\boost\boost_1_47\boost\thread\win32\thread_primitives.hpp(314) : warning C4793: boost::detail::win32::interlocked_bit_test_and_set': ネイティブ関数としてコンパイルされました:
1> マネージ コードでサポートされていない組み込み型が見つかりました
1>main.obj : warning LNK4248: 未解決の typeref トークン (0100001F) ('boost.detail.win32._SECURITY_ATTRIBUTES') です。イメージを実行できません。
931デフォルトの名無しさん:2012/05/20(日) 00:31:14.34
>>930
本当にC++ですか?
932デフォルトの名無しさん:2012/05/20(日) 07:07:29.09
>>930
C++/CLIはC++じゃありません
933デフォルトの名無しさん:2012/05/21(月) 12:40:42.28
C++/CLIではthreadはうまく動かない

昔いろいろやってコンパイルだけはできるようになったけど、結局動くことはなかった
934デフォルトの名無しさん:2012/05/21(月) 13:07:13.78
C++/CLIはスレッド出来る。.NETとおなじ機能。
C#でも不可能と言うことになる。
935デフォルトの名無しさん:2012/05/21(月) 15:37:34.03
.NETのVMのスレッド用API機能とWin32のスレッド用API
混在してもまともに動く気がしない
936デフォルトの名無しさん:2012/05/21(月) 15:43:05.54
>>934
933の言っているのはboost threadの話。
boostスレだからboostは省いたんだろう。
937デフォルトの名無しさん:2012/05/25(金) 18:04:12.87
spirit::qiで質問なんですが、Attributeを捨てることって出来ないんでしょうか?
stringを返すruleを使うと、一番上までstringを返さないと存在しないAttribute(string)にアクセスしようとして
不正落ちしてしまいます。
パース中に使用し終わって、解析後にまで残す必要ないものなので捨てたいんですが・・・

あとついでに
>>757
http://www.boost.org/doc/libs/1_49_0/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html
このディレクティブを使えばiterator_rangeを受け取れるようです
938デフォルトの名無しさん:2012/06/03(日) 09:10:19.76
VisualStudio 2010 でboost::filesystem::directory_iterator の leaf() を使いたいんですが
Version 1.36 では使えません、どのバージョンなら使えますか。
もしかして、まだ、未対応ですか?
939デフォルトの名無しさん:2012/06/03(日) 09:14:06.80
2年前に1.42で使ってたきがした。
少なくてもその辺以降なら使えるんじゃないだろうか。

後は詳しい人よろしく
940デフォルトの名無しさん:2012/06/03(日) 09:26:54.17
leafって名前変わらなかったっけ?
941デフォルトの名無しさん:2012/06/03(日) 10:10:51.40
>>938 です
thx です。
ごめんなさい、バージョンを間違えていました。
boost_1_46_1 でした。が、leaf() って使えないんですね?

<boost/filesystem/fstream.hpp> を調べると
#if BOOST_FILESYSTEM_VERSION == 2
# include <boost/filesystem/v2/fstream.hpp>

# else
Visual Studio 2010 ではundef になっています?
leaf() ってboost/filesystem/v2/fstream.hpp に入っているようなので
どうしたら使えますか?
942デフォルトの名無しさん:2012/06/03(日) 10:26:23.13
自己解決しました
マクロできってやるだけで、V2使えました。
943デフォルトの名無しさん:2012/06/11(月) 18:33:25.03
leafはpathに名前変わった
ってもう見てないよね
944デフォルトの名無しさん:2012/06/11(月) 23:13:13.00
path().filename() だろ
945デフォルトの名無しさん:2012/06/14(木) 00:15:07.24
boost.intrusive

でコンテナに同じ要素を2つ以上登録するのってできないの?
lets boostの例で同じ要素追加しようとしたらエラーになった

lst.push_back(*pa);
lst.push_back(b);
lst.push_back(c);
lst.push_back(*pa); ここでおかしくなる
946デフォルトの名無しさん:2012/06/14(木) 11:28:56.17
auto d = *pa;
lst.push_back(d);

しよう
947デフォルトの名無しさん:2012/06/14(木) 11:38:00.10
>>945
できない。仕組み考えればわかるだろ
class hoge
{
hoge *prev;
hoge *next;
int value;
}
みたいな構造でprevやnextに自分自身のポインタを入れてリンクの終端を探して探索すれば無限ループになる
948デフォルトの名無しさん:2012/06/14(木) 21:50:25.15
boost::interprocess::shared_ptrってプロセス間通信用の名前空間に入ってるけど、
DLLの入出力なんかに使ったら、常にexeとdllで同じバージョンに保っとかないと
クラッシュするよね。なんで:interprocessの中に入ってんの?
949デフォルトの名無しさん:2012/06/14(木) 23:31:39.75
>>948

それをいうならshared_ptrに限らず異なる領域にあるモジュール間の通信に使うものは
双方のモジュールで互換性のあるものを使わないと問題がでるけど。
(必ずしも同じバージョンの同じライブラリを使う必要はない。そのほうが単純に楽で確実性が高いだけ)

それとBoost.'Interprocess'は名前どおりのプロセス間通信用に限定されたものでなくスレッド間通信用のライブラリでもある。
950デフォルトの名無しさん:2012/06/15(金) 22:18:05.21
>>949
やっぱダメなんやね。
外から見るとテンプレートで型安全。
内部ではvoid* で保持。
実装ははpimplでDLLに配置ってな感じで
自前でスマポ作らないと安全な仕様は無理か。
951デフォルトの名無しさん:2012/06/15(金) 22:45:31.07
両方自前ならknown/rquest versionのやり取りするだけじゃん?
952デフォルトの名無しさん:2012/06/18(月) 11:01:26.91
boostでLU分解で逆行列を作ってみた
2000x2000もそこそこの時間ででき
A*A-1もきっちり単位行列で帰ってきた。

教えてほしいのですが、
boostのLU分解は
マルチスレッド対応なのか
丸め誤差を内部できっちりやってるのでA*A-1が正確なのか
10000x10000はboost LU分解で対応できるのか?
953デフォルトの名無しさん:2012/06/19(火) 01:46:26.94
ソースみたら
954デフォルトの名無しさん:2012/06/19(火) 08:40:11.35
コンパイルオプションなしで
勝手にマルチスレッドになるなんてことあったかな
955デフォルトの名無しさん:2012/06/19(火) 15:32:24.79
thread-safeかどうかを聞いているのかもしれんぞ
956デフォルトの名無しさん:2012/06/20(水) 14:52:23.16
#pragma
で勝手に動的リンクするMSVC
があるのだから、同じようにマルチスレッドもやってくれたりするかも
957デフォルトの名無しさん:2012/06/20(水) 21:34:35.49
Open MPつかえばええがな
958デフォルトの名無しさん:2012/06/24(日) 20:50:34.16
似非関西弁キタ
959デフォルトの名無しさん:2012/06/24(日) 21:44:57.33
馬鹿には無理
960デフォルトの名無しさん:2012/06/25(月) 23:13:19.35
unique_ptrを戻り値とする場合、thisを返したかったらどうするの?
unique_ptr版enable_shared_from_thisってなくね?
961デフォルトの名無しさん:2012/06/25(月) 23:15:27.12
所有権を持ってるインスタンスに返してもらえばいい
962デフォルトの名無しさん:2012/06/27(水) 02:19:27.26
static関数
963デフォルトの名無しさん:2012/06/28(木) 20:18:55.33
>>961
ごめん間違えたわ。親クラスでunique_ptrを返すように定義してあった場合、
手持ちのshared_ptrを返すにはって事だった。
thisかどうかはどうでも良かったわ。
964デフォルトの名無しさん:2012/07/01(日) 05:26:32.68
vc2005+stlportでboost 1.50コンパイルすると
program_optionsでエラー吐くんだけど俺だけ?
965デフォルトの名無しさん:2012/07/01(日) 09:38:18.98
boost::spiritで四則演算できたぜ。意味無いだろ。
966デフォルトの名無しさん:2012/07/02(月) 19:08:47.83
xpressiveで(set= '+','-')のsetがVC++2010で「あいまい」ってエラー出て困ってたら、

「グローバルにusing namespace std; していると、後から使うsetという名前が衝突してしまうらしいので注意。」
http://d.hatena.ne.jp/hayamiz/20071024/1193242874

とのことで解決。サンクス。
967デフォルトの名無しさん:2012/07/07(土) 21:15:33.90
std::tr1::regex

超はえー

boost::regex
不要となったなw
968デフォルトの名無しさん:2012/07/07(土) 21:29:37.58
処理系によるだろ
すべての処理系で速くなったのか?
969デフォルトの名無しさん:2012/07/08(日) 00:18:39.71
頑張った可能性はある
970デフォルトの名無しさん:2012/07/08(日) 06:58:34.76
むしろ処理系に適した最適化がされてる可能性が高い
971デフォルトの名無しさん:2012/07/08(日) 09:30:21.61
VC++2010のstd::regexは遅かったからxpressiveにしたよん
972デフォルトの名無しさん:2012/07/08(日) 09:31:22.40
xpressiveってそんな早いの?
973デフォルトの名無しさん:2012/07/08(日) 23:27:33.06
大概サードの方が速いけどな
Blits++とか良い例
974デフォルトの名無しさん:2012/07/08(日) 23:28:24.74
実際標準コンテナも遅いしな
975デフォルトの名無しさん:2012/07/08(日) 23:54:37.83
xpressive早いし互換度高くなってた
以前は互換の問題で使いづらかったけどもうregex使い続ける意味ない
976デフォルトの名無しさん:2012/07/09(月) 01:02:41.69
boost::iterator使って、mapのiteratorみたいに2つの要素を持つiteratorって作れるのかな?
単純にdereferenceでboost::tupleを返してもwarning出るんだ…
977デフォルトの名無しさん:2012/07/13(金) 16:51:19.79
今更落としてみたけど1.50って300Mしかないのな
1.47は1Gもあるのに
978デフォルトの名無しさん:2012/07/13(金) 17:50:38.89
その1.47ってビルド済だろ
979デフォルトの名無しさん:2012/07/13(金) 18:15:31.55
ちなみに
32bit/64btで.dllを生成するもの以外の
全オプションの組み合わせのバイナリ含み
全部で6GBだけど

7zの最高圧縮率でまとめると250MB切った

7zipスゴイw
980デフォルトの名無しさん:2012/07/13(金) 18:51:22.40
>>977
1.50はうち1.75GBあるんやけど
981デフォルトの名無しさん
ソースでzipがだいたい100Mか。
Unix用のbz2で50Mとは。圧縮度けっこう違うんだな。知らなかったすごい。