トップページ⇒tech
1001コメント324KB

【C++】template 統合スレ -- Part6

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさんNGNG
C++ のジェネリックプログラミングの話をしましょう。
以下のスレッドを統合するスレです。
STLスレッド
Part1 http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
Part2 http://pc3.2ch.net/tech/kako/1026/10267/1026793823.html

【C++】Boost使い集まれ!
http://pc3.2ch.net/test/read.cgi/tech/1033830935/ (html化待ち?)

Generic Programming with C++ Template
http://pc.2ch.net/tech/kako/1008/10085/1008593126.html
【C++】template 統合スレ -- STL/Boost/Loki, etc.
http://pc2.2ch.net/tech/kako/1037/10377/1037795348.html
【C++】template 統合スレ -- Part2
http://pc2.2ch.net/test/read.cgi/tech/1047978546/ (html化待ち)
【C++】template 統合スレ -- Part3
http://pc5.2ch.net/test/read.cgi/tech/1066493064/ (html化待ち)
【C++】template 統合スレ -- Part4
http://pc5.2ch.net/test/read.cgi/tech/1083550483/ (html化待ち)
【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/
関連スレ、その他リンクは >>2-5 あたりに。
0809デフォルトの名無しさん2005/08/07(日) 22:50:40
>>807
SFINAEによるオーバーロードセットのコントロールを簡単に
行うためのユーティリティ。

英語分からなくてもC++分かるんならひたすらソース詠めば
何となく見えてくる、かもよ。
0810デフォルトの名無しさん2005/08/07(日) 22:53:46
>>808
なにキレてんのキミ。
相手以上の駄レス書いてたら意味無いのに。
0811デフォルトの名無しさん2005/08/07(日) 22:59:07
駄レスとかいってたら、ほとんどがそうだろw
0812デフォルトの名無しさん2005/08/07(日) 23:00:10
ほとんどがそうならなおのこと
突然特定のレスにキレる理由が無いよ。
0813デフォルトの名無しさん2005/08/07(日) 23:03:27
自己顕示欲丸出しの厨房がウザイだけだろ
まあ、どこにでもいるからいちいちキレるのもどうかと思うが
0814デフォルトの名無しさん2005/08/07(日) 23:16:33
キレて説教するほうがよっぽど自己顕示欲激しいと思う。
世に言う自爆ですな。アホくさ。
0815デフォルトの名無しさん2005/08/07(日) 23:17:52
http://www.boost.org/libs/utility/enable_if.html
ここの「1.2 Background」は、何が問題だって言ってるんですか?
0816デフォルトの名無しさん2005/08/07(日) 23:20:01
説教がどう自己顕示欲につながるんだ??
0817デフォルトの名無しさん2005/08/07(日) 23:22:14
>>814
ワロス
0818デフォルトの名無しさん2005/08/07(日) 23:29:27
>>816
キレるたびにいちいちスレ違いの書き込みするような奴が
自己顕示欲薄いって言い張る気?
0819デフォルトの名無しさん2005/08/07(日) 23:30:34
enable_ifがわからんってののどこが自己顕示欲に繋がるのかもわからんけどな
0820デフォルトの名無しさん2005/08/07(日) 23:30:49
>>818
藻前もキレてるじゃん
あと煽り耐性なさ過ぎ
いい加減スルーしろよ
0821デフォルトの名無しさん2005/08/07(日) 23:31:47
>>815
いや,そこの部分は別に何かが問題だなんて書いてないです.
単にSFINAEというのがどう機能するか(そしてなぜそのような機能が必要なのか)
を説明しているだけです.
0822デフォルトの名無しさん2005/08/07(日) 23:32:15
816が煽りには見えないけどなあ。
普通にズレてるだけで。
0823デフォルトの名無しさん2005/08/07(日) 23:32:55
>>815
あっと,「もしSFINAEがなければこういうことが問題だよね」というのは書いてますけれど.
0824デフォルトの名無しさん2005/08/07(日) 23:35:03
>>822
分かったからもう出てくんな
0825デフォルトの名無しさん2005/08/07(日) 23:40:11
本日の推奨NG
「。」「顕示」「煽り」「キレ」
すっきりして(・∀・)イイ!!
0826デフォルトの名無しさん2005/08/08(月) 02:07:36
expressional template
VC.net2003だと、ちょっと複雑な式を書いただけで
コンパイル通らない。
そういうものなの?
gccなら通るのかな
0827デフォルトの名無しさん2005/08/08(月) 02:12:44
>>826 その「ちょっと複雑な式」とやらを晒すとレスが付くかもしれない。
0828デフォルトの名無しさん2005/08/08(月) 03:35:21
>>826
現存する如何なるコンパイラでも通らない程複雑(広義の)なコードに問題ありに100円。
0829デフォルトの名無しさん2005/08/08(月) 04:40:19
ネストが17超えるとか?
0830デフォルトの名無しさん2005/08/08(月) 15:16:31
いろんな要素が混じってるので必ずしもexpressional templateが
原因でないのかもしれないけど

boost::numeric::ublas::matrix & A(){return A_ }
boost::numeric::ublas::matrix & B(){return B_ }

B() = prod( A(), A())*3 + B() + ....

こんな感じかな.全部はさらせないのですまそ
0831デフォルトの名無しさん2005/08/09(火) 01:41:27
>>830
エラー貼ったがいいよ
もし膨大なら
再現するコンパイル可能な最小のコードを貼って
08328312005/08/09(火) 01:45:25
>コンパイル可能な
おっとコンパイルは通らないのか

>あなたがコンパイル通らないことを理不尽に思う
に訂正

ようするにテストする側の身になってコードを
貼ってください
0833デフォルトの名無しさん2005/08/09(火) 11:45:51
>>830
>こんな感じかな.全部はさらせないのですまそ

じゃあ、他の人にエラーの原因を調べてもらうのも諦める事ですな。
証拠不十分なまま、証言台に立つような物ですぞ。
0834デフォルトの名無しさん2005/08/20(土) 08:39:28
だれもいない
0835デフォルトの名無しさん2005/08/20(土) 20:28:20
ホントにだれもいないのかよ
0836デフォルトの名無しさん2005/08/20(土) 20:39:26
いねーよ
0837デフォルトの名無しさん2005/08/20(土) 20:40:28
質問やら話題があれば人は自然と集まってくる。
0838デフォルトの名無しさん2005/08/20(土) 20:52:57
おまえら
”てんぷれーと”にだまされてないか?
”しーぷらぷらのてんぷれーと”って結局あれだよ。
中途半端。
そう中途半端。
LISPに比べたら。
全然読み易くならない。
いろんな括弧であふれてLISPの方がまだサルのように読みやすい。
まあここにタムロしてるおまえらの言い分は判ってるよ
こうだろ、静的カタカタ型が重要なんです!
LISPじゃすぴーどでないよプププ
とかな。
ばーか。
カタなんかより柔軟性なんだよこのご時世はよ
カタカタうるせーのなんのって、笑うわ。
C++考えた奴みたいにハゲろ
全員
0839デフォルトの名無しさん2005/08/20(土) 20:59:39
確かに、「ネイティブコード吐く言語じゃないと速度が」
とか必死に言ってる奴に優秀なプログラマはいないな。
0840デフォルトの名無しさん2005/08/20(土) 21:10:42
しーぷらぷらの処理系。
てんぷれーとバグだらけ。
笑うわ。
いったい何年てんぷれーとやってんだよ
おまえらがべんだーの修正待つあいだに
おれLISPで新しいマクロどっさり作る
生産性バカたけぇーわLISPはよ
LISPはカタないからすぴーどでないよプププて、
そりゃ頭がかてえ証拠だな。
そんな奴は引退したほーがいいんじゃねーかなあ
LISPにカタないなら組み込めよ、ハゲども
ぶーとすとらっぷとか考えろよ
わかるか?ぶーとすとらっぷって。
しーぷらぷらにはそんながいねんはないかもなあ。
最適化なんかやりやすいなーすいすいいけるぜ
こんすの海の中にいると不満なんてすぐ解消する
それがLISP。
まあ頭のかたいカタカタ野郎は
やっぱりC++考えた奴みたいにハゲろ
全員
0841デフォルトの名無しさん2005/08/20(土) 21:16:51
>>839よりは優秀だけどね。
0842マイク ◆yrBrqfF1Ew 2005/08/20(土) 21:31:32
C++をしーぷらぷらなんて言うのは無能。
0843デフォルトの名無しさん2005/08/20(土) 21:59:52
C++でLisp系の俺言語&処理系作るのが最近の俺の趣味なんだが、
なんかこいつの仲間と思われたくないな、恥ずかしくて。
0844デフォルトの名無しさん2005/08/20(土) 22:59:08
>>842
シープラスプラス?
それともシーたすたす?
0845デフォルトの名無しさん2005/08/20(土) 23:33:28
しーいんくりめんと
0846デフォルトの名無しさん2005/08/20(土) 23:43:58
C++
後置ということは、まだ本当のC++にはであてないわけだ
0847デフォルトの名無しさん2005/08/20(土) 23:45:24
C++には出会えている
++Cに出会えてないだけ
0848デフォルトの名無しさん2005/08/21(日) 00:37:45
838は、C++のテンプレートが読みにくく、
コンパイラのバグのことも分かっていて、
C++作った人物についても詳しいようだな
0849デフォルトの名無しさん2005/08/21(日) 00:48:03
Schemeの純粋指向にはあこがれるけど、Lispはどうでもいいや。
継続は面白いな。

>LISPはカタないからすぴーどでないよプププて、
型が無いと遅くなるつうのは初耳ですが、どこの情報?
0850デフォルトの名無しさん2005/08/21(日) 01:06:13
>>849
VBのバリアント型みたくデータ側に型情報があるから
オブジェクトを参照するたびに動的な判定が毎回必要ってことだよ。
型判定に値の取り出しとか最低でもCの3倍以上のコストが掛かる。
Rubyが遅いのもこれがかなり影響してる。
0851デフォルトの名無しさん2005/08/21(日) 01:09:17
でも日本語は不自由なようだ。
08528512005/08/21(日) 01:09:45
>>838
0853デフォルトの名無しさん2005/08/21(日) 01:25:23
> オブジェクトを参照するたびに動的な判定が毎回必要ってことだよ。
随分ダサい実装ですね。
0854デフォルトの名無しさん2005/08/21(日) 01:41:07
そのダサイ実装を越えたところに桃源郷が
0855デフォルトの名無しさん2005/08/21(日) 01:41:43
ももげんごう?
0856デフォルトの名無しさん2005/08/21(日) 12:12:15
ももげんごう(←なか変換できない)
0857デフォルトの名無しさん2005/08/21(日) 14:42:55
桃源郷=Xanadu キサナドゥ
0858デフォルトの名無しさん2005/08/22(月) 00:38:44
>>850
正直、有名なコンパイラならそんなださい実装は少ないよ。
Common Lispには型指定の構文があるくらいだし。
0859デフォルトの名無しさん2005/08/23(火) 09:18:30
数値計算したい人は
速度気にしないならlistでなくてMatlab使う
0860デフォルトの名無しさん2005/08/23(火) 15:06:35
>>858
CLOS基地外氏ね
スレ違いだし
0861デフォルトの名無しさん2005/08/23(火) 15:34:43
だれもいないからとか言うから
0862デフォルトの名無しさん2005/08/23(火) 16:29:46
人稲杉なので、チラシの裏

boost::bind は、bind( f, _1, _2, a, b, _1 ) を行うことで、
func::return_type ( A1 & a1, A2 & a2 ) というファンクタを返すけど、
この _1 や _2 を、_decimal や、_text、_float のような書式指定プレイスホルダに
置き換えて、以下のようにすれば、タイプセーフな printf が出来るなと
考えたことがあった。

function< void( int ) > f = format( cout, "a = ", _hex, endl );
// ↑ cout << "a=" << %x << endl; と同じ事を行うファンクタを返す。
f( 10 ); // cout << "a=" << hex << 10 << endl;
f("aaa"); // コンパイルエラー

上の形とは違うけどその思想に基づいて実際に作ってみたことがある。
でも結局実用では (w)sprintf しか使わなかった。勉強にはなったけどね。
template プログラミングは楽しいけど、冷静なるとしなくていいことまで
テンプレート化してたりしていることがあるので気をつけないと。
0863デフォルトの名無しさん2005/08/23(火) 17:12:40
>>862
> 冷静なるとしなくていいことまでテンプレート化してたりしていることがある
昨夜、そんな関数テンプレートを必死で非テンプレート関数に直してた・・・。
数日前に必死で関数テンプレートにした箇所だったのだけど・・・。
0864デフォルトの名無しさん2005/08/24(水) 12:24:27
template<typename X_TYPE>
void xxx(X_TYPE x)
{}
として型の自動認識の手間減らしは多用するな
0865デフォルトの名無しさん2005/08/24(水) 13:32:40
そうね。時々やる。いっそのこと型を書くのはオプションにして
MLみたいに型推論してくれればいいのにと思う。
0866デフォルトの名無しさん2005/08/24(水) 17:50:00
C++ 0xだとそんな機能が追加されるとかされないとか。
0867デフォルトの名無しさん2005/08/28(日) 09:36:27

テンプレートがちんぷんかんぷんでまったく理解できない私に
理解できるようになる方法を教えてください。まじで。
0868デフォルトの名無しさん2005/08/28(日) 11:02:49
引数の型を使うときに決められるんだよ。
0869デフォルトの名無しさん2005/08/28(日) 11:35:27
>>867
騙されたと思ってstd::min()でも使って味噌。
0870デフォルトの名無しさん2005/08/28(日) 13:22:51
せめてstd::vector くらい使わないとありがたみ沸かないだろう。
0871デフォルトの名無しさん2005/08/28(日) 18:04:02
>>867
つ[C++ Templates(英文)]
0872デフォルトの名無しさん2005/08/29(月) 06:58:30
STL バンザイ
0873デフォルトの名無しさん2005/08/29(月) 21:56:02
STLとboostが無かったら俺C++使いつづけて無かったよ。
0874デフォルトの名無しさん2005/08/29(月) 22:30:29
俺もそうだ。
0875デフォルトの名無しさん2005/09/03(土) 00:21:09
会社でtemplate使うなって言われたんだけど…
何故?
0876デフォルトの名無しさん2005/09/03(土) 00:24:13
会社で使いこなせるヤシがいないからと邪推
0877デフォルトの名無しさん2005/09/03(土) 00:31:06
代わりにLISP使え

もっと困るかもな
へへ
0878デフォルトの名無しさん2005/09/03(土) 03:19:35
>>875
それは、あなたが馬鹿だからです。
0879デフォルトの名無しさん2005/09/03(土) 03:26:37
お前だけは使うなって言われたなら
そうかもしれないけどさ
0880デフォルトの名無しさん2005/09/03(土) 09:13:41
>>875
まともな会社にうつるべし
0881デフォルトの名無しさん2005/09/03(土) 09:55:32
>>875
会社に聞け。
ここで聞くようなやつは>>878に決定。
0882デフォルトの名無しさん2005/09/03(土) 10:02:04
>>881
なんでそんな必死にこの話題にフタしたがるの?
コンプレックスでも刺激された?w
0883デフォルトの名無しさん2005/09/03(土) 11:09:31
>>882
頭、大丈夫か?
0884デフォルトの名無しさん2005/09/03(土) 14:45:37
VC6のプログラム保守してるとかじゃないのか>875
0885デフォルトの名無しさん2005/09/03(土) 22:33:39
>>883
大丈夫だよ。
質問に答えられない誰かさんの頭は大丈夫じゃないみたいだけど。
0886デフォルトの名無しさん2005/09/04(日) 03:17:12
・移植性重視
・扱える開発者が少ない or メンテする人が固定とは限らない

のどっちかだろうねえ
後者の事情のほうが多いと思うけども
0887デフォルトの名無しさん2005/09/09(金) 02:16:23
管理職の団塊世代が、ピュアなC以外理解できないとか
0888デフォルトの名無しさん2005/09/09(金) 22:28:28
名前空間→記述が冗長すぎる
テンプレート→制限が多すぎる
クラス→継承が可読性を悪化させる
その他→コンパイル時間が長すぎる
0889デフォルトの名無しさん2005/09/09(金) 23:39:18
C++→俺が解からない
0890デフォルトの名無しさん2005/09/09(金) 23:45:15
俺が解からない→みんなも解からない
0891デフォルトの名無しさん2005/09/10(土) 02:04:02
>>886
>移植性重視

templateって移植性下がるの?
0892デフォルトの名無しさん2005/09/10(土) 02:33:11
例えばGCCと心中するつもりならGCCで動けばOKって人もいるでしょ
0893デフォルトの名無しさん2005/09/10(土) 02:46:27
>>891
ある程度ISO C++に準拠したコンパイラがない環境には移植できなったりだとか。
0894デフォルトの名無しさん2005/09/10(土) 03:16:30
少なくとも、vc7.1とgccの両方で動くテンプレートくらい書けないと
話にならないと思うけど。
0895デフォルトの名無しさん2005/09/10(土) 12:53:08
VC7.1とgcc3.3以降で動くテンプレート書くのは簡単だろ、どっちもほぼ100%標準準拠なんだから。
むしろVC6とかgcc3.2とかで動くか動かないか判断する方が難しいと思われ。
0896デフォルトの名無しさん2005/09/10(土) 13:14:28
>>895
VC6とgcc3.2以前はもうあきらめた。
というかエラーメッセージすらとんちんかんな時があるのが頭痛い。

昔の仕事のプロジェクトコードのメンテでちょっとしたテンプレート書いてとかで
引っかかると泣きたくなる。
0897デフォルトの名無しさん2005/09/10(土) 13:25:22
>>894-895
まるで、複数コンパイラで有効なテンプレートを書くのが上級者であるかのような言い方だな。
そういった汎用性のあるテンプレートは入門者レベルの機能しか使ってない。
君らは、入門者レベルのテンプレートしか書いたことないんだろ?
0898デフォルトの名無しさん2005/09/10(土) 13:31:55
スレの存在を否定するような行為が、目下のベストな対処法

「技巧に走らない」
0899デフォルトの名無しさん2005/09/10(土) 14:04:38
>>897
> であるかのような言い方だな。
印象だけでものを書く場合、その印象がトンチンカンだと
残りの文章がすべてトンチンカンになるから今後は気をつけな。
0900デフォルトの名無しさん2005/09/10(土) 14:25:57
シンプル伊豆ベスト
0901デフォルトの名無しさん2005/09/10(土) 15:15:35
>>897
「入門者レベル」とか「汎用性のある」とか、
自分が「上級者」じゃない事がバレバレなんですがw

まぁ、恥の上塗りだけはしないようになw
0902名無しさん@そうだ選挙に行こう2005/09/10(土) 18:43:40
>>888
つまり、templateに限らずC++は糞だって事で包茎?
0903名無しさん@そうだ選挙に行こう2005/09/10(土) 19:37:56
ていうかお前が包茎。
0904名無しさん@そうだ選挙に行こう2005/09/10(土) 19:45:33
24時間テレビ C++ は地球を救う
0905名無しさん@そうだ選挙に行こう2005/09/10(土) 20:09:37
>>902,904
んなこたーない。
0906名無しさん@そうだ選挙に行こう2005/09/10(土) 22:11:14
>>894は馬鹿だな。
0907名無しさん@そうだ選挙に行こう2005/09/11(日) 01:31:57
894は、VC以外でも通るように、typenameちゃんと書けとか
その程度の意味じゃねえの?
0908名無しさん@そうだ選挙に行こう2005/09/11(日) 05:40:17
言語仕様が複雑すぎて処理系が追いつかないのは本末転倒

言語仕様満たしてから最適化とかやれよ馬鹿ベンダーはよ
現実逃避してんじゃねーよ
レス数が900を超えています。1000を超えると表示できなくなるよ。