[過去ログ]
Boost総合スレ part9 (981レス)
Boost総合スレ part9 http://echo.5ch.net/test/read.cgi/tech/1275014987/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
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;も追加してみました) どなたか解決のヒントをいただけませんでしょうか? http://echo.5ch.net/test/read.cgi/tech/1275014987/356
357: デフォルトの名無しさん [sage] 2011/02/28(月) 17:24:43.30 >>307 例えば? http://echo.5ch.net/test/read.cgi/tech/1275014987/357
358: デフォルトの名無しさん [sage] 2011/03/01(火) 02:11:17.74 >>356 エラーメッセージは? http://echo.5ch.net/test/read.cgi/tech/1275014987/358
359: デフォルトの名無しさん [sage] 2011/03/01(火) 09:41:42.85 エラーメッセージ書かない時点で 答えてもらう気ないだろ http://echo.5ch.net/test/read.cgi/tech/1275014987/359
360: デフォルトの名無しさん [sage] 2011/03/01(火) 09:49:27.12 boost使用時のコンパイラエラーメッセージって役に立つか? 立たないことは無いけど、異様に長いし、エラーをピンポイントで指摘してないし。 結局、行番号を頼りに修正することが多い。 http://echo.5ch.net/test/read.cgi/tech/1275014987/360
361: 356 [] 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_' http://echo.5ch.net/test/read.cgi/tech/1275014987/361
362: 356 [] 2011/03/01(火) 11:12:03.69 失礼しました。上記のがideoneのソースそのままでのコンパイルエラーです。 イテレータの解釈辺りでtypeのtypedefが無いということのようなので、 イテレータがforeachの走査対象に足る要件を満たしていないのかなと判断しました。 iterator_adaptors系を使えば良い感じに揃えてくれるのかな?と思ったのですが、 それらを用いるコードが私の理解ではきちんと書けていない状況です。 http://echo.5ch.net/test/read.cgi/tech/1275014987/362
363: デフォルトの名無しさん [sage] 2011/03/01(火) 13:34:43.76 日本人の貢献者ねえ・・・ cpanオーサーに日本人増えてきたらこんな事件おきたり http://www.yabbforum.com/community/YaBB.pl?num=1286567562 phpが「流行」したりする謎を知らないのかな http://echo.5ch.net/test/read.cgi/tech/1275014987/363
364: デフォルトの名無しさん [] 2011/03/01(火) 17:18:11.86 Boost.Rangeを使ってみているのですが、 STLコンテナのinsert等にrangeを渡したりは出来ないんでしょうか? begin/endを呼ぶためだけに変数に格納するのが何かおかしく感じます。 http://echo.5ch.net/test/read.cgi/tech/1275014987/364
365: デフォルトの名無しさん [sage] 2011/03/01(火) 21:17:41.84 >362 >イテレータの解釈辺りでtypeのtypedefが無いということのようなので、 >イテレータがforeachの走査対象に足る要件を満たしていないのかなと判断しました。 多分違う。エラーが出てるのは mpl::eval_if のところなのでここでエラーの出てる type は mpl のメタ関数としての type だ。 あとエラーの出てる行は古いコンパイラ用の workaround のところで VC++ .NET 2002 以前を使ってる場合に 当たるんだけど C++0x 向けでラムダ式とか使ってるみたいだしなんかどっかおかしそう。 http://echo.5ch.net/test/read.cgi/tech/1275014987/365
366: デフォルトの名無しさん [sage] 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 http://echo.5ch.net/test/read.cgi/tech/1275014987/366
367: 356 [sage] 2011/03/02(水) 03:39:10.88 >>365 なるほと・・、私の見当違いだったんですね。 マクロシンボルでの分岐をトレースして原因を調べてみたいと思います。 おかげで一歩前へ進めます。どうもありがとうございました。 http://echo.5ch.net/test/read.cgi/tech/1275014987/367
368: 364 [sage] 2011/03/02(水) 04:08:56.10 >>366 おぉぉありがとうございます! これでbegin/endのタイプ量が激減してソース横幅も縮みそうです。 やはりきちんと用意されているものなのですね。 ただメンバ関数とは書く順番が変わってしまうのですか・・ 黒魔術的な何かで何とかされているかと思っていたので少し残念です。 C++にも拡張メソッドが欲しくなりますね。 http://echo.5ch.net/test/read.cgi/tech/1275014987/368
369: デフォルトの名無しさん [sage] 2011/03/02(水) 18:19:07.50 どうも1.46.1が出るっぽい なんぞ不具合でもあったのかしら http://echo.5ch.net/test/read.cgi/tech/1275014987/369
370: デフォルトの名無しさん [sage] 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())) がコンパイル通るようになった。 http://echo.5ch.net/test/read.cgi/tech/1275014987/370
371: デフォルトの名無しさん [sage] 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それぞれを取り出したいのですが。 http://echo.5ch.net/test/read.cgi/tech/1275014987/371
372: デフォルトの名無しさん [sage] 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; } http://echo.5ch.net/test/read.cgi/tech/1275014987/372
373: デフォルトの名無しさん [sage] 2011/03/03(木) 02:53:01.08 >>372 ありがとうございます。 http://echo.5ch.net/test/read.cgi/tech/1275014987/373
374: デフォルトの名無しさん [sage] 2011/03/03(木) 12:25:13.55 以前に VisualStudio の環境でダウンロードしただけで動くものをまとめてファイルにアップしてた人がいたけど 誰かurl知りませんか? 便利なのにテンプレに載ってないのはなんでです? http://echo.5ch.net/test/read.cgi/tech/1275014987/374
375: デフォルトの名無しさん [sage] 2011/03/03(木) 12:28:20.53 過去ログでみつけた http://boooster.x0.to/ http://echo.5ch.net/test/read.cgi/tech/1275014987/375
376: デフォルトの名無しさん [sage] 2011/03/03(木) 15:31:43.47 前と違って、今は公式でVisualStudio用のバイナリが配付されてるじゃん そういえばどっかの企業もバイナリ配布してたけどやめちゃったな http://echo.5ch.net/test/read.cgi/tech/1275014987/376
377: デフォルトの名無しさん [sage] 2011/03/03(木) 17:21:36.18 >>374,375 それsvnの野良ビルドだよね確か。 svn最新なので万人向けじゃないし、svn追っかける人なら自分でビルドするし、特に需要がなかったんじゃない? あと更新される度にスパムのようにURL貼ってたのでウザがられてた。 テンプレ申請なりサイトでRSS配信なりすればよかったのにね。 http://echo.5ch.net/test/read.cgi/tech/1275014987/377
378: デフォルトの名無しさん [sage] 2011/03/03(木) 17:55:36.54 bjamでビルド簡単になったんだからboostぐらいビルドしようぜ・・・ boost使う=開発環境あるわけだし。 ビルドに時間掛かるのは別w http://echo.5ch.net/test/read.cgi/tech/1275014987/378
379: デフォルトの名無しさん [sage] 2011/03/04(金) 10:17:25.38 Windowsは知らないけどLinuxでBoostビルドすると風呂入って一眠りしてコーヒー飲むぐらい時間かかるんだけど・・・ http://echo.5ch.net/test/read.cgi/tech/1275014987/379
380: デフォルトの名無しさん [sage] 2011/03/04(金) 10:32:46.31 >>379 それってPCの性能じゃなくてOSの差なんですか? http://echo.5ch.net/test/read.cgi/tech/1275014987/380
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 601 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.029s