Boostを語れゴラァ part3at TECH
Boostを語れゴラァ part3 - 暇つぶし2ch112:デフォルトの名無しさん
06/10/13 12:16:24
>>101
boostの開発者は自分で使いたいから作ったんじゃないの?
自分では使わないけれど他人に使わせるために作ってるわけ?
105の言うとおりに同等品を既に作ってあるとかなら別だけど。

113:デフォルトの名無しさん
06/10/13 12:37:39
人は何故mplを作るのか?
そこにテンプレートメタプログラミングがあるからだ。

114:デフォルトの名無しさん
06/10/13 12:42:21
>>112
ただboostを使ってるだけの連中は、boostを作ってる連中に比べれば全然C++に詳しくない。
って話だろ?

115:デフォルトの名無しさん
06/10/13 12:44:10
プロジェクトで使えなくとも、Boost のヘッダ見て部分的に移植するのは
いろいろと勉強になって楽しいけどな
特に detail/ 以下漁るといろんなモノ発掘できて楽しいw

116:デフォルトの名無しさん
06/10/13 12:48:55
>>114
ただC++コンパイラを使っているだけの連中は、C++コンパイラを作っている連中に比べれば(ry

117:デフォルトの名無しさん
06/10/13 19:18:21
>>115
たしかに。lightweight_mutex (shared_ptr で使用)だの、
phoenix (spirt で使用) だのは、ブラッシュアップして表に出して欲しいくらい。

118:デフォルトの名無しさん
06/10/13 22:14:55
でも、同等機能が複数あるのはやだなあ。統一してほしいものだ。
phoenixはlambdaと統合中とかどこかでみたような。。

119:デフォルトの名無しさん
06/10/14 13:11:22
>>105
順番の問題じゃない?下位のクラスが安定してきたらそのうちできるでしょ。
spirit使えばXMLパーサの実装も理屈的にはBNFを移すだけになるしさ。

120:デフォルトの名無しさん
06/10/14 16:27:50
C++ の場合は空間効率と実行効率の要求が分野によって全然違う上に、
そこをいくらでもチューンナップできる自由度もあるので、
なかなか汎用的な低レベル層を作るのは難しいという気がする。

で、それをテンプレートポリシー化によって汎用的にしすぎると
今度はコンパイル時間が許容できなくなったり、言語非互換の壁に
ぶちあたったりするという罠。

121:デフォルトの名無しさん
06/10/16 17:59:04
伸びないねこのスレ

C++は詳しくないけど面白そうなのでboost::spiritを学び始めた
どういったことに使おうかなーって思って
BNFの具体的な使われ方を調べようと思ったんだが
ググっても基本的な使い方ばっかりがヒットするorz

正規表現雑技のページとかが理解できたら
幅が広がりそうだが
今度は逆に応用過ぎて理解できない

122:デフォルトの名無しさん
06/10/16 18:19:59
おもしろいけど
ミニ電卓作るとか
自前でXMLパーサ作る位しか思いつかなかった

頭ひねって普通にCで書いた方がコンパイル速度でイライラしなくて済むけど…

123:デフォルトの名無しさん
06/10/16 19:26:36
すでにある程度作ってしまったプログラムの構造を変えずに
おまけ機能を追加するときに、
bindとかは大活躍してる

lambdaは使いこなせてない

124:デフォルトの名無しさん
06/10/16 20:11:14
そこでboost::lambda::bindですよ。

125:デフォルトの名無しさん
06/10/17 00:01:29
boost::interprocessって8月のも10月のもexampleにある奴すら
ビルドできないんだけど、誰かどこに手を入れればいいかわかる人居ます?

126:デフォルトの名無しさん
06/10/17 08:53:42
まあまだ日本で実務でばりばり使ってますって人は少ないんじゃない?
C++上級者が興味を持って、調べてる的な感じだよね。
てか、商用ではJavaかスクリプトになりそうだから、クロスでC++って
需要あんまなさそうとか。。

127:デフォルトの名無しさん
06/10/17 15:02:46
C++を(C++的に)使ってる人自体がまず少なそう。

128:デフォルトの名無しさん
06/10/17 15:33:05
んなアホな

129:デフォルトの名無しさん
06/10/17 16:11:04
lang = c++
lang == c
こういうことか!

…すいません。でも仕事で非標準(かつ多機能)のライブラリの利用を認めてるとこは多くないんじゃない?

130:デフォルトの名無しさん
06/10/17 18:35:35
shared_ptrに感動しますた
さりげなくスレッドセーフになっていてcoolです

131:デフォルトの名無しさん
06/10/17 21:50:45
スレッドセーフだったっけ?

132:デフォルトの名無しさん
06/10/17 21:55:43
参照カウンタの部分はスレッドセーフだな

133:デフォルトの名無しさん
06/10/17 22:47:21
誘導されてきました

int main(int argc, char * argv[])
{
boost::numeric::ublas::vector<float > vec(2);

vec(0)=1.0;vec(1)=2.0;
boost::function1<
float,boost::numeric::ublas::vector<float>
> norm_2Functor = &boost::numeric::ublas::norm_2<boost::numeric::ublas::vector<float> >;
float out= norm_2Functor(vec) ;
}

想定外のメモリーを参照しました
で落ちる。何が悪いのだろう。


134:デフォルトの名無しさん
06/10/18 16:38:12
オフィシャルサイトに何が起こったんだろう。

135:デフォルトの名無しさん
06/10/18 16:58:41
SFのipが変わったせいで転送に失敗してるとさ
じきに直るでしょ

136:デフォルトの名無しさん
06/10/18 17:02:39
あと急ぎの用があるなら
URLリンク(boost.sourceforge.net)

137:デフォルトの名無しさん
06/10/18 17:37:55
おお、さんきゅー!

138:デフォルトの名無しさん
06/10/19 00:32:34
>>132
でふぉでそうだったっけ?そしたら遅くないか?

139:デフォルトの名無しさん
06/10/19 00:35:46
スピンロックかも

140:デフォルトの名無しさん
06/10/19 00:49:28
Win32だとInterlockedExchange()あたり使ってるんじゃなかったか。

141:デフォルトの名無しさん
06/10/19 01:43:59
>>138 つ boost/detail/sp_counted_base.hpp

142:デフォルトの名無しさん
06/10/19 03:24:06
>>133
VC8+boost1.35で試したらちゃんと動いたけど
使ってるコンパイラとboostのバージョンは?

143:133
06/10/19 09:30:48
>>133
>>142
VC2003 + boost 1.33.1
です
とりあえずboostのバージョンあげてきます

144:133
06/10/19 09:34:24
URLリンク(sourceforge.net)
boost1.35なんてないよ

145:デフォルトの名無しさん
06/10/19 11:14:37
>>144
CVSの最新版が1.35

146:デフォルトの名無しさん
06/10/19 11:36:49
>133
out = 2.236068
g++(mingw3.4.5)+boost1.33.1 でも問題ないようにみえます。

147:デフォルトの名無しさん
06/10/19 11:43:43
コンパイラか

148:デフォルトの名無しさん
06/10/19 11:46:32
>>133
VC8+boost1.33.1でもちゃんと動くね

149:デフォルトの名無しさん
06/10/19 16:25:42
>>133
VC2003で試したら落ちたのでアセンブリ出力を調べてみた。

function1<float, ublas::vector<float> > norm_2Functor = &ublas::norm_2<ublas::vector<float> >;

and eax,00402fd0 ; ここがおかしい。なんでANDやねん...(00402fd0はnorm_2のアドレス)
push eax ; VC8では2行あわせてpush 00402fd0だけになっている
lea ecx,dword ptr [ebp-3c]
call 00403040
mov byte ptr [ebp-04],01


で、norm_2Functorの宣言をこうしたらとりあえず動いた。
function1<float, ublas::vector<float> > norm_2Functor(&ublas::norm_2<ublas::vector<float> >);

push +00 ; この00は何なんだろう…
push 00402fd0
lea ecx,dword ptr [ebp-3c]
call 00403040
mov byte ptr [ebp-04],01

よくわからないpush 00がとても不安だけど…(VC8ではpushはひとつだけ)

150:デフォルトの名無しさん
06/10/20 21:04:32
VS2003ではfunction1を初期化
norm_2Functor(&ublas::norm_2<ublas::vector<float> >);
でしか呼べないのね。
objectの意味ねえ


151:デフォルトの名無しさん
06/10/20 21:49:33
>>150
function1<float, ublas::vector<float> > norm_2Functor(NULL);
で宣言しておいてswap技法
function1<float, ublas::vector<float> >(&ublas::norm_2<ublas::vector<float> >).swap(norm_2Functor);
で実際の関数を代入とか…

ヤッテランネ(ノ`□´)ノ⌒┻━┻

152:151
06/10/20 21:52:00
メンバ関数のswapがないから
swap(norm_2Functor, function1<float, ublas::vector<float> >(&ublas::norm_2<ublas::vector<float> >));
でないと無理か

そもそもできるかどうか知らんけど

153:デフォルトの名無しさん
06/10/20 22:03:06
腐ったコンパイラでなんとかしようという努力は不毛だぜ

154:デフォルトの名無しさん
06/10/20 22:38:40
>>152
そもそも一時オブジェクトをswapの引数にはできん

155:デフォルトの名無しさん
06/10/20 23:17:36
>>154
--->?swap技法?

156:デフォルトの名無しさん
06/10/21 00:24:57
中国人は帰れよ

157:デフォルトの名無しさん
06/10/21 00:43:07
>>155
意味不明

158:デフォルトの名無しさん
06/10/21 00:43:28
>>154
vectorが確保するメモリを要素数ぴったりに合わせるテクニックで
x.swap(std::vector<T>(x));
ってのがあったと思うけど、これもダメなの?

159:デフォルトの名無しさん
06/10/21 00:46:06
一時オブジェクトをswapの引数にするのは何も問題ない(ちゃんとしたコンパイラなら)

160:デフォルトの名無しさん
06/10/21 00:50:03
constでない参照引数に一時オブジェクトはダメじゃなかったっけ?

161:デフォルトの名無しさん
06/10/21 01:01:03
>>158
VC++2003で警告レベルを最高にするとwarningになるな。

162:デフォルトの名無しさん
06/10/21 01:27:59
23.1 Container requirementsによればa.swap(b)とswap(a,b)は同じで、
25.2.2 Swapによれば
template<class T> void swap(T& a, T& b);
1 Requires: Type T is Assignable.
とあるから、できないんじゃね?
と思ってx.swap(std::vector<T>(x));とやったらVC++2005でエラーになった。
と思ったらstd::vector<int>(x).swap(x);は通った。
何じゃこりゃ。

163:デフォルトの名無しさん
06/10/21 02:05:58
>>158
swap技法はstd::vector<T>(x).swap(x);じゃない?

164:デフォルトの名無しさん
06/10/21 07:43:54
>>162
template<class T> void swap(T& a, T& b);
はaもbも非const参照だから、一時オブジェクトを受け付けない。

std::vector<int>(x).swap(x);は、
std::vector<int>(x)が一時オブジェクトだが非constなので、非constなメンバ関数を呼べてしまう。

165:デフォルトの名無しさん
06/10/21 08:54:42
>>158
お前何にもわかってないのな

>>159
馬鹿確定

166:デフォルトの名無しさん
06/10/21 10:01:26
あ、一時オブジェクトに対して非constメンバを呼ぶのはいいのか。

167:デフォルトの名無しさん
06/10/21 21:13:06
int add(int a,int b){return a+b;} があるとして、
boost::function<int (int,int)> f = add; はコンパイルできるわけですが、

boost::function<boost::function<int,int> (int)> g = add; のようなことがしたい場合はどうし
たらよいでしょうか?addを、int->int->int ではなく int-> (int->int) として扱いたいというか。

gに、あとで(addの)第一引数を渡して、boost::function<int,int>型の関数オブジェクトを得て、
更にその後で(addの)第二引数を渡し、最終結果を得たいという感じです。

168:167
06/10/21 21:20:16
fをgに変換する方法でも結構です。
よろしくおながいします


169:デフォルトの名無しさん
06/10/21 21:44:22
>>167
どうしてもその変換をしないと駄目?
第一引数が既にあるならそれを部分適用することは簡単なんだが。

170:デフォルトの名無しさん
06/10/21 22:05:03
思った程大変じゃなかった。

# include <boost/function.hpp>
# include <boost/lambda/lambda.hpp>
# include <boost/lambda/bind.hpp>
# include <iostream>
# include <functional>

namespace lam = boost::lambda;

int main(void)
{
  typedef boost::function<int (int, int)> f_type;
  f_type f = std::plus<int>();
  boost::function<boost::function<int (int)> (int) >
    g = lam::bind(std::bind1st<f_type, int>, f, lam::_1);
  std::cout << g(7)(2) << '\n';
}

171:167
06/10/21 22:05:15
>>169
第一引数の部分適用が簡単なのは承知しているのですが…変換希望です。



172:167
06/10/21 22:23:29
>170
ありがとうございます。やってみます。


173:デフォルトの名無しさん
06/10/21 23:04:05
boost::bindでもいけるね

174:デフォルトの名無しさん
06/10/21 23:10:30
>>173
いってみてよ

175:デフォルトの名無しさん
06/10/22 01:05:59
template <typename A, typename B, typename C> int foo(A a, B b, C c) { return 0; }
template <typename A, typename B> int foo(A a, B b) { return 0; }
に対して、後者の関数をbindするつもりで
boost::bind(foo<int,int>, _1, 100);
すると、no matching function for call to ‘bind(<unresolved overloaded function type>, boost::arg<1>&, int)’
とか言われてしまうんだが、これって回避策ありますか?

gcc4.1です

176:デフォルトの名無しさん
06/10/22 01:12:24
>>175
boost::bind(static_cast<int (*)(int, int)>(foo), _1, 100)

177:デフォルトの名無しさん
06/10/22 12:38:25
>>175
class Void{}Void_v;
template<class T1, class T2, class T3=Void>struct select_f;
の特殊化を作ってfooの引数にVoid型があるなしで選択するとかは。

178:デフォルトの名無しさん
06/10/22 12:42:09
>>177
は?

179:デフォルトの名無しさん
06/10/22 12:43:22
>>177
175は関数テンプレートな訳だが..


180:177
06/10/22 13:30:36
>>179
えーと、あいまいな関数オーバーロードの解決にはキャストあたりが手っ取り早いと思うけど
そこで、
template <typename A, typename B, typename C>
int foo(A a, B b, C c) { return select_f<A, B, C>()(a, b, c); }// put away foo else
・・・
boost::bind(foo<int,int, Void>, _1, 100, Void_v);
こんな感じでキャストを使わない方法の案を提供したかったわけですよ。

181:デフォルトの名無しさん
06/10/22 13:39:27
キャストを使わないでそれを使うことに何の意味があるの?

あと、>177のように何の前置きにもなしに言って、理解してくれるエスパーだと思ったの?

182:177
06/10/22 13:55:49
>>181
キャストを使わない。
キャストを使ったときに起きるテンプレート関数の特殊化に対しての曖昧性をなくせる(たぶん)。

> あと、>177のように何の前置きにもなしに言って、理解してくれるエスパーだと思ったの?
タイピングの勢いだ。

183:デフォルトの名無しさん
06/10/22 14:28:28
> キャストを使ったときに起きるテンプレート関数の特殊化に対しての曖昧性
具体例が欲しいな


184:デフォルトの名無しさん
06/10/22 15:58:19
boost::lambdaのunlambdaとprotectがよくわからないんだぜ



185:デフォルトの名無しさん
06/10/22 16:38:15
>>183
たとえば、>175を
template <typename A, typename B> int foo(A a, B b); (b)
template<class A, class B>int foo(A*,B*); (c)
こんな(c)を追加して、(c)or(b)のどちらかをbindで使いたい場合
このオーバーロードの解決には結局、関数オブジェクトが手っ取り早いと思います。

186:デフォルトの名無しさん
06/10/22 17:13:50
>>185
それ、曖昧か?
後者は foo() についてポインタ型を扱う場合の特殊化を宣言しているので、
引数の型に応じて定義が使い分けられるだけじゃないの?

↓キャストでもコンパイルできたし。

int a, b;
(static_cast<int (*)(int*, int*)>(foo))(&a, &b);

187:185
06/10/22 17:59:14
>>186
boost::bindは?

188:デフォルトの名無しさん
06/10/22 18:02:01
>>187
boost::bind(static_cast<int (*)(int*, int*)>(foo), _1, &b)(&a);
これぐらい自分で補完しろよ。

189:デフォルトの名無しさん
06/10/22 18:35:54
>>188
コンパイル出来るんだ。へぇー。

190:デフォルトの名無しさん
06/10/22 19:04:01
がんばって早く「ごめんなさい」の言える大人になろーね。

191:デフォルトの名無しさん
06/10/22 19:23:43
ごめんなさい

192:デフォルトの名無しさん
06/10/22 19:40:14
>>190
だって食い下がって逆撫でしていれば
>>188みたいな知識ひけらかし大好き君が無償で色々書いてくれるんだもん。
こういう子は利用しない手はないって。

193:デフォルトの名無しさん
06/10/22 19:57:34
>>192
普通に質問すればいいのに、なんでわざわざそんな手段をとる必要がある?

194:デフォルトの名無しさん
06/10/22 20:19:00
回答をもらえる確率が上がるから。

195:デフォルトの名無しさん
06/10/22 20:25:02
まぁ、スレを客観的に眺めると、知識ひけらかし大好き君は>177と分かるんだけどね。
>176で終わってる質問だし。

それに>188の知識は>176以上のものではないし。
散々引っ張っといて同じモノしか出ないんじゃ、割に合わない。

単純に悔しくなった>177君が利用してやった振りしてるだけ。

196:デフォルトの名無しさん
06/10/22 20:47:18
>>182 に「たぶん」って書いてあるのは、ただの妄想ってことでいいの?

197:189
06/10/22 23:35:55
>>188
ごめん。
だれもつっこんでくれないから寝る前に一言
> boost::bind(static_cast<int (*)(int*, int*)>(foo), _1, &b)(&a);
ちょっと言い訳・・・・「&a」参照の罠に嵌ってました。以上です。では、おやすみ。

198:デフォルトの名無しさん
06/10/25 18:14:32
std::map みたいに扱えて、実はバックエンドがデータベースだなんて
すてきな使い心地のライブラリって無いものでしょうか。


199:デフォルトの名無しさん
06/10/25 19:42:34
boost::graph

ASLの adobe::forest
が車輪の再発明ぽい点について

200:デフォルトの名無しさん
06/10/25 20:28:36
ASL かわいいよ ASL

201:デフォルトの名無しさん
06/10/25 23:26:50
あるあ…(ry >198

202:デフォルトの名無しさん
06/10/26 00:02:53
>>201 あるんですか?
なんて言うライブラリか教えて貰えませんか?
今、std::map を boost::serialization でディスクに書き出しているんですが、
かなりデータ量が大きくなってきて、すべてをオンメモリで処理するのが
苦しくなってきました。

203:デフォルトの名無しさん
06/10/26 03:11:33
AllegroCache. これ最強。

204:デフォルトの名無しさん
06/10/26 09:38:05
boostいいね。使っているとスルメみたいに味わい深いわ。
しかし古い設計で組んでいた俺の昔のコードは一体何だったんだと。 orz

205:デフォルトの名無しさん
06/10/26 11:07:28
STLぽい数式処理と数値計算のできるライブラリーってないでしょうか?
せめて多項式か2次式だけでもできると
少し数値計算プログラムが楽になる

206:デフォルトの名無しさん
06/10/26 15:38:08
ASLの
adobe::dictionary_t
はstd::mapよりたくさん要素あつかえるとかtutorialに書いてあった


207:デフォルトの名無しさん
06/10/26 16:19:02
>>198
Berkeley DBでも使え。

208:201
06/10/27 00:43:04
ねーよ


209:デフォルトの名無しさん
06/10/27 08:40:10
>>201>>208
馬鹿?


210:デフォルトの名無しさん
06/10/27 11:05:09
>>198
つlibstldb4

211:デフォルトの名無しさん
06/10/27 16:20:16
>>198
なぜ boost スレへ?

212:デフォルトの名無しさん
06/10/27 20:13:30
std::plus()はreturn a+b;ですが、return a+=b;してくれる関数オブジェクトは無いでしょうか?
手前で作ればいいのですが、boostにあるならそっちをつかいたく。

213:デフォルトの名無しさん
06/10/27 20:57:59
_1 += _2

214:デフォルトの名無しさん
06/10/27 21:06:44
>213
それはコンパイルできんだろ..

215:デフォルトの名無しさん
06/10/27 21:11:33
class MyPlus : public std::plus,
boost::addable< point<T>
, boost::subtractable< point<T>
>
{
MyPlus operator+=(const MyPlus&);
};

でいけたらいいな

216:デフォルトの名無しさん
06/10/27 21:16:44
>>214
using namespace boost::lambda;

217:デフォルトの名無しさん
06/10/27 21:23:35
std::accumulate は?

218:217
06/10/27 21:25:48
あ、関数オブジェクトじゃなかったorz

219:デフォルトの名無しさん
06/10/27 21:30:13
>>216 +=はオーバーロードされていないと思うが。

220:デフォルトの名無しさん
06/10/27 21:38:25
んなあほな。
複合代入演算子はクラスの外からでも多重定義できるのだから、
boost::lambdaで使えないわけが無い。

221:デフォルトの名無しさん
06/10/27 21:42:58
+=は使える。
クラス外から多重定義できるかどうかは関係ないような。

222:212
06/10/27 21:51:39
>>213
できました。ありがとう

223:デフォルトの名無しさん
06/10/27 21:52:36
そうか、_1なんかはそれ自身ラムダオブジェクトだったな。

224:デフォルトの名無しさん
06/10/27 23:28:35
>>219
死ねカス

225:デフォルトの名無しさん
06/10/30 18:40:49
話題が無いな

226:デフォルトの名無しさん
06/10/30 18:54:49
話題ねぇ…

URLリンク(opensource.adobe.com)

今レビューされている、Generic Image Library が通れば、
各種画像サポートが実現されるわけで、非常に期待してる。

227:デフォルトの名無しさん
06/10/30 20:09:51
ほお adobeがopensourceとは..

228:デフォルトの名無しさん
06/10/30 22:09:56
通ればってどういうこと?

229:デフォルトの名無しさん
06/10/30 22:14:22
URLリンク(lists.boost.org)

ちうこと。

230:デフォルトの名無しさん
06/10/30 22:29:06
adobe ASLで
URLリンク(japan.zdnet.com)
ユーザーインターフェイスの自動生成?
本当にできるの?

231:デフォルトの名無しさん
06/10/30 22:31:59
なぜvigraじゃなくてgilなんだ
機能の豊富さからいったらvigraが上だろう
URLリンク(kogs-www.informatik.uni-hamburg.de)


232:デフォルトの名無しさん
06/10/30 22:42:28
>>231
作者がboostに提案したか否かだろ

233:デフォルトの名無しさん
06/10/30 23:51:16
>>230
発表された頃に斜め読みした限りでは
プログラマとデザイナで仕事を分離するという程度の内容だったような?


234:デフォルトの名無しさん
06/10/31 01:39:42
>>232
どの記事だったか忘れたけど

>vigraのほうが好きだけど,vigraは作者が一人だし、gilが採択されたら
>その作者がんばるだろうからいいじゃん
とか書いてあった


235:234
06/10/31 01:41:27
>>234
URLリンク(lists.boost.org)
これこれ


236:デフォルトの名無しさん
06/10/31 03:07:04
やる気のない実装を見るとRejectされそうだけどな

237:デフォルトの名無しさん
06/10/31 12:11:48
URLリンク(lists.boost.org)
VC7.1でコンパイルとおらねえじゃねえかよ
同じとこでこけやがる

238:デフォルトの名無しさん
06/10/31 18:46:57
LinuxのGCCでワイド文字全般がうまく機能しないです。
gcc3.3.6
libstdc++3.3.6

boostでなんとかなりませんか?

wcout << L"てれれのレ";
[****@ **] (沈黙)

239:デフォルトの名無しさん
06/10/31 18:51:43
端末の文字コードが間違っているなんてこと無いよね?

240:デフォルトの名無しさん
06/10/31 19:18:04
ないです。

241:デフォルトの名無しさん
06/10/31 19:24:22
出力をパイプでod -tx1に流して16進で見ても、やはり

[****@ **]./a.out | od -tx1
0000000 (沈黙)

242:デフォルトの名無しさん
06/10/31 19:41:44
スレリンク(tech板:294-304番)
これと同じ問題?

243:デフォルトの名無しさん
06/10/31 19:52:16
gccのバージョン上げろ

244:デフォルトの名無しさん
06/10/31 20:25:51
つまり L をコンパイラがまともに処理してくれていない?

245:デフォルトの名無しさん
06/10/31 20:58:26
そうだよ。-Sでアセンブラ出力みてみ。

246:デフォルトの名無しさん
06/10/31 21:14:59
バージョンの問題なのか?

247:デフォルトの名無しさん
06/10/31 21:39:46
>>2.4.6
--input-charsetが3.4からだから、そうだと思うんだけど。

248:デフォルトの名無しさん
06/10/31 21:40:21
あかん、アンカーがorz

249:デフォルトの名無しさん
06/10/31 23:02:31
>>248 誰がうまいこと言えと

250:デフォルトの名無しさん
06/11/01 01:37:53
function<int (int)> hohe(int x)
{
return boost::lambda::_1 +x;
}
でxを延命させるうまい方法はありますか? 別途関数を作ってbindとか、
plus<int>()にbindあたりはナシで。

251:デフォルトの名無しさん
06/11/01 01:48:57
>>250
延命も何も、λ式に保持されるのはその時点でのxの値で、
xへの参照ではないから、xの寿命を気にする必要はない。

252:デフォルトの名無しさん
06/11/01 04:26:38
gcc3.4 gcc4.0.2で試したらワイド文字関係がすこぶる正常。
結局バージョンの問題か。

253:デフォルトの名無しさん
06/11/01 09:28:50
もう少し前は日本語のみのワイド文字対応が入っていたんだけど、
3.3→3.4辺りで国際化した。あなたの使ったのは狭間の具合い悪いバージョン。

254:デフォルトの名無しさん
06/11/01 10:49:17
GUIライブラリのboost取り込みってどうなった?

255:デフォルトの名無しさん
06/11/01 11:27:37
そんな激しくプラットフォーム依存な物を
標準ライブラリに入れようとしているのか。
もしかして curses みたいなものか?

256:デフォルトの名無しさん
06/11/01 11:55:13
boost mailing listで
さっきbug fixしてupした
とかいってるやつはcvsのバージョンのことなのかな

257:デフォルトの名無しさん
06/11/01 17:30:47
lexical_cast.hppを見てみたら、半年くらい前に見たときと
大幅に違ってるんだけど、何か変わったの?

258:デフォルトの名無しさん
06/11/01 21:59:04
カレントプロセスのカレントディレクトリを取得する方法
ってありますか?
GetCurrentDirectoryみたいなやつ。

259:デフォルトの名無しさん
06/11/01 22:09:37
>>255
お前の中でThreadやfilesystemは一体なんなの?

260:デフォルトの名無しさん
06/11/01 22:57:40
そんなには激しくないプラットフォーム依存な物

261:デフォルトの名無しさん
06/11/02 01:13:53
>>258 boost::filesystem::current_path()

262:デフォルトの名無しさん
06/11/02 01:30:36
それLinuxだと実行ファイルのパスじゃなくて
userのカレントディレクトリを返しちゃうん
だよね。

これLinuxの仕様くさいから仕方ないか。


263:デフォルトの名無しさん
06/11/02 01:35:20
>>262
どこから実行ファイルのパスの話が出てきたんだ?

264:デフォルトの名無しさん
06/11/02 01:37:59
>>262
こいつアホすぎww

265:デフォルトの名無しさん
06/11/02 11:06:53
>>262
Windowsも似たようなもの
>>258の意図は知らないがcurrent_pathはたいてい役に立たない

266:デフォルトの名無しさん
06/11/02 11:07:31
>>257
最適化
数字は自前でパースするようになった

267:デフォルトの名無しさん
06/11/02 11:33:40
他Cスレで聞いても誰も答えてくれなかった

Cで行列演算といえば
LAPCK
boost::numeric::ublas
あたりが定番だけど

統計計算でお勧めは?
今boostで審査中や過去にrejectされたものでもいいので誰か教えて

使いたい機能は

単純に共分散行列を計算
正規分布に関係したいろいろな計算

できれば

kai^2 test
t-test

とかちょっと高度なこともしたい。


268:デフォルトの名無しさん
06/11/02 12:49:28
>>266
でも未だに1e+10とかは扱えないんだなw

269:デフォルトの名無しさん
06/11/02 12:57:56
boost::serialization で NaN (+inf とか -inf とかも)を
シリアライズできないのは痛い。

270:デフォルトの名無しさん
06/11/02 14:18:37
boostのclass名が
ClassName
じゃなくて
class_name
になってるのが気持ち悪い
なんでこんな命名規則になった

271:デフォルトの名無しさん
06/11/02 14:28:12
C++の標準ライブラリと同様の命名規則を採用したから。

272:デフォルトの名無しさん
06/11/02 16:40:38
識別子をなんでもかんでも小文字にしたくなって困る

273:デフォルトの名無しさん
06/11/02 17:13:19
>>267
boostじゃないけど
liboctave
libRmath
libgsl
あたり


274:デフォルトの名無しさん
06/11/02 23:31:11
次期標準でも concept 名だけは大文字になりそうだな

275:デフォルトの名無しさん
06/11/02 23:32:09
>>273
thx

liboctave はmatlab使いには便利そう

libRmath
本当の統計屋さんはやっぱりRを使うのだろうか
R使ったことない

liggsl
こんなのあったんだね。
でも多項式演算関係以外は既存libとかぎりなく一緒


276:デフォルトの名無しさん
06/11/03 02:10:07
>>270
おまえさんは標準C++ライブラリも気持ち悪いって言うんだろうな。
実際そういう人が結構多いようだ。

277:デフォルトの名無しさん
06/11/03 03:05:14
Javaに毒されすぎ


278:デフォルトの名無しさん
06/11/03 03:20:37
このスレ的には C++ に毒されてる連中が多いから
Java のメソッド名ナニアレ気持ちわるーい、となるのが正しい

279:デフォルトの名無しさん
06/11/03 03:40:40
むしろHaskellやPythonなんだが

280:デフォルトの名無しさん
06/11/03 03:47:52
HaskellもPythonもClassNameだな。

281:デフォルトの名無しさん
06/11/03 03:50:44
すべて小文字な命名法はlispを思わせる。

282:デフォルトの名無しさん
06/11/03 04:31:57
lispはハイフン区切りで全部大文字(CLASS-NAME)だろ。

283:デフォルトの名無しさん
06/11/03 08:11:55
というか(強制した時以外)大文字小文字の区別がない。> Lispのシンボル

284:デフォルトの名無しさん
06/11/03 12:34:11
正確には「Common Lispは・・・」と言うべきだろう

285:デフォルトの名無しさん
06/11/05 03:31:58
boostって Subversionではアクセスできないの?
cvsのみ?


286:デフォルトの名無しさん
06/11/05 03:35:19
>>285
前から話は出てるんだけどねぇ。
次のリリースの後にしようとして、リリースが延び延びになってる気配。
ちゃんと ML 漁れば、他に理由があるのかもしれないけど。

287:デフォルトの名無しさん
06/11/05 19:38:50
lambda_functor<U>のアドレスってどうしたらえられますか。

288:287
06/11/05 19:40:40
たとえば
(_1+_2)のようなラムダがあった場合
このlambda_functorのアドレスが知りたいのです。

289:デフォルトの名無しさん
06/11/05 19:43:31
そんなものは存在しません

290:デフォルトの名無しさん
06/11/05 20:40:51
>>289
無理か。諦めます。レスありがとう。

291:デフォルトの名無しさん
06/11/05 21:10:34
md5やsha1を計算するライブラリありますか?
crcはあるようですが

292:デフォルトの名無しさん
06/11/05 21:26:13
md5はそのままソース引っこ抜いて使えるようになってた。
この手の参照透過性のある関数を
特にパラメタライズするメリットは感じないが。

293:デフォルトの名無しさん
06/11/05 21:28:38
MD5はRFCにあるソースはK&R式の関数宣言なんでC++としてコンパイルしようとすると失敗するはず。

294:デフォルトの名無しさん
06/11/05 21:28:43
>md5はそのままソース引っこ抜いて使えるようになってた。
どこ?

295:デフォルトの名無しさん
06/11/05 21:30:11
RFC

296:デフォルトの名無しさん
06/11/05 21:30:37
>>295
ありがとう

297:デフォルトの名無しさん
06/11/05 21:34:49
Boost には無いので
URLリンク(sourceforge.net)
とか
URLリンク(botan.randombit.net)
とか
URLリンク(opensource.adobe.com)
URLリンク(opensource.adobe.com)
あたりで

298:デフォルトの名無しさん
06/11/05 21:38:29
>>293

コンパイルはそのまま通ったと思う。
数年前のことなので記憶が不鮮明だが、GNUのbinutilsから引っこ抜いた気がする。

299:デフォルトの名無しさん
06/11/06 00:37:42
>>293
そんなの1分で直せるじゃん

300:デフォルトの名無しさん
06/11/06 14:32:48
まだ特定してないんだけど、spiritのどこかで
using namespace std; の記述があるみたいですね。
(std::coutが名前空間を指定せずに使えてしまった)
これってちょっと問題あるような…。

301:デフォルトの名無しさん
06/11/06 14:40:05
$ grep -FR "using namespace std;" .
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./core/primitives/impl/primitives.ipp: using namespace std;
./fusion/sequence/detail/manip.hpp: using namespace std;
./iterator/impl/file_iterator.ipp:using namespace std;
./phoenix/closures.hpp: using namespace std;

302:デフォルトの名無しさん
06/11/06 14:42:18
>>267
>>273
>>275
こんなのあったんだね

Boost.MathToolkit
URLリンク(www.johnmaddock.co.uk)
URLリンク(lists.boost.org)

303:デフォルトの名無しさん
06/11/06 15:26:41
>>300
>>301
>./iterator/impl/file_iterator.ipp
これがまずい.
他の使い方は関数内なので問題ないし,意図的というか必要な using directive.

304:デフォルトの名無しさん
06/11/06 15:30:51
boost mailing list に
新しいライブラリーをaccept するかのreviewが投稿されてるけど

ただのユーザーとしてのreviewを投稿してもいいのかな?

305:デフォルトの名無しさん
06/11/06 17:21:32
boostの中に
ClassNameって命名規則つかってるの1つもないのかな
例外なく
class_name
に修正されるのかな

306:デフォルトの名無しさん
06/11/06 17:25:32
大文字って、そこだけ目立つから、見にくくなる。
あと長すぎるシンボルも関数の引数のところで行が折り返して見にくくなる。

boostってほどほどで良い感じ。

307:デフォルトの名無しさん
06/11/06 17:34:22
ublas があるのに
boost.glasとかわけわかんね
URLリンク(glas.sourceforge.net)

308:デフォルトの名無しさん
06/11/06 20:27:15
>>305
Boost にはガイドラインがあって、そこでコーディングルールはある程度決まってる。
URLリンク(boost.org)

・クラス名や、メソッド名は class_name や method_name みたいにすること。
・テンプレートパラメータは TemplateParameter みたいにすること。
・分かりやすい名前にすること。
・マクロは MACRO_NAME みたいにすること。

309:デフォルトの名無しさん
06/11/06 20:29:55
間違えた。
×マクロは MACRO_NAME みたいにすること。
○マクロは、すべて大文字で、BOOST_ からはじめること。
だな。

310:デフォルトの名無しさん
06/11/06 22:27:44
>>304
投稿するのは自由だろう。「ただのユーザーとして」というのはちょっと引っかかるが。
不満を述べるだけじゃなくて、代案か、代案が出せないと考える理由を出すべきだろうね。

まぁ筋が通ってなければスルーされるだけ。何か考えがあるなら投稿しとけばいいと思うよ。

311:デフォルトの名無しさん
06/11/07 08:21:16
「ただのユーザーとして」
っていう表現にどんな意味がこもっているかにもよるよね。

何となく
「恥かきそうだったり辛そうだったりしたら、いつでも綺麗にバッくれて
俺の人生においてすべてを"なかったこと"にできる道を確保したまま」
という意味な気がするんで、同じく引っかかる。

312:デフォルトの名無しさん
06/11/07 08:58:36
>>311 は一生引っかかっていればいいと思うよ。
何かに。

313:デフォルトの名無しさん
06/11/07 09:29:40
ドンピシャなら絶対噛み付いてくるだろうなと期待はしていたけどw

314:デフォルトの名無しさん
06/11/07 09:31:05
>>312に言葉の重みを感じてちょっとワロタ

315:デフォルトの名無しさん
06/11/07 10:55:34
まぁよっぽど悔しかったんだろ。

316:デフォルトの名無しさん
06/11/07 19:41:42
>>226
GIL has been accepted as a boost library.
URLリンク(lists.boost.org)

317:デフォルトの名無しさん
06/11/07 19:51:41
>>316
通ったのか!

318:デフォルトの名無しさん
06/11/07 22:12:22
>>300 の問題は Spirit 1.84 だと修正されてた.

319:デフォルトの名無しさん
06/11/08 01:18:37
>>316
accepted
なのはいいけど肝心の GILのホームページが見れない

320:デフォルトの名無しさん
06/11/08 10:03:45
>>319
今は見れるようになってるね

321:gil
06/11/08 11:30:18
acceptの感動で気絶してました。

322:デフォルトの名無しさん
06/11/08 12:06:06
>>321 そのわりには Latest news が更新されていないじゃないか。
URLリンク(opensource.adobe.com)

323:デフォルトの名無しさん
06/11/08 12:29:56
gil頻繁に更新されてるみたいだけど
どこが変わったか書いてないんだよね

324:デフォルトの名無しさん
06/11/09 01:40:50
GILをVS2003で早速使ってるけど
fatal error C1204: コンパイラの制限 : 内部構造がオーバーフローしました。
とかおきるのはVS2005に乗り換えればなんとかなるのかねえ

325:デフォルトの名無しさん
06/11/09 10:16:50
で、1.34 はいつリリースなのかね?

326:デフォルトの名無しさん
06/11/09 10:32:21
今店出ました

327:デフォルトの名無しさん
06/11/09 11:56:38
延びないうちによろしく。

328:デフォルトの名無しさん
06/11/09 14:18:57
boost::filesystem::pathのコンストラクタではパスを表す
文字列を与えますが、windowでドライブ名を含めたパスを
扱うにはどうすればよいでしょうか?
単純に
path("C:\hoge");
とすると落ちてしまいます。

329:デフォルトの名無しさん
06/11/09 14:28:15
\\

330:デフォルトの名無しさん
06/11/09 14:51:34
path::default_name_check( &native );

331:デフォルトの名無しさん
06/11/09 16:09:25
name_check関数を設定すればえがったんですね。
ありがとうごぜーますた。


332:デフォルトの名無しさん
06/11/09 16:34:13
URLリンク(www.boost.org)
path( const char * src, name_check checker )
こういうコンストラクタがあるので、
コンストラクトのときだけ指定してやればいいんだぜ?

path p( "c:", native );
p /= "/foo";
assert( p.string() == "c:/foo" );

333:デフォルトの名無しさん
06/11/09 16:36:30
おっと、名前空間は適当につけてくれ?

334:デフォルトの名無しさん
06/11/09 19:27:37
それは見て分かっただよ。
でも、あんがとさん。

335:デフォルトの名無しさん
06/11/10 16:09:31
boost::graph

boost::numerics::ublas
を駆使した
graphical_modeling ( とりあえず partilce filterだけインプリメント)
ってパッケージ作ったらboostにアクセプトされると思うのだけど
どう思う?

336:デフォルトの名無しさん
06/11/10 16:31:12
まず形になってから言えばいいんでないかな?

337:335
06/11/10 16:41:43
>>336
死んでしまったらしいプロジェクトの再活性のために
メンバー募集してるような感じなので
URLリンク(sourceforge.net)
やる人が増えたらいいなって、それだけです。

338:デフォルトの名無しさん
06/11/15 14:23:40
>>324
SP1で解決されたと書いてるがどうだろう

339:デフォルトの名無しさん
06/11/16 22:12:55
boostにMFCのTRACEマクロと同等のものありませんか?

340:デフォルトの名無しさん
06/11/17 10:21:48
>>89
>>90

すっごい亀なんだけど,VC++8 と STLport 5.1 と
Boost 1.33.1 は完全には共存できないことが分かった.

URLリンク(d.hatena.ne.jp)
ここに書かれている方法を使えば,wave 以外のライブラリは
構築できる.でも,wave だけはどうやっても無理.
なぜかというと,spirit の tree_node<T> の定義が問題なんだ.
tree_node<T> が中で vector<tree_node<T> > を使っていて,
__has_trivial_constructor の引数にできないと怒られる.

ということは,spirit も使えないことになるわけだ.
VC++8 の人はおとなしく STLport 5.1 を諦めるか,
もしくは STLport の中のコンセプトチェックを外すか
しないと駄目だと思う.

341:デフォルトの名無しさん
06/11/17 16:35:10
VS2005なんですがコンパイルに通りません
ublas::prod<matrix, vector>なはずなのに
ublas::prod<matrix, matrix>と勝手に解釈されます

std::vector< boost::numeric::ublas::vector<float > > vector_list;


std::transform(vector_list.begin(),vector_list.end()
,vector_list.begin()
,
std::bind1st(
std::ptr_fun(
boost::numeric::ublas::prod<
boost::numeric::ublas::matrix< float > ,
boost::numeric::ublas::vector< float >
>)
,covariance.covariance));

342:デフォルトの名無しさん
06/11/20 21:05:43
multi_arrayってコンストラクタ以外で要素数を変更できないのですか?

343:デフォルトの名無しさん
06/11/21 02:34:42
C++相談室 part54 から飛び火。
スレリンク(tech板:611-622番)

boost の導入が却下される理由を教えてください。

344:デフォルトの名無しさん
06/11/21 02:50:48
>>343
オブジェクトコードにスタンプが入っちゃうから。

345:デフォルトの名無しさん
06/11/21 09:31:14
まずSTLの導入が却下されてるからな

346:デフォルトの名無しさん
06/11/21 10:55:33
それって事実上のC++ダメ宣言?

347:デフォルトの名無しさん
06/11/21 12:58:06
>>343
VS2003でSP1あてないとコンパイル通らないコードがたまにあるから


348:デフォルトの名無しさん
06/11/21 13:02:39
>>343
コンパイルが遅いからとかw

いくらでも理由は考えられるし、わざわざここへチクりに来るような話題とも思えない。

349:デフォルトの名無しさん
06/11/21 16:56:47
URLリンク(www.boost-consulting.com)
boostって儲かるのかな

boostのreviewも裏でなにかありそうなかんじだ

GILとvigraの争いもなんか違和感がなくもなかった

350:デフォルトの名無しさん
06/11/22 10:17:52
STOP! 探偵ごっこ

351:デフォルトの名無しさん
06/11/22 18:04:13
boost::tokenizer で切り分けた個数を得る方法はありますか?
(イテレータでループしてもとめるのではなくて。。)

352:デフォルトの名無しさん
06/11/22 18:47:33
>>351
tokenizer はイテレータを移動するたびに区切りを探す仕様だから無理。

353:デフォルトの名無しさん
06/11/22 18:52:00
個数カウント関係は
boost::accumulators
の人に要望したら実装してくれるかも

354:デフォルトの名無しさん
06/11/22 19:08:11
>>350
探偵ごっこじゃなくて
vigraからGILに乗り換えるかで悩んでるんだよ

boostのreviewとやらが信用できるかどうかが、大きなファクター

なんか怪しいって思ってるやつが結構いるんだったら
boostのreviewを無視してvigraを使い続ける

355:デフォルトの名無しさん
06/11/22 23:52:45
vagina

356:デフォルトの名無しさん
06/11/23 00:07:40
viagra

357:デフォルトの名無しさん
06/11/23 01:27:31
Caverta で十分。

358:デフォルトの名無しさん
06/11/24 08:52:34
下の様なエラーが出て困ってます。リビルドすればコンパイルは通る様になるのですが
毎回リビルドするのは大変なので、どうにか解決する方法ってないでしょうか?

c:\boost\boost\regex\v4\perl_matcher_common.hpp(734) : fatal error C1001: 内部コンパイラ エラー
(コンパイラ ファイル 'msc1.cpp', 行番号 1794)
Visual C++ のサポート情報 コマンドを選択してください
ヘルプ メニュー、 またはサポート情報のヘルプ ファイルを参照してください
コマンド ラインの警告 D4028 : 簡易リビルド時のエラ-です、通常のビルドに戻します

環境:
VC++6.0 SP6
Boost 1.33.1

359:デフォルトの名無しさん
06/11/24 12:37:19
VC6は偽C++だからなぁ・・・

360:デフォルトの名無しさん
06/11/24 13:19:08
>>359
6.0じゃもう古過ぎてダメですか?

361:デフォルトの名無しさん
06/11/24 14:02:04
C++じゃないしな
VC8EE使った方がいいだろ

362:デフォルトの名無しさん
06/11/25 00:57:13
vc8でコンパイル通らないのと組み合わせてる場合はどうしたらいいんだろう
コンパイル通らないコードはdllにして読むことにするとかできるのか?


363:デフォルトの名無しさん
06/11/25 01:32:12
VC8でコンパイル通らない時点でまともなC++じゃない可能性が高いわけだが
DLLなどの方法で分離することはもちろん可能。(MSVCRTの衝突に注意)

364:デフォルトの名無しさん
06/11/26 16:48:43
あんまり関係ないことかも知れないけど、uBLASってなんて読んだらいいの?
うぶらす?マイクロブラス?

365:デフォルトの名無しさん
06/11/26 18:31:11
あっぷれカス

366:デフォルトの名無しさん
06/11/26 20:01:25
>>364
俺は発音しなければならない状況に立たされたことがないので不明

367:デフォルトの名無しさん
06/11/27 09:38:25
誰か俺にSFINAEの発音プリーズ

368:デフォルトの名無しさん
06/11/27 10:00:39
自分としては「えすふぁいなえ」などと変な読みをしてるけど
他人と口頭でSFINAEについて話したことがないのでどう言っていいかわからん

369:デフォルトの名無しさん
06/11/27 10:20:16
すふぃなぇ

370:デフォルトの名無しさん
06/11/27 10:46:18
エス 吹く アナル

371:デフォルトの名無しさん
06/11/27 11:34:46
ボーストが標準でついているコンパイラはありませんか??

372:デフォルトの名無しさん
06/11/27 12:12:46
>>365
URLリンク(uprecus.jp.land.to)


373:デフォルトの名無しさん
06/11/27 12:13:51
        ,.-─ ─-、─-、
      , イ)ィ -─ ─- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ , -─        Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    > ---- r‐'´
      ヽ_         |
         ヽ _ _ 」

     ウプレカス [ uBLAS ]
  ( 西暦一世紀前半 ~ 没年不明 )


374:デフォルトの名無しさん
06/11/28 02:00:21
ublasのsolveで使われるlower_tagやupper_tagはどのような意味があるのですか?
ドキュメントからは見つけられませんでした。

375:デフォルトの名無しさん
06/11/28 02:16:43
>Solves a system of linear equations with triangular form, i.e. A is triangular.
とあったので、Aは三角行列でなければならず、そのタイプを示すのがtagでしょうか?
もしそうなら結局LU分解しなきゃダメなのであまり使えないですねこれ・・・

376:デフォルトの名無しさん
06/11/28 02:34:33
atlas::cholesky_factor
のように三角行列しかうけつけない関数がある

普通の行列の上半分つかってを三角行列にするときに使うのが
upper_tag

377:デフォルトの名無しさん
06/11/28 06:42:02
>>364
ユーブラスじゃね?

378:デフォルトの名無しさん
06/11/28 12:51:52
>>377
>>373

379:デフォルトの名無しさん
06/11/29 14:39:30
Geometry Library ってひょっとして複数の候補があるのか?

URLリンク(boost-consulting.com)

いったいどれを使ったらいいんだ

380:デフォルトの名無しさん
06/11/29 19:46:16
boost1.33.1をVCEEで使おうと思ってインストールしようとしたのですが失敗してしまいます

bjam "-sTOOLS=vc8_0" install とすると
...skipped <@boost!include!boost-1_33_1!boost!wave!util>unput_queue_iterator.hpp
for lack of <directory-grist>C:\Boost\include\boost-1_33_1\boost\wave\util...
のようなメッセージが大量に出て最後に
...failed updating 2 targets...
...skipped 4805 targets...
と表示されて終了してしまいます
どうしてでしょうか?どなたか解決策を教えてくださいお願いします

381:デフォルトの名無しさん
06/11/29 23:29:29
sdkへのパス通して↓でうちはいけた(いま使ったことのある範囲ではだけど
>bjam -sTOOLS=vc-8_0 --prefix="C:\Program Files\Microsoft Visual Studio 8\VC" install

エラーもエラーで長いから憂鬱だよな

382:デフォルトの名無しさん
06/12/01 22:51:51
>>381ありがとうございます
sdkへのパスとは
C:\Program Files\Microsoft Visual Studio 8\SDK
のことでしょうか?
パスを通すというのは、システム環境変数のpathに追加するということですよね?
色々追加してやってみましたが、結果は変わりませんでした

383:デフォルトの名無しさん
06/12/01 23:15:17
URLリンク(www.boost.org)
vsvars32.batを編集する必要がある

384:デフォルトの名無しさん
06/12/02 00:48:42
む、あいまいかつ適当な書き方して申し訳なかった
そのときのメモ見たら
set INCLUDE=C:\Program Files\Microsoft Platform SDK\Include
してC:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat走らせて
bjam -sTOOLS=vc-8_0 --prefix="C:\Program Files\Microsoft Visual Studio 8\VC" install
したって書いてあった。

set LIB=C:\Program Files\Microsoft Platform SDK\Libはvcvarsallがやってくれたっぽいが
標準でやってるのか自分でbat編集したのかは覚えてない

まあ>>383の通りです

385:デフォルトの名無しさん
06/12/03 00:10:04
>>383-384ありがとうございます
set INCLUDE=C:\Program Files\Microsoft Platform SDK\Include
set LIB=C:\Program Files\Microsoft Platform SDK\Lib
bjam -sTOOLS=vc-8_0 --prefix="C:\Program Files\Microsoft Visual Studio 8\VC" install
とやってみましたが、相変わらず大量のエラーメッセージが出てしまいます

383のリンクを見てみましたが、PlatformSDKが必要ということとvsvars32.batを編集しないといけないということは分かったのですが
英語が苦手なので具体的にどこをどう編集しないといけないのか分かりませんでした
本当にすみません

VCEEではなかなか出来ないのでBCB6.0でやってみようと思い、
>1にあるLet's Boostを参考にして↓のようにやりましたが、また同じようなエラーが出てしまいました
C:\lib\boost_1_33_1>set PATH="C:\Program Files\Borland\CBuilder6\Bin";%PATH%
C:\lib\boost_1_33_1>bjam -sTOOLS=borland --prefix="C:\Program Files\Borland\CBuilder6" install
何でやってもダメということは何か基本的な設定が出来てないのでしょうか?

386:デフォルトの名無しさん
06/12/03 01:50:50
vcvarsall.batの

@set INCLUDE=
@set LIB=

の部分に;で区切って追加する

387:358
06/12/03 07:12:58
VC++6.0、IDEも軽くていいんだけどなぁ。
MFCのランタイムも普及してて、Win98以降のOSなら何でも動くし。
でも、そろそろ新しいバージョンに移行した方がいいのかもね…
考えてみれば、8年前の開発環境なんだよね… >6.0

388:デフォルトの名無しさん
06/12/03 07:14:27
テンプレートの対応もアレだしね。6.0

389:デフォルトの名無しさん
06/12/03 18:33:22
phoenix::bindがspirit::parseのオーバーロードを解決してくれない・・・
lambda::bindならいけるのに・・・

390:デフォルトの名無しさん
06/12/03 22:17:45
>>386ありがとうございます
vcvarsall.batには@set INCLUDEと@set LIBがありませんでした
vsvars32.batにはあったのでそれを↓のように編集しました
@set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;%C:\Program Files\Microsoft Platform SDK\Include;%INCLUDE
@set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;C:\Program Files\Microsoft Platform SDK\Lib;%LIB%

それから↓のようにコマンドを打ち込んでみましたが、やはり>>380と同じようなエラーが出ました
C:\lib\boost_1_33_1>"C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat"
Setting environment for using Microsoft Visual Studio 2005 x86 tools.
C:\lib\boost_1_33_1>bjam -sTOOLS=vc-8_0 --prefix="C:\Program Files\Microsoft Visual Studio 8\VC" install

VCEEだけでなくBCB6.0でもVC6.0でも失敗しました
どうやら私には無理なようです
regexだけ↓のコマンドでインストール出来たのでもうこれで一旦諦めます(これはVCEEでもBCB6.0でも出来ました)
C:\lib\boost_1_33_1\libs\regex\build>"C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat"
Setting environment for using Microsoft Visual Studio 2005 x86 tools.
C:\lib\boost_1_33_1\libs\regex\build>nmake -fvc8
C:\lib\boost_1_33_1\libs\regex\build>nmake -fvc8 install

今度もう少しコマンドプロンプトやBoostの基本を勉強して再挑戦してみます
スレ汚ししてすみませんでした
それから答えてくれた皆さんありがとうございました

391:デフォルトの名無しさん
06/12/03 22:32:02
自分は@setにboostのパスも通してるな
必須なのかは忘れた

よくがんばった。もうこれでいいじゃない
URLリンク(www.boost-consulting.com)

392:デフォルトの名無しさん
06/12/04 15:52:07
#include <boost/test/unit_test.hpp>


void test() {}


boost::unit_test::test_suite* init_unit_test_suite(int, char*[])
{
boost::unit_test::test_suite* suite = BOOST_TEST_SUITE("Test suite");

suite->add(BOOST_TEST_CASE(&test));

return suite;
}
上記のコードをgcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)で
g++ a.cpp -lboost_unit_test_framework-gcc-d
によりコンパイルしたところ、
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../crt1.o(.text+0x18): In function `_start':
../sysdeps/i386/elf/start.S:77: undefined reference to `main'
collect2: ld はステータス 1 で終了しました
とリンクエラーになってしまいます。
(MS VC++ 8とgcc 3.4.4(cygming special)では正常にコンパイル&リンク&実行出来ました。)
-lboost_unit_test_framework-gccにしても、また g++ と a.cpp の間にこれを書いても同様に
リンクエラーになってしまいます。
(g++ a.cpp libboost_unit_test_framework-gcc-d.a
とすると正常にリンク、実行出来ます)
これはgccもしくはboost側の問題でしょうか?
それともコンパイラオプションが何か足りないのでしょうか?


393:デフォルトの名無しさん
06/12/06 18:33:41
URLリンク(www.kmonos.net)
これだけでは、boost.testの便利さが今ひとつ理解できない


394:デフォルトの名無しさん
06/12/06 19:31:20
CPPUNITでいいんじゃね

395:デフォルトの名無しさん
06/12/06 21:51:02
bjamでいろんなコンパイラ上で一気にテストできる
問題はbjamの使い方がよく分からないこと

396:デフォルトの名無しさん
06/12/08 15:24:39
scoped_arrayはvectorと違ってソートできない?

397:デフォルトの名無しさん
06/12/08 15:47:25
>>396
なんで?

398:デフォルトの名無しさん
06/12/08 16:40:54
begin(),end()が無いから

399:デフォルトの名無しさん
06/12/08 16:49:42
ポインタ渡せばいいじゃん。
ランダムアクセスイテレータの用件満たしてるよ。

400:デフォルトの名無しさん
06/12/08 17:02:05
了解
ありがとう

401:デフォルトの名無しさん
06/12/08 17:32:49
math.Geometryの下がカオスで試そうという気自体おきない
しかしGeometry関係の処理はしたい。
boost以外を探すべきか

402:デフォルトの名無しさん
06/12/08 20:01:44
>>398
つmake_iterator_range

403:デフォルトの名無しさん
06/12/10 21:09:05
επιστημη氏ってboostに関して何か書いてたっけ?
MFCからSTLに関しては、いろんな所に書き散らかしてるけど

404:デフォルトの名無しさん
06/12/10 21:43:46
>>403
なんの脈絡もなく突然どうした? スレを間違えたのか?
とりあえず、例の翻訳プロジェクトには参加してるみたいだけど。
URLリンク(sourceforge.jp)

405:デフォルトの名無しさん
06/12/11 07:05:53
>いろんな所に書き散らかしてるけど

を見て、さらにスレ違いな質問を思いついた。
boost使いってPC系ではどんな雑誌読んでる?情報収集はネットのみ?


406:デフォルトの名無しさん
06/12/11 07:18:35
「boost使い」と名乗っていいレベルかどうか自信ないけど、
俺は雑誌は一切読まない。
いや、別に「絶対読まねえぞ」みたいなこだわりがあるわけじゃないけど。

407:デフォルトの名無しさん
06/12/11 10:41:12
最近はPC系というかプログラミング系の雑誌自体あんま見かけないしな
boost devel や c++.moderated つまみ食いしてた方がよほど有益

408:デフォルトの名無しさん
06/12/11 10:49:26
日経ソフトウェアとインターフェースと、あとなんかあったっけ?

409:デフォルトの名無しさん
06/12/11 19:31:43
俺もプログラミング系の雑誌は読まんな。
bitとか良い雑誌があった頃が懐かしい。

410:デフォルトの名無しさん
06/12/11 21:15:10
それこそ
boost.spritで遊ぼう!
みたいな特集を組むある意味アホな雑誌がでてたら買う

411:デフォルトの名無しさん
06/12/11 21:22:51
正規表現特集でboost.regexがちょこっと紹介されるのが関の山だな。

412:デフォルトの名無しさん
06/12/11 22:16:53
C/C++ Users Journalが合流したDDJとか。
URLリンク(www.ddj.com)

413:デフォルトの名無しさん
06/12/11 22:56:30
boostってlokiのtypelistに相当するやつあります?

414:デフォルトの名無しさん
06/12/11 22:58:44
>>413
mpl::list

415:デフォルトの名無しさん
06/12/11 23:30:11
thx

416:デフォルトの名無しさん
06/12/12 00:42:18
拡張子hppって古めかしい気がするのは俺だけ?
#include で拡張子なし <boost/shared_ptr> って動きは無いのだろか?

417:デフォルトの名無しさん
06/12/12 01:17:54
>>416
かつて、標準化委員会は理想に燃えていました。
拡張子などという原始的なもので、
ファイルの種類を表すべきではないという強い意志がありました。

はて、2006年になっても、その理想は実現されそうにないのですが。

418:デフォルトの名無しさん
06/12/12 01:31:13
どっちでもいいけど、標準C++ライブラリと違うのは気持ち悪い

419:デフォルトの名無しさん
06/12/12 02:27:45
>>417
そのへんって確か、過ちを認めて今からでも元に戻そうって動きもなかった?

420:デフォルトの名無しさん
06/12/12 03:08:53
>>419
今後出る標準ライブラリに拡張子をつけられたとしても。
いまある標準ライブラリはそのまま残すしかないでしょ。
たとえこんなものでもね

// これはC99のiositreamとの下位互換性のためにあるぜ。
//実体はiostream.hな。
#include <iostream.h>

421:デフォルトの名無しさん
06/12/12 03:10:50
>>419
それは、たぶんこれだろう。ちょっと違う。
URLリンク(www.open-std.org)
"We should accept the fact that we made a serious mistake and rectify it, however belatedly, ..."

422:デフォルトの名無しさん
06/12/12 03:11:31
拡張子ないとエヂタとか使うとき後からシンクタック指定するの面倒やん

423:デフォルトの名無しさん
06/12/12 07:58:42
俺は、拡張しありでいいが、.cppと.hppはどういうわけだか好きになれない。
.Cと.hにしている。大文字小文字区別しないファイルシステムだと問題の種になることもあるが。

424:デフォルトの名無しさん
06/12/12 08:03:12
>>423
なんで技術的デメリットを無視してまで理由のはっきりしない好みを優先させるの?

425:デフォルトの名無しさん
06/12/12 09:25:24
趣味だから

426:デフォルトの名無しさん
06/12/12 09:48:40
C++ でしか使えないようなヘッダなのに .h を使うのは嫌いだナ
(Cからでも使えるようなヘッダなら .h で問題ない)

.cpp / .hpp とか、 .cc / .hh とか、ちゃんと名前が揃っていればまあ良いんじゃないかと

427:デフォルトの名無しさん
06/12/12 09:50:51
俺は .h / .cpp だな。
不揃いじゃね? と言われれば、うーん、確かにそうなんだが。

428:デフォルトの名無しさん
06/12/12 13:04:07
>>427
俺もそれ。hppはなんか嫌い。

429:デフォルトの名無しさん
06/12/12 13:05:33
>>416
せっかく標準がユーザー側のヘッダとぶつからない配慮してくれてんのに、
同じルールにしたら意味ないじゃん

430:デフォルトの名無しさん
06/12/12 17:13:15
>>422
#includeで指定するヘッダ名は実際のファイル名である必要はない、少なくとも標準のものは。
たとえばBorland C++では適当な拡張子を付けたファイルをインクルードしている。

431:デフォルトの名無しさん
06/12/12 18:23:17
>>430
理想と現実は違うよ。

432:デフォルトの名無しさん
06/12/12 18:39:42
え? 理想の話をしてるんじゃないの?

433:デフォルトの名無しさん
06/12/12 20:12:44
理想じゃなくて規格の話だろ

434:デフォルトの名無しさん
06/12/12 21:18:39
理想の規格はどうあるべきかという話だよん

435:デフォルトの名無しさん
06/12/12 23:34:22
という夢を見た

436:デフォルトの名無しさん
06/12/13 18:06:28
testプログラムを1つ与えると
交差検定も自動でやってくれるようなプログラムがあったはずなのだけど
boostの中にはないの?

437:デフォルトの名無しさん
06/12/15 19:19:14
>>380
いまさら亀レスで悪いんだが、
俺も同じエラーで失敗しとります。

コマンドラインのログ追っかけていたら、
MKDIRコマンドで失敗しとりました。
"MKDIR"が"MKDIR1"になってて、ディレクトリを作れないようです。
最初に
stageディレクトリを作れません。→死亡
lack of stage なのでlibs作れません →死亡
で以降すべてエラー。

俺はmsvc6.0なんで>>391も使えないし・・・
どこを直せばいいか分からぬ、、
誰か助けてorz

438:デフォルトの名無しさん
06/12/15 19:24:24
丸二日スレストってるので僭越ながらageさせて頂きます

439:デフォルトの名無しさん
06/12/15 22:17:27
vc8はタダなんだから落としてこいよ


440:デフォルトの名無しさん
06/12/15 22:17:45
bjamのバージョンを下げたらビルドできました
でも最新のでやりたかったです。
誰かエロい人いたら
bjamの3.1.13-1
で出来るか試してみてくれませぬか、
3.1.11-1だと上手くいきました。

441:デフォルトの名無しさん
06/12/15 22:44:19
そこまでしてVC6にしがみつく理由がわからん。


442:デフォルトの名無しさん
06/12/15 22:54:37
gccもあるし、8にもそのうち乗り換えるさ…

つかコンパイラの話しじゃなくて、bjam3.1.13-1が動かなくない?
って話しで

443:デフォルトの名無しさん
06/12/15 23:16:56
プリコンパイル済みヘッダー と boost.testって一緒に使えないのかな


444:デフォルトの名無しさん
06/12/15 23:44:45
VC6は(今の基準では)C++として腐ってるからBoost向きではない

445:デフォルトの名無しさん
06/12/15 23:53:02
VC6は2038年問題とかだけでも捨てるべきだろ。
少なくとも業務で使ってるってのならその会社は潰れてしかるべき。
ぜひ潰れて欲しい。

446:デフォルトの名無しさん
06/12/16 01:39:05
Cとしてしか使わないならVC6最高じゃん

447:デフォルトの名無しさん
06/12/16 01:49:43
>>466
同感!

最近 STL 使おうって思ってやっと 2005 に切り替えました!


448:デフォルトの名無しさん
06/12/16 02:23:20
激しくスレ違いで申し訳ないが…

8だとテンプレートをネスト出来たりするかね?
ならば今すぐ買いに行くさ。

449:デフォルトの名無しさん
06/12/16 02:34:38
するする。今すぐ買いに行け。

450:デフォルトの名無しさん
06/12/16 02:36:43
これか?
template < typename T >
struct Foo
{
template < typename P >
static void Bar() ;
} ;

Foo<int>::Bar<int>() ;


あるいはこれか?
template < typename T,
template<typename, typename>
class Container >
class Foo
{
Container< T, std::allocator<T> > cont ;
} ;

Foo< int, std::vector > FooVec ;

どちらもできる……が、後者は、なぜかテンプレートテンプレートパラメータのデフォルト引数が使えない。

//エラー
template< template <typename, typename = std::allocator<int> > class Container >
class Foo
{ Container<int> cont ; } ;

451:デフォルトの名無しさん
06/12/16 02:39:46
まじかよ…
部分特殊化だけかと思ってた…

今すぐ買いに行くわ
確かファミマにあったはず。アカデミックだけど。

452:デフォルトの名無しさん
06/12/16 02:44:32
あ~、後者ですわ。
デフォルト指定は無理なのかぁ…、
まぁいい機会だし買いに行きま。

453:デフォルトの名無しさん
06/12/16 02:44:41
>テンプレートテンプレートパラメータのデフォルト引数
そんな言語機能があったなんて!
いったいなんのためにあるんだろう。

454:デフォルトの名無しさん
06/12/16 03:29:27
メタ関数として使えそうなんで用意したけど実際にはいまいち使えなかった、
という感じか?>テンプレートテンプレートパラメータ

455:デフォルトの名無しさん
06/12/16 03:47:12
いや、テンプレートテンプレートパラメタには意味があると思うんだが、
テンプレートテンプレートパラメタ「の」デフォルト引数ってなかなか出てこない発想じゃないだろうか。
ふつうの関数だと
void f(int (*g)(int = 7)){}
不正みたいだし。

456:デフォルトの名無しさん
06/12/16 03:50:58
普通に使いますから。
テンプレートクラスでデフォルト引数が使えるのは(allocatorなど)当たり前のことだし、
テンプレートの引数に、テンプレートクラス使えないのは不便で仕方がない。


457:デフォルトの名無しさん
06/12/16 06:04:31
そこで、boost.preprocessorですよ。

458:デフォルトの名無しさん
06/12/16 06:06:57
え、VC8でも
hoge<hage<int>>;
みたいのはできないの?

デフォルト引数を定義しなければ使えるってこと?

459:デフォルトの名無しさん
06/12/16 06:15:31
>>458
シンタックスエラー!

460:デフォルトの名無しさん
06/12/16 06:40:06
uho!

461:デフォルトの名無しさん
06/12/16 06:46:08
>>457
preprocessorで何ができると?

462:デフォルトの名無しさん
06/12/16 12:19:11
Tはテンプレート引数でコンテナ型です。

typedef typename boost::mpl::if_<boost::is_const<T>, typename T::const_iterator, typename T::iterator>::type Hoge;
typedef typename boost::mpl::if_<boost::is_const<T>, typename T::const_pointer, typename T::pointer>::type Hage;
typedef typename boost::mpl::if_<boost::is_const<T>, typename T::const_reference, typename T::reference>::type Debu;

こういうことをやりたいんですが、もっとシンプルに記述できる方法はないでしょうか?

463:デフォルトの名無しさん
06/12/17 06:55:37
プリプロセッサを使ってもシンプルにはならないだろうし、読みにくくなるだけかと。
そもそも何でそういうことがしたいのか分からない。
渡されたコンテナがconstでなければ、書き換える。
constであれば書き換えないという、奇妙な関数でも書きたいのだろうか。

464:デフォルトの名無しさん
06/12/17 17:28:40
>>462
boost::range_result_iterator< std::vector< int > >::type         // -> std::vector< int >::iterator
boost::range_result_iterator< const std::vector< int > >::type // -> std::vector< int >::const_iterator

あとは上のように獲得した iterator 型に boost::iterator_[reference|pointer] を適用

465:デフォルトの名無しさん
06/12/17 23:17:11
>>464
うわぁ、Boost.Rangeチョー便利ナリ・・・
boost::sizeとかあるし。sizeof(a) / sizeof(a[0])とかしてたのが馬鹿みたいだ。
いいものを教えてもらった、ありがとう。

466:デフォルトの名無しさん
06/12/18 08:19:06
templateもろくに通らないからVC6から2005に切り替えたよ

467:デフォルトの名無しさん
06/12/18 15:00:59
今度はワイド文字ストリームがろくに使えないVC 2005。

468:デフォルトの名無しさん
06/12/18 16:09:31
VC 2005 SP1で直る・・・はず・・・だといいな・・・

469:デフォルトの名無しさん
06/12/18 18:20:48
その SP1 では graph library が使えないということらしいが

470:デフォルトの名無しさん
06/12/18 18:23:55
>>468
直ってないような気がする・・・

471:デフォルトの名無しさん
06/12/18 18:28:28
いや、気がするんじゃなくて間違いなく直ってないや。

472:デフォルトの名無しさん
06/12/18 18:40:36
SP1出たんだな

473:デフォルトの名無しさん
06/12/18 18:46:01
STLPort使うとなぜかは知らないがlocale::globalの後でもimbueが効くようだ。

474:デフォルトの名無しさん
06/12/18 21:57:24
なあ、boostいじってるC++狂の連中はWebアプリケーションはなにで
書いてるんだ?
俺、JavaもPerlもやる気しねーよ。もっとC++でWebアプリ書くフレーム
ワークとか環境とか色々あってもいいのになあとか思うんだが。

475:デフォルトの名無しさん
06/12/18 21:59:52
boostいじってるC++狂の連中はWebアプリケーションなんてかったるいものは
書かないんじゃないかな

476:デフォルトの名無しさん
06/12/18 22:00:27
Perlは確かに使う気しないがJavaなら別にいい

477:デフォルトの名無しさん
06/12/18 22:12:09
スレ違いだと思うのでURLだけ
URLリンク(ws.apache.org)
URLリンク(www.cs.fsu.edu)
URLリンク(www.xlsoft.com)

478:デフォルトの名無しさん
06/12/18 22:18:51
boost::CppOnRailsができるのを待つか

479:デフォルトの名無しさん
06/12/19 00:42:34
>>474
なんか「柴犬」とか言うtomcatもどきをC++で実装してテストしてるスレがあった希ガス


480:デフォルトの名無しさん
06/12/19 07:44:46
sscanfみたいなのを
正規表現で指定できる関数はあるのでしょうか?



481:450
06/12/19 08:04:30
SP1いれたら、テンプレートテンプレートパラメータのデフォルト引数が使えるようになっていた。

482:デフォルトの名無しさん
06/12/19 14:13:59
boost MLに何度か投稿していたら
software関係conferenceの Invitation to submit a paper
(おそらくSPAMの一種だと思う)がくるようになった。

同種のメールは、自分の専門分野の関連領域でもくるのだが
( inviteされるような仕事してねえのに invite ってなんだよ)

software関連のは本当に怪しいのかを見分ける手段がない
なにか見分ける方法ないものか

483:デフォルトの名無しさん
06/12/19 19:52:06
すみません、質問させてください
基本型あるいはユーザ定義型の配列の要素数を返す関数を作ろうとしてるんですが
arrayがユーザ定義型の配列であった場合でも
/* ① */の処理がコンパイルされるためエラーになってしまいます

template <typename T> void count(T array[]){
if(boost::is_pod<T>::value){/* ① */}
else{/* ② */}}

WEBで調べているとboost::enable_ifで解決できそうな予感がしたのですが
自分には次の例がよく理解できません(特に::type*=0の部分)
これはどういった理屈で動いているんでしょうか

template<typename T> void copy_n( const T* from, int n, T* to,
typename enable_if< is_pod<T> >::type* =0 ){/* 省略 */}

484:デフォルトの名無しさん
06/12/19 20:09:40
>>483
enable_ifやdisable_ifは、関数のオーバーロード解決のルールをトリッキーに使っている。

やりたいことを実現する方法はいくつかある。
たとえばこんな方法。

//false以外、すなわちtrueの場合に呼ばれる
template < bool isPod >
struct Count_impl
{ static void do() {/* 1 */} } ;

//特殊化、falseの時に呼ばれる
template < >
struct Count_impl<false>
{ static void do() {/* 2 */} } ;

template < typename T >
void count(T array[])
{
 Count_impl<boost::is_pod<T>::value>::do() ;
}

485:デフォルトの名無しさん
06/12/19 20:11:15
>>483
enable_if<is_pod<T> >
には、TがPODならtypeメンバがあり、そうでなければtypeメンバがない。
したがって、TがPODでないとき、typename enable_if<is_pod<T> >::typeは
不正な型であり、SFINAE規則によってこの定義が多重定義の考慮から外される。
結果として、TがPODであるときのみ考慮される定義ができたわけだ。
typename enable_if<is_pod<T> >::typeは、このコンパイル時選択の機構のためだけに
使われているので、インタフェースに影響を与えないようにデフォルト値付きの引数になっている。
ポインタを取っているのは簡潔に0で初期化できるようにだろう。

486:483
06/12/19 21:31:23
>>484,485
レス感謝です
おかげさまで理解できました

>>484
こういう風にすればenable_ifなしでいけるんですね
なんとかそのプログラム理解はできても
自分で書けるようになるまでが大変だ・・
とりあえずこれを参考に頑張ってみます

>>485
enable_if< is_pod<T> >::type* =0
ええと、この式の場合だと
組み込み型の場合はtypeメンバが存在するわけですよね
そして組み込み型でない場合はtypeがないから定義自体されない
それだと* =0はなくても大丈夫なんじゃ?と思ったけど
この引数はコンパイル時にifの役割を果たせばよいから省略可能にしたい
省略可能にするには=とデフォルト引数が必要で
typeをtype*にすればどんな場合でも0が代入できる
うーむ、よく考えられてますね

487:デフォルトの名無しさん
06/12/19 22:46:08
個人的には返り値型に使うほうが好き>enable_if

488:デフォルトの名無しさん
06/12/20 01:12:34
>>482
自分で「おそらくSPAMの一種だと思う」なら、ちゃんと見分けられてるじゃないか。

489:デフォルトの名無しさん
06/12/20 03:58:16
>>487
コンストラクタだとデフォルト引数として仕掛けるしかないけれどね

逆に引数の数が固定されていて余計なデフォルト引数が仕掛けられない
演算子関数定義だと戻り値型一択になるね

490:デフォルトの名無しさん
06/12/20 20:21:16
そもそも483が作ろうとしていると言う配列の要素数を返す関数は、
基本型かユーザ定義型かで分けて一体何をするのか気になる。

配列の要素数と言えばそもそもboost::size()で済むような話ではないのか?

491:デフォルトの名無しさん
06/12/20 20:32:25
>>490
番兵を思いついた。
podな型に対しては、ある値を決めておき、
俺様クラスについては、専用のフラグでも用意しているとか。

492:デフォルトの名無しさん
06/12/21 16:05:56
boost開発者向けMLに、自分用に作った
プログラム(boostの既存libの部品の追加してるだけだけど)、
死蔵するのもったいないから
ときどき投稿してたんだけど、
最近、無視されてるっぽい。

493:デフォルトの名無しさん
06/12/21 17:41:27
boost使いはVS2005にSP1はあてるのかい?

494:デフォルトの名無しさん
06/12/21 17:56:40
当たり前だ

495:デフォルトの名無しさん
06/12/21 21:36:36
>>492
何か不満か? ML に晒したんなら勝手に使ってる奴もいるだろう。
使った人が必ずレスポンスを返すわけでもなし。
死蔵にはならずに済んだんだからいいだろ。

496:デフォルトの名無しさん
06/12/21 22:52:25
boost.cppll.jp 落ちてる?

497:デフォルトの名無しさん
06/12/21 23:29:55
ぽいね。俺も繋げない

498:デフォルトの名無しさん
06/12/22 11:42:53
ublasのatlasへのインターフェイスをbackendと表現してるのだが
backendってそういう意味なんだっけ?

499:デフォルトの名無しさん
06/12/22 12:01:23
まあCORBAとDCOMではproxy/stubが逆転していることですし

500:デフォルトの名無しさん
06/12/22 15:15:00
>>499
それは主体をどっちに置くかという話から帰着した結果だからあんまり関係ない気が。


501:デフォルトの名無しさん
06/12/22 23:08:58
atlasは下請けや補完をやるわけだから、
ublasから見ればたくさんあるbackendの一つってことでしょ。

502:デフォルトの名無しさん
06/12/24 12:39:36
boostの日本語ドキュメントプロジェクトって2003年で更新止まってるよね
サーバーも落ちてるみたいだけど、誰もメンテナンスしてないの?

503:デフォルトの名無しさん
06/12/24 17:51:43
ublas今試してるんだけど、
VC++2005でboost1.33_1だとsparse_matrixとsparse_vectorは定義されていないと怒られてしまう。
matrix_sparse.hppとvector_sparse.hppはきちんとインクルードしているんだけど、なぜに?


504:デフォルトの名無しさん
06/12/24 18:41:52
しかも、mat[i][j]とかで行列の要素にアクセスするとか、lu_factorizeもコンパイルエラー。なんでやろ・・・。

505:デフォルトの名無しさん
06/12/24 18:49:16
エラーメッセージも張らずに日記かよ。いい加減にしろ

506:デフォルトの名無しさん
06/12/25 13:27:53
>>504
mat[i][j]の書き方はできなくなった
今は
mat(i,j)


507:デフォルトの名無しさん
06/12/25 13:47:21
Boost.Python でPythonから呼ぶようにした関数って
Cとして呼ぶよりも処理が遅くなったりするの?


508:デフォルトの名無しさん
06/12/26 16:16:15
すみませんが、質問です。
Debian Sarge(EUC-JP)上でBoostのsplitなどをを使いたいのですが、ソースコー
ドの文字列をEUC-JPにするとエラーになってしまいます。

#include <boost/algorithm/string.hpp> を含むソースで
g++-3.4 -finput-charset=EUC-JP -fexec-charset=EUC-JP test05.cpp -o test05
を実行すると、
/usr/include/boost/function/function_base.hpp:23:25: failure to convert EUC-JP to UTF-8
このようなエラーに。
なお、ソースではwchar_t, wstringを使っています。

ソースをUTF-8に、オプションを-finput-charset=UTF-8 にすると動くように
なりますが、やはりこれは不便です。

ソースをEUC-JPのままで使う方法はないでしょうか?


509:デフォルトの名無しさん
06/12/26 18:55:42
age

510:508
06/12/26 19:42:26
追記です。
コンパイル時のエラーは、こんな単純なソースでも起こってしまいます。
エラー再現には、ソースにワイド文字リテラルが含まれる必要はありません。
------------------
#include <boost/algorithm/string.hpp>

int main(void)
{
return 0;
}
------------------
g++-3.4 -finput-charset=EUC-JP -fexec-charset=EUC-JP test06.cpp -o test06

/usr/include/boost/function/function_base.hpp:23:25: failure to convert EUC-JP \to UTF-8

EUC-JPではマルチバイト文字を使えということなのかもしれませんが、せっかく
対応しているのだからワイド文字を使いたいのです。


511:デフォルトの名無しさん
06/12/26 19:56:55
>>510
boost/ref.hppがLatin-1で書かれているのが問題っぽいな。
ASCIIに直すようにお願いする位しか解決策が思いつかないが。

512:508
06/12/26 20:20:55
>>511
ありがとうございます。
ref.hppの17行目でしょうか?そこを削除しても、やはり同じエラーが出ます。

他に気づいたことは、-finput-charset=utf8 などと書いても、「UTF-8に変換
できない」というエラーになることです。大文字ハイフン入りの「UTF-8」以外
受け付けません。

もしかしたらGCC自体が、テンプレートライブラリがUTF-8以外であることに対応
していないのでしょうか?


513:デフォルトの名無しさん
06/12/26 20:38:10
>>508
この辺を参考に
URLリンク(search.gmane.org)
URLリンク(permalink.gmane.org)

>>512
インクルードファイルの中に他にも含まれていないか
チェック。utility/enable_if.hpp とか

$ iconv -l

で使用できる文字コードは分かる

514:508
06/12/26 21:08:11
>>513
ありがとうございます。よく読んでいませんが、結局コードの変換ルールが問
題ということでしょうか。

grep -r Jaakko /usr/include/boost/

これで検索したところ66件ありました。他にもlatin-1の名前はあるかもしれ
ません。さすがに直す気が失せました。

とりあえず、コンパイル前にiconvをかけることにします。いずれはUTF-8環境
に移行した方が良さそうです。


515:508
06/12/27 00:25:09
URLリンク(permalink.gmane.org)
を読んで思ったのですが、どうやらUTF-8にすれば完全解決というわけではな
いようですね。

g++ -finput-charset=EUC-JP

こう書くと、GCCはソースファイルを、includeされるヘッダライブラリまです
べてEUC-JPだとみなします。そしてそれを libiconv で UTF-8 に変換しよう
とします。このとき(ヘッダファイルに)EUC-JPに含まれない文字コード
(Latin-1など)があったらエラーになってしまいます。

g++ -finput-charset=UTF-8 (または-finput_charsetの指定なし)

こう書くと、GCCはソースファイルを、includeされるヘッダライブラリまです
べてUTF-8だとみなします。しかし今度は変換の必要がないので、libiconv は
呼ばれません。ヘッダライブラリも変換されません。

これで通常は問題はなくなるわけです。しかし、

・ヘッダライブラリのエンコーディングがUTF-8でない。
・ヘッダライブラリに wcha_tのリテラルがある。

(あまりないでしょうが、)この2つが同時に起こると、ライブラリは正しく
動作しません。

結局、すべてのヘッダファイルがUTF-8で統一されるか、Pythonのように各ソー
スファイルにエンコーディングの宣言ができるようにしないと、完全解決とは
言えないようです。いずれも一ユーザにはどうしようもない話ですが。

Boostとあんまり関係なくてすみません。

516:デフォルトの名無しさん
06/12/27 13:04:16
初心者的質問で申し訳ありません。
>>391でインストールするとき、最初に
default variantsを選んでください
って言われて、
Multithred Debug, DLL
Multithred, DLL
Multithred
Multithred, static runtime
Multithred, Debug, static runtime
Single thred, static runtime
Single thred, Debug, static runtime
の中から選択させられるんですが、ノーパソ用ペンティアム3(1.13GHz)とノースウッドコアペンティアム4(3.2Ghz)
の場合、どれを選べばいいんでしょうか。
マルチスレッデッィングとシングルスレッディング用CPUの違いくらいしか分からないので・・・

517:デフォルトの名無しさん
06/12/27 14:35:53
Multithred/Single thredはCPUの問題じゃない


518:デフォルトの名無しさん
06/12/27 14:36:53
boostにはデバッグは特にいらないと思う。かなりでかくなるから。
DLLにするかどうかだけど、初心者ならスタティックでいいと思う。
あとはスレッドを利用するならマルチスレッド、しないならシングルスレッド。
シングルスレッドで速度を追求するならシングルスレッドだけど
通常はマルチスレッドでいいと思う。

519:デフォルトの名無しさん
06/12/27 14:37:16
thred?

520:518
06/12/27 14:37:42
訂正
×特に ○別に

521:516
06/12/27 14:45:12
ありがとうございます。
ではとりあえず
Multithred, static runtime
でインストールして使ってみます。
なお、参考までにお聞きしたいのですが、DLLにするとどういった使い方が可能になるのですか?

522:デフォルトの名無しさん
06/12/27 14:49:20
templateなlibraryにDLLもくそもないから気にするな。

523:デフォルトの名無しさん
06/12/27 15:11:02
>>521
DLLの特長はここに書いてある。
URLリンク(e-words.jp)
必要ならDLLを選ぶといいと思う。

524:デフォルトの名無しさん
06/12/27 16:19:19
vc2005 sp1の現状

std;;wstring s = L"漢字";
// std::wcout << s << std::endl; //←ここをコメントアウトすると何もでなくなる
std::wcout.imbue(std::locale("japanese")
std::wcout << s << std::endl; //←出る
std::locale::global(std::locale("C"));
std::wcout << s << std::endl; //←出る

よくわかんないけどMSの開発担当者はもっとまともなロケール実装者が来るまで正座な。


525:デフォルトの名無しさん
06/12/27 16:22:23
boostとは直接関係ないけど、これ直ってないのか。なんのためのSPなんだか('A`)

526:デフォルトの名無しさん
06/12/27 20:10:24
>>524
とりあえずSTLport使っとくとlocale::globalの後に
それぞれimbueすればちゃんと動くらしいよ。
付属のだとそれすら効かない。

std::locale loc("japanese");
std::locale::global(loc);
std::wcout.imbue(loc);
std::wcout << L"ぶーすと" << std::endl;

527:デフォルトの名無しさん
06/12/27 23:15:10
ublasでrankは求められなかとですかい?
rank求めるのにlu分解は精度の問題で、一般には使われてないとか書いてるけど、
どの程度精度に問題でてくるんだろうね。

528:デフォルトの名無しさん
06/12/28 12:41:32
URLリンク(www.page.sannet.ne.jp)を参考にして
ublasで逆行列を求めようとしているのですが、lu_factorizeの呼び出しでコンパイルエラーになります。
エラーメッセージが大量なので、ソースと一緒にアップローダに上げておきます。
URLリンク(zetubou.mine.nu)

529:デフォルトの名無しさん
06/12/28 13:06:13
実行時エラーなら出るがコンパイルエラーは出ないな。
VC8SP1 + Boostは11月の頭にCVSから

F:\>cl -nologo -EHsc -ID:\Boost inv.cpp
inv.cpp

F:\>inv.exe
Check failed in file D:\Boost\boost/numeric/ublas/triangular.hpp at line 2435:
e1 () (n, n) != value_type ()

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

F:\>


530:デフォルトの名無しさん
06/12/28 15:50:10
November 28, 2006 - Function Types Accepted

531:デフォルトの名無しさん
06/12/29 19:50:03
VC7 でserializationのlib出きへんのやけど
なんか必要?

532:528
06/12/29 20:29:50
boostを1.32.0に入れ替えてみたところコンパイル出来ました。
実行時エラーは、おそらく係数行列を適当に設定したため発生したのだと思います。
係数行列を参考サイトと同じ行列にしたところ、同様の結果が得られました。
ublas使う時だけ1.32.0で行くことにします。ありがとうございました。

533:デフォルトの名無しさん
07/01/03 10:46:57
>>3にリンクされてるPOCOって使ってる人いる?
今日落として試してみたんだけど、SampleについてるEchoServerの挙動が
微妙におかしくて……
原因は一応分かったのだが、英語力が無いからまっとうなバグレポ
送れにゃいよ。


534:デフォルトの名無しさん
07/01/03 14:13:46
>>533
英語力ないからって言ってると永遠に身につかないよ。
バグレポなら状況を箇条書きにして送るだけでも大丈夫、ただし返信が来たらしらない(w


535:デフォルトの名無しさん
07/01/03 14:59:14
>>534
そうだよなあ。
とりあえず、がんがって次のようなバグレポを書き込んだ。
意味が通るかどうかは全く自信が無いw


Hello.
I'm a Japanse, so please forgive my poor English.

When I tested "EchoServer" sample, I found that it doesn't send back FIN to the client when the client sends FIN to the "EchoServer", by calling shutdown().

This is because "EchoServer" doesn't call close() function for this socket.

Why is that?

Poco::Net::StreamSocketImpl is refcounted, and close() is called when it is really destructed.

I found that Poco::Net::SocketReactor's member, _pReadableNotification, _pWritableNotification, etc. holds Poco::Net::Socket instance, until next socket event arises.
So, until then, refcount remains 1, and close() is never called.

In Poco::Net::SocketReactor::run(),
member function dispatch() is called for each socket.
I think, after that, the socket which is held by _pReadableNotification, etc. must be immediately cleared, so Poco::Net::StreamSocketImpl's refcount will be 0, and close() will be called.

536:デフォルトの名無しさん
07/01/04 13:26:47
boost の program_options で言及されているレスポンスファイル
に関する機能って、以前は configuration file って呼ばれていた
ものですか?単に呼び方が変わっただけですか?
URLリンク(www.boost.org)

537:536
07/01/04 13:32:57
1.33.1 のソースを見てみると、
// Additional command line parser which interprets '@something' as a
// option "config-file" with the value "something"
なんて書いてあるなぁ、前からあった機能なのか。
なんか俺が勘違いしていたみたいです。

538:536
07/01/04 13:42:23
追加のオプションをファイルで与えることが出来る
multiple source の機能と、コマンドラインそのものを
ファイルの形で与える response file の機能を
混同していたようです。

539:デフォルトの名無しさん
07/01/04 14:35:43
ある大学でresearch programerっていう仕事の公募が出てる
research programerていうのはboostの開発してるような人達なのかな

540:536
07/01/04 14:42:44
>>539
頼まれてシミュレータなどのコードを書く人のことじゃないかなぁ。

541:デフォルトの名無しさん
07/01/04 16:05:49
>programer
programmer

542:デフォルトの名無しさん
07/01/04 17:55:53
>programmer
programer

543:デフォルトの名無しさん
07/01/04 19:01:27
pugeramer

544:535
07/01/05 04:25:51
POCOにバグレポ書いたと思ったら、もうFixされたバージョンリリースされてた。
はえー。
拙い英文でもバグレポ書いた甲斐があったわ。
勇気付けてくれた >>534 あんがと。

545:デフォルトの名無しさん
07/01/05 11:12:28
英語力がないから>535の意味を掴み切れない_/ ̄|○
#今年は真面目に(系統立てて)勉強するかな……

546:535
07/01/05 12:11:30
>>545
俺のアホな英文が分からないのは、多分君のせいじゃない。
相手はプログラムを良く理解してるから、クラスやメソッド名などのキーワードを
見て、問題を理解してくれたんだと思う。

今日も POCO を眺めてみたが、std::string ベースなので Path クラスが
日本語名を上手く扱えないという実にありがちな問題が……。
一見すると POCO_WIN32_UTF8 を定義して utf-8 ベースでやってれば
上手く機能しそうにも見えたが、たまにそのまんま std::fstream とかに
渡してるから、やっぱダメだな。

つうかいつになったらWindowsはja_JP.UTF8風なコードページをサポートして
くれるんだ。OS内部だけUTF-16化されてたってしょうがないだろうに。

547:デフォルトの名無しさん
07/01/05 12:41:48
>>546
無理
URLリンク(blogs.msdn.com)

まあ、ここでも言われているけど、
98がラッパでUnicodeをサポートできるように、
UTF-8のラッパをかぶせられないこともない。
どれほどの需要があるのか分からないけど。

548:デフォルトの名無しさん
07/01/06 09:17:55
shared_ptrやweak_ptrのソースを調べてるんだけど、
shared_ptrは内部でweak_ptrを使ってるようだけど、これは何のため
なんだろうか。weak_ptrはshared_ptrの循環参照の欠点を克服できる
という話を聞いてるんだけど、shared_ptrのなかにすでにweak_ptrが使われてる
ということは、もうshared_ptrは循環参照を克服したってことでいいんですか?

違うとしたら、weak_ptrをどう使ってshared_ptrの循環参照を克服できるのか
教えてください。weak_ptrのソースみてみると、なんだかweak_countという
別のカウンタを使っているだけで中身はほとんどshared_ptrと同じように参照カウンタ方式
にみえるんだけど、これで本当に循環参照、解決するんだろうか…?



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch