[過去ログ]
Boostを語れゴラァ part3 (1001レス)
Boostを語れゴラァ part3 http://echo.5ch.net/test/read.cgi/tech/1158991211/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
459: デフォルトの名無しさん [sage] 2006/12/16(土) 06:15:31 >>458 シンタックスエラー! http://echo.5ch.net/test/read.cgi/tech/1158991211/459
460: デフォルトの名無しさん [sage] 2006/12/16(土) 06:40:06 uho! http://echo.5ch.net/test/read.cgi/tech/1158991211/460
461: デフォルトの名無しさん [sage] 2006/12/16(土) 06:46:08 >>457 preprocessorで何ができると? http://echo.5ch.net/test/read.cgi/tech/1158991211/461
462: デフォルトの名無しさん [sage] 2006/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; こういうことをやりたいんですが
、もっとシンプルに記述できる方法はないでしょうか? http://echo.5ch.net/test/read.cgi/tech/1158991211/462
463: デフォルトの名無しさん [sage] 2006/12/17(日) 06:55:37 プリプロセッサを使ってもシンプルにはならないだろうし、読みにくくなるだけかと。 そもそも何でそういうことがしたいのか分からない。 渡されたコンテナがconstでなければ、書き換える。 constであれば書き換えないという、奇妙な関数でも書きたいのだろうか。 http://echo.5ch.net/test/read.cgi/tech/1158991211/463
464: デフォルトの名無しさん [sage] 2006/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] を適用 http://echo.5ch.net/test/read.cgi/tech/1158991211/464
465: デフォルトの名無しさん [sage] 2006/12/17(日) 23:17:11 >>464 うわぁ、Boost.Rangeチョー便利ナリ・・・ boost::sizeとかあるし。sizeof(a) / sizeof(a[0])とかしてたのが馬鹿みたいだ。 いいものを教えてもらった、ありがとう。 http://echo.5ch.net/test/read.cgi/tech/1158991211/465
466: デフォルトの名無しさん [sage] 2006/12/18(月) 08:19:06 templateもろくに通らないからVC6から2005に切り替えたよ http://echo.5ch.net/test/read.cgi/tech/1158991211/466
467: デフォルトの名無しさん [sage] 2006/12/18(月) 15:00:59 今度はワイド文字ストリームがろくに使えないVC 2005。 http://echo.5ch.net/test/read.cgi/tech/1158991211/467
468: デフォルトの名無しさん [sage] 2006/12/18(月) 16:09:31 VC 2005 SP1で直る・・・はず・・・だといいな・・・ http://echo.5ch.net/test/read.cgi/tech/1158991211/468
469: デフォルトの名無しさん [sage] 2006/12/18(月) 18:20:48 その SP1 では graph library が使えないということらしいが http://echo.5ch.net/test/read.cgi/tech/1158991211/469
470: デフォルトの名無しさん [sage] 2006/12/18(月) 18:23:55 >>468 直ってないような気がする・・・ http://echo.5ch.net/test/read.cgi/tech/1158991211/470
471: デフォルトの名無しさん [sage] 2006/12/18(月) 18:28:28 いや、気がするんじゃなくて間違いなく直ってないや。 http://echo.5ch.net/test/read.cgi/tech/1158991211/471
472: デフォルトの名無しさん [sage] 2006/12/18(月) 18:40:36 SP1出たんだな http://echo.5ch.net/test/read.cgi/tech/1158991211/472
473: デフォルトの名無しさん [sage] 2006/12/18(月) 18:46:01 STLPort使うとなぜかは知らないがlocale::globalの後でもimbueが効くようだ。 http://echo.5ch.net/test/read.cgi/tech/1158991211/473
474: デフォルトの名無しさん [sage] 2006/12/18(月) 21:57:24 なあ、boostいじってるC++狂の連中はWebアプリケーションはなにで 書いてるんだ? 俺、JavaもPerlもやる気しねーよ。もっとC++でWebアプリ書くフレーム ワークとか環境とか色々あってもいいのになあとか思うんだが。 http://echo.5ch.net/test/read.cgi/tech/1158991211/474
475: デフォルトの名無しさん [sage] 2006/12/18(月) 21:59:52 boostいじってるC++狂の連中はWebアプリケーションなんてかったるいものは 書かないんじゃないかな http://echo.5ch.net/test/read.cgi/tech/1158991211/475
476: デフォルトの名無しさん [sage] 2006/12/18(月) 22:00:27 Perlは確かに使う気しないがJavaなら別にいい http://echo.5ch.net/test/read.cgi/tech/1158991211/476
477: デフォルトの名無しさん [sage] 2006/12/18(月) 22:12:09 スレ違いだと思うのでURLだけ http://ws.apache.org/axis/ja/cpp/lininstall-guide.html http://www.cs.fsu.edu/~engelen/soap.html http://www.xlsoft.com/jp/products/roguewave/sourcepro/index.html http://echo.5ch.net/test/read.cgi/tech/1158991211/477
478: デフォルトの名無しさん [sage] 2006/12/18(月) 22:18:51 boost::CppOnRailsができるのを待つか http://echo.5ch.net/test/read.cgi/tech/1158991211/478
479: デフォルトの名無しさん [sage] 2006/12/19(火) 00:42:34 >>474 なんか「柴犬」とか言うtomcatもどきをC++で実装してテストしてるスレがあった希ガス http://echo.5ch.net/test/read.cgi/tech/1158991211/479
480: デフォルトの名無しさん [] 2006/12/19(火) 07:44:46 sscanfみたいなのを 正規表現で指定できる関数はあるのでしょうか? http://echo.5ch.net/test/read.cgi/tech/1158991211/480
481: 450 [sage] 2006/12/19(火) 08:04:30 SP1いれたら、テンプレートテンプレートパラメータのデフォルト引数が使えるようになっていた。 http://echo.5ch.net/test/read.cgi/tech/1158991211/481
482: デフォルトの名無しさん [sage] 2006/12/19(火) 14:13:59 boost MLに何度か投稿していたら software関係conferenceの Invitation to submit a paper (おそらくSPAMの一種だと思う)がくるようになった。 同種のメールは、自分の専門分野の関連領域でもくるのだが ( inviteされるような仕事してねえのに invite ってなんだよ) software関連のは本当に怪しいのかを見分ける手段がない なにか見分ける方法ないものか http://echo.5ch.net/test/read.cgi/tech/1158991211/482
483: デフォルトの名無しさん [sage] 2006/12/19(火) 19:52:06 すみません、質問させてください 基本型あるいはユーザ定義型の配列の要素数を返す関数を作ろうとしてるんですが arrayがユーザ定義型の配列であった場合でも /* @ */の処理がコンパイルされるためエラーになってしまいます template <typename T> void count(T array[]){ if(boost::is_pod<T>::value){/* @ */} else{/* A */}} 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 ){/* 省略 */} http://echo.5ch.net/test/read.cgi/tech/1158991211/483
484: デフォルトの名無しさん [sage] 2006/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() ; } http://echo.5ch.net/test/read.cgi/tech/1158991211/484
485: デフォルトの名無しさん [sage] 2006/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で初期化できるようにだろう。 http://echo.5ch.net/test/read.cgi/tech/1158991211/485
486: 483 [sage] 2006/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が代入できる うーむ、よく考えられてますね http://echo.5ch.net/test/read.cgi/tech/1158991211/486
487: デフォルトの名無しさん [sage] 2006/12/19(火) 22:46:08 個人的には返り値型に使うほうが好き>enable_if http://echo.5ch.net/test/read.cgi/tech/1158991211/487
488: デフォルトの名無しさん [sage] 2006/12/20(水) 01:12:34 >>482 自分で「おそらくSPAMの一種だと思う」なら、ちゃんと見分けられてるじゃないか。 http://echo.5ch.net/test/read.cgi/tech/1158991211/488
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 513 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.019s