1 名前:デフォルトの名無しさん [2006/09/23(土) 15:00:11 ] 語って.はぁと part boost::mpl::int_<3> 前スレ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
152 名前:151 mailto:sage [2006/10/20(金) 21:52:00 ] メンバ関数のswapがないから swap(norm_2Functor, function1<float, ublas::vector<float> >(&ublas::norm_2<ublas::vector<float> >)); でないと無理か そもそもできるかどうか知らんけど
153 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 22:03:06 ] 腐ったコンパイラでなんとかしようという努力は不毛だぜ
154 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 22:38:40 ] >>152 そもそも一時オブジェクトをswapの引数にはできん
155 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 23:17:36 ] >>154 --->?swap技法?
156 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:24:57 ] 中国人は帰れよ
157 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:43:07 ] >>155 意味不明
158 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:43:28 ] >>154 vectorが確保するメモリを要素数ぴったりに合わせるテクニックで x.swap(std::vector<T>(x)); ってのがあったと思うけど、これもダメなの?
159 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:46:06 ] 一時オブジェクトをswapの引数にするのは何も問題ない(ちゃんとしたコンパイラなら)
160 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:50:03 ] constでない参照引数に一時オブジェクトはダメじゃなかったっけ?
161 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 01:01:03 ] >>158 VC++2003で警告レベルを最高にするとwarningになるな。
162 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 02:05:58 ] >>158 swap技法はstd::vector<T>(x).swap(x);じゃない?
164 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 08:54:42 ] >>158 お前何にもわかってないのな >>159 馬鹿確定
166 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 10:01:26 ] あ、一時オブジェクトに対して非constメンバを呼ぶのはいいのか。
167 名前:デフォルトの名無しさん mailto:haskell厨 [2006/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 mailto:sage [2006/10/21(土) 21:20:16 ] fをgに変換する方法でも結構です。 よろしくおながいします
169 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 21:44:22 ] >>167 どうしてもその変換をしないと駄目? 第一引数が既にあるならそれを部分適用することは簡単なんだが。
170 名前:デフォルトの名無しさん mailto:sage [2006/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 mailto:sage [2006/10/21(土) 22:05:15 ] >>169 第一引数の部分適用が簡単なのは承知しているのですが…変換希望です。
172 名前:167 mailto:sage [2006/10/21(土) 22:23:29 ] >170 ありがとうございます。やってみます。
173 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 23:04:05 ] boost::bindでもいけるね
174 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 23:10:30 ] >>173 いってみてよ
175 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 01:12:24 ] >>175 boost::bind(static_cast<int (*)(int, int)>(foo), _1, 100)
177 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:38:25 ] >>175 class Void{}Void_v; template<class T1, class T2, class T3=Void>struct select_f; の特殊化を作ってfooの引数にVoid型があるなしで選択するとかは。
178 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:42:09 ] >>177 は?
179 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:43:22 ] >>177 175は関数テンプレートな訳だが..
180 名前:177 mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:39:27 ] キャストを使わないでそれを使うことに何の意味があるの? あと、>177のように何の前置きにもなしに言って、理解してくれるエスパーだと思ったの?
182 名前:177 mailto:sage [2006/10/22(日) 13:55:49 ] >>181 キャストを使わない。 キャストを使ったときに起きるテンプレート関数の特殊化に対しての曖昧性をなくせる(たぶん)。 > あと、>177のように何の前置きにもなしに言って、理解してくれるエスパーだと思ったの? タイピングの勢いだ。
183 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:28:28 ] > キャストを使ったときに起きるテンプレート関数の特殊化に対しての曖昧性 具体例が欲しいな
184 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 15:58:19 ] boost::lambdaのunlambdaとprotectがよくわからないんだぜ
185 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 17:13:50 ] >>185 それ、曖昧か? 後者は foo() についてポインタ型を扱う場合の特殊化を宣言しているので、 引数の型に応じて定義が使い分けられるだけじゃないの? ↓キャストでもコンパイルできたし。 int a, b; (static_cast<int (*)(int*, int*)>(foo))(&a, &b);
187 名前:185 mailto:sage [2006/10/22(日) 17:59:14 ] >>186 boost::bindは?
188 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 18:02:01 ] >>187 boost::bind(static_cast<int (*)(int*, int*)>(foo), _1, &b)(&a); これぐらい自分で補完しろよ。
189 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 18:35:54 ] >>188 コンパイル出来るんだ。へぇー。
190 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 19:04:01 ] がんばって早く「ごめんなさい」の言える大人になろーね。
191 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 19:23:43 ] ごめんなさい
192 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 19:40:14 ] >>190 だって食い下がって逆撫でしていれば >>188 みたいな知識ひけらかし大好き君が無償で色々書いてくれるんだもん。 こういう子は利用しない手はないって。
193 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 19:57:34 ] >>192 普通に質問すればいいのに、なんでわざわざそんな手段をとる必要がある?
194 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 20:19:00 ] 回答をもらえる確率が上がるから。
195 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 20:25:02 ] まぁ、スレを客観的に眺めると、知識ひけらかし大好き君は>177と分かるんだけどね。 >176で終わってる質問だし。 それに>188の知識は>176以上のものではないし。 散々引っ張っといて同じモノしか出ないんじゃ、割に合わない。 単純に悔しくなった>177君が利用してやった振りしてるだけ。
196 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 20:47:18 ] >>182 に「たぶん」って書いてあるのは、ただの妄想ってことでいいの?
197 名前:189 mailto:sage [2006/10/22(日) 23:35:55 ] >>188 ごめん。 だれもつっこんでくれないから寝る前に一言 > boost::bind(static_cast<int (*)(int*, int*)>(foo), _1, &b)(&a); ちょっと言い訳・・・・「&a」参照の罠に嵌ってました。以上です。では、おやすみ。
198 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 18:14:32 ] std::map みたいに扱えて、実はバックエンドがデータベースだなんて すてきな使い心地のライブラリって無いものでしょうか。
199 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 19:42:34 ] boost::graph と ASLの adobe::forest が車輪の再発明ぽい点について
200 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 20:28:36 ] ASL かわいいよ ASL
201 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 23:26:50 ] あるあ…(ry >198
202 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 00:02:53 ] >>201 あるんですか? なんて言うライブラリか教えて貰えませんか? 今、std::map を boost::serialization でディスクに書き出しているんですが、 かなりデータ量が大きくなってきて、すべてをオンメモリで処理するのが 苦しくなってきました。
203 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 03:11:33 ] AllegroCache. これ最強。
204 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 09:38:05 ] boostいいね。使っているとスルメみたいに味わい深いわ。 しかし古い設計で組んでいた俺の昔のコードは一体何だったんだと。 orz
205 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 11:07:28 ] STLぽい数式処理と数値計算のできるライブラリーってないでしょうか? せめて多項式か2次式だけでもできると 少し数値計算プログラムが楽になる
206 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 15:38:08 ] ASLの adobe::dictionary_t はstd::mapよりたくさん要素あつかえるとかtutorialに書いてあった
207 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 16:19:02 ] >>198 Berkeley DBでも使え。
208 名前:201 mailto:sage [2006/10/27(金) 00:43:04 ] ねーよ
209 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 08:40:10 ] >>201 >>208 馬鹿?
210 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 11:05:09 ] >>198 つlibstldb4
211 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 16:20:16 ] >>198 なぜ boost スレへ?
212 名前:デフォルトの名無しさん mailto:age [2006/10/27(金) 20:13:30 ] std::plus()はreturn a+b;ですが、return a+=b;してくれる関数オブジェクトは無いでしょうか? 手前で作ればいいのですが、boostにあるならそっちをつかいたく。
213 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 20:57:59 ] _1 += _2
214 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 21:06:44 ] >213 それはコンパイルできんだろ..
215 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 21:11:33 ] class MyPlus : public std::plus, boost::addable< point<T> , boost::subtractable< point<T> > { MyPlus operator+=(const MyPlus&); }; でいけたらいいな
216 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 21:16:44 ] >>214 using namespace boost::lambda;
217 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 21:23:35 ] std::accumulate は?
218 名前:217 mailto:sage [2006/10/27(金) 21:25:48 ] あ、関数オブジェクトじゃなかったorz
219 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 21:30:13 ] >>216 +=はオーバーロードされていないと思うが。
220 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 21:38:25 ] んなあほな。 複合代入演算子はクラスの外からでも多重定義できるのだから、 boost::lambdaで使えないわけが無い。
221 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 21:42:58 ] +=は使える。 クラス外から多重定義できるかどうかは関係ないような。
222 名前:212 mailto:sage [2006/10/27(金) 21:51:39 ] >>213 できました。ありがとう
223 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 21:52:36 ] そうか、_1なんかはそれ自身ラムダオブジェクトだったな。
224 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 23:28:35 ] >>219 死ねカス
225 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 18:40:49 ] 話題が無いな
226 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 18:54:49 ] 話題ねぇ… opensource.adobe.com/gil/ 今レビューされている、Generic Image Library が通れば、 各種画像サポートが実現されるわけで、非常に期待してる。
227 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 20:09:51 ] ほお adobeがopensourceとは..
228 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 22:09:56 ] 通ればってどういうこと?
229 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 22:14:22 ] ttp://lists.boost.org/Archives/boost/2006/10/111131.php ちうこと。
230 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 22:29:06 ] adobe ASLで japan.zdnet.com/news/devsys/story/0,2000056182,20082134,00.htm ユーザーインターフェイスの自動生成? 本当にできるの?
231 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 22:31:59 ] なぜvigraじゃなくてgilなんだ 機能の豊富さからいったらvigraが上だろう kogs-www.informatik.uni-hamburg.de/~koethe/vigra/
232 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 22:42:28 ] >>231 作者がboostに提案したか否かだろ
233 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 23:51:16 ] >>230 発表された頃に斜め読みした限りでは プログラマとデザイナで仕事を分離するという程度の内容だったような?
234 名前:デフォルトの名無しさん [2006/10/31(火) 01:39:42 ] >>232 どの記事だったか忘れたけど >vigraのほうが好きだけど,vigraは作者が一人だし、gilが採択されたら >その作者がんばるだろうからいいじゃん とか書いてあった
235 名前:234 mailto:sage [2006/10/31(火) 01:41:27 ] >>234 lists.boost.org/Archives/boost/2006/10/112316.php これこれ
236 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 03:07:04 ] やる気のない実装を見るとRejectされそうだけどな
237 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 12:11:48 ] lists.boost.org/Archives/boost/2006/10/112534.php VC7.1でコンパイルとおらねえじゃねえかよ 同じとこでこけやがる
238 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 18:46:57 ] LinuxのGCCでワイド文字全般がうまく機能しないです。 gcc3.3.6 libstdc++3.3.6 boostでなんとかなりませんか? wcout << L"てれれのレ"; [****@ **] (沈黙)
239 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 18:51:43 ] 端末の文字コードが間違っているなんてこと無いよね?
240 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 19:18:04 ] ないです。
241 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 19:24:22 ] 出力をパイプでod -tx1に流して16進で見ても、やはり [****@ **]./a.out | od -tx1 0000000 (沈黙)
242 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 19:41:44 ] pc8.2ch.net/test/read.cgi/tech/1143375639/294-304 これと同じ問題?
243 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 19:52:16 ] gccのバージョン上げろ
244 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 20:25:51 ] つまり L をコンパイラがまともに処理してくれていない?
245 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 20:58:26 ] そうだよ。-Sでアセンブラ出力みてみ。
246 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 21:14:59 ] バージョンの問題なのか?
247 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 21:39:46 ] >>2 .4.6 --input-charsetが3.4からだから、そうだと思うんだけど。
248 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 21:40:21 ] あかん、アンカーがorz
249 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 23:02:31 ] >>248 誰がうまいこと言えと
250 名前:デフォルトの名無しさん mailto:あげ [2006/11/01(水) 01:37:53 ] function<int (int)> hohe(int x) { return boost::lambda::_1 +x; } でxを延命させるうまい方法はありますか? 別途関数を作ってbindとか、 plus<int>()にbindあたりはナシで。
251 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 01:48:57 ] >>250 延命も何も、λ式に保持されるのはその時点でのxの値で、 xへの参照ではないから、xの寿命を気にする必要はない。
252 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 04:26:38 ] gcc3.4 gcc4.0.2で試したらワイド文字関係がすこぶる正常。 結局バージョンの問題か。