- 1 名前:デフォルトの名無しさん mailto:sage [04/11/25 21:11:32]
- C++ のジェネリックプログラミングの話をしましょう。
以下のスレッドを統合するスレです。 STLスレッド Part1 pc.2ch.net/tech/kako/1004/10042/1004287394.html Part2 pc3.2ch.net/tech/kako/1026/10267/1026793823.html 【C++】Boost使い集まれ! pc3.2ch.net/test/read.cgi/tech/1033830935/ (html化待ち?) Generic Programming with C++ Template pc.2ch.net/tech/kako/1008/10085/1008593126.html 【C++】template 統合スレ -- STL/Boost/Loki, etc. pc2.2ch.net/tech/kako/1037/10377/1037795348.html 【C++】template 統合スレ -- Part2 pc2.2ch.net/test/read.cgi/tech/1047978546/ (html化待ち) 【C++】template 統合スレ -- Part3 pc5.2ch.net/test/read.cgi/tech/1066493064/ (html化待ち) 【C++】template 統合スレ -- Part4 pc5.2ch.net/test/read.cgi/tech/1083550483/ (html化待ち) 【C++】template 統合スレ -- Part5 pc5.2ch.net/test/read.cgi/tech/1091522597/ 関連スレ、その他リンクは >>2-5 あたりに。
- 948 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 09:43:59 ]
- >>946
テンプレート関係ないやん。
- 949 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 16:56:08 ]
- STLportではコンパイルできるけれど、
g++のSTLではエラーが出てしまうようなコードってどんなものがあるでしょうか? vectorやstringくらいしか使ってないんですが、コンパイルでエラーが出ます。。
- 950 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 17:25:59 ]
- エラーメッセージ書かん奴には答えない
- 951 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 17:33:35 ]
- >>949
氏ね!
- 952 名前:デフォルトの名無しさん mailto:age [2005/10/05(水) 16:55:29 ]
- template<int num, int count> struct power{ enum { value = power<num, count-1>::value * num }; };
template<int num> struct power<num, 1>{ enum { value = num }; }; template<int num> struct power<num, 0>{ enum { value = 0 }; }; template<> struct power<0, 0>{ enum { value = 0 }; }; ∋oノハヽo∈ ( ´D`) <テンプレート ♪ で、計算♪計算♪ age♪ age♪ (つ┳9 (_)┃_) ━§━ § ⌒ヽ〃⌒ヽ〃 int main() { //2の8乗 cout << power<2, 8>::value << endl; return 0; }
- 953 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 18:45:40 ]
- >template<int num> struct power<num, 0>{ enum { value = 0 }; };
それはどうかと思うぞ。
- 954 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 19:02:12 ]
- template<int num> struct power<num, 0>{ enum { value = 1 };};
- 955 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 19:13:50 ]
- <0,0>,<num,1>の特殊化は必要ないな
- 956 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 21:12:57 ]
- むしろこうしてコンパイル時エラーにしろよ。
template<> struct power<0, 0>{};
- 957 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 21:24:22 ]
- 0^0って数学的にはどうなるの?
- 958 名前:ヽ(´ー`)ノ ◆.ogCuANUcE mailto:sage [2005/10/05(水) 22:22:38 ]
- >>956
n^0 = 1
- 959 名前:ヽ(´ー`)ノ ◆.ogCuANUcE mailto:sage [2005/10/05(水) 22:23:20 ]
- スマン。レス番間違えた orz
- 960 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 22:28:09 ]
- >>957-958
一方で0 ^ n = 0となっているから問題になる。 ところで^と言えばXORの立場が。
- 961 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 12:22:20 ]
- VC6のtemplate関数ってバグある気がするんだけど...
template<typename T> void test(); 引数無し呼んだときに解決できてないみたい... template<typename T> void test(const T&); みたいにすればオーバーロードで解決できるのか、大丈夫みたいなんだが...
- 962 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 12:36:11 ]
- いまどきそんな化石コンパイラに文句言われても…
- 963 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 13:39:14 ]
- 化石以前にtemplateに関しては欠陥コンパイラですから・・・
- 964 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 17:42:46 ]
- そもそもC++コンパイラじゃないですから
- 965 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 22:25:31 ]
- 少なくともANSI/ISO C++準拠とは言えないな。
- 966 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 04:44:36 ]
- じゃーVC7はどうですか?
- 967 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 05:23:27 ]
- 7.1はかなりまとも。
- 968 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 12:23:52 ]
- 7と7.1は全然違うぞ
7はかなり微妙
- 969 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 13:11:10 ]
- 7はCStringにバグがあったね。STL周りもちょっと不安定なところがあった気もする。
- 970 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 14:50:27 ]
- 7.1って具体的にclのどのバージョン?
今 Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86 っての使ってるけど
- 971 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 15:06:35 ]
- VS.net(VC.net)2003か、VCTK2003のやつが7.1
13.10.3077なら7.1だな。VS.net2003の方のやつだろ。
- 972 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 17:36:27 ]
- codeguruに記事の投稿してみたがレビュー通んないとだめなんだね
- 973 名前:デフォルトの名無しさん [2005/10/18(火) 15:57:25 ]
- age
- 974 名前:デフォルトの名無しさん mailto:sage [2005/10/26(水) 22:29:10 ]
- 人稲杉なので、バカネタを投下。
www.hakusi.com/up/src/up5538.zip.html Boost.Lambda みたいに Expression Template を使った、引数に対して安全なフォーマットライブラリ。 Boost.Function や、Boost.Bind と組み合わせることが可能。 以前作成したものと違い、オマケ機能だが入力も可能で、ワイド文字にも対応。 ただ、 _ と % だらけで見た目がキモイ上に、実用性がイマイチ謎。 Expression Template の資料として。 // 出力 string strA, strB; sprint( strA, "1 " % !_x[6] % "/" % _s, 10, "aaaa" ); // sprintf( str, "%#6x/%s", 10, "aaaa" ); みたいな。 sprint( strB, "2 " % (!_x[6]*='0') % "/" %_s, 10, "aaaa" ); // sprintf( str, "%#06x", 10, "aaaa" ); みたいな。 cout << strA << endl; // 1 0xa/aaaa と出力 cout << strB << endl; // 2 0x000a/aaaa と出力 // 入力 int xA, xB; string yA, yB; sscan( strA, "1 " % _ws % _x % "/" % _s, xA, yA ); // 空白部分はスキップさせる sscan( strB, "2 " % _x % "/" % _s[3], xB, yB ); // 文字列部分は3文字のみ取得 // 出力 print( cout, "xA = " % _d % "\nyA = " % _s % _endl, xA, yA ); print( cout, "xB = " % _d % "\nyB = " % _s % _endl, xB, yB ); // xA = 10 // yA = aaaa // xB = 10 // yB = aaa と出力
- 975 名前:デフォルトの名無しさん mailto:sage [2005/10/27(木) 00:15:14 ]
- >>974
せっかくなので便乗しておきますね.将来の話なのでアレですけれど. www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1603.pdf
- 976 名前:デフォルトの名無しさん mailto:sage [2005/10/29(土) 10:05:49 ]
- 難読コンテスト会場はここですか?
- 977 名前:デフォルトの名無しさん [2005/10/31(月) 13:08:43 ]
- >>974
すげー--w 確かに scanf っぽいこと出来るし。 でも、Perl みたいで汚いな。使おうとは思わんけど。
- 978 名前:デフォルトの名無しさん mailto:sage [2005/10/31(月) 13:59:50 ]
- >>974
マジキモス
- 979 名前:デフォルトの名無しさん mailto:sage [2005/11/02(水) 14:02:41 ]
- >>974
良くこんなん書く気になるなあ。
- 980 名前:デフォルトの名無しさん mailto:sage [2005/11/02(水) 14:40:35 ]
- >>975
boostな人達はあれば便利だけど、一般人的にはどうなのかなあ?
- 981 名前:デフォルトの名無しさん mailto:sage [2005/11/02(水) 16:19:39 ]
- >>980
どの辺が便利なのか理解に苦しむ。
- 982 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 13:49:05 ]
- >>980
型安全な printf, scanf というのが一番インパクトが大きいと思います. 後,lambda のような(擬似的な)可変長テンプレート引数を使ったライブラリの コンパイル時メッセージが見やすくなるというのもあるかと. >>981 Boost な人にとっては,これまでプリプロセッサなどで力技で実装していた Function, Tuple, MPL, Lambda など多くのライブラリの実装が 非常に楽に見通しよく実装できるようになり,便利になると思います.
- 983 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 15:15:01 ]
- >>982
コンパイルエラーなどたいして問題じゃないけどね。 それよりもデバッグの方が大変。
- 984 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 15:19:33 ]
- 変な拡張するより単にプリプロセッサを名前空間対応にすればいいだけちがうの?
- 985 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 15:30:42 ]
- >>984
それじゃプリプロセッサにならないでしょ。
- 986 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 17:19:51 ]
- え、C/C++のプリプロセッサってトークン理解してるはずなんだけどなあ。
商用じゃプリプロセスと同時に解析するのが主流だし。 テンプレート引数程度の局所的変更じゃ根本的解決にならないでしょ。
- 987 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 17:26:54 ]
- 名前空間を通常のものとプリプロセッサで共有しようとすると
泥沼になる気がする。(例えば # define STD_BEGIN namespace std{ とか) pp専用の名前空間ならwaveが実験的に対応している。
- 988 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 22:37:23 ]
- プリプロセッサと言えば、C++/CLIでとんちきな拡張してるよ。
スペース区切りキーワードってやつ。 www.microsoft.com/japan/msdn/vs05/visualc/TransGuide.asp
- 989 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 00:29:44 ]
- プリプロセッサと本体の間のフォーマットってANSIか何かで標準規格ある?
#132 "hogehote.h" たいていはこんなの出るんだよね?
- 990 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 01:08:57 ]
- 次スレ立てて良いですか?
- 991 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 01:21:16 ]
- C++相談室で十分だと思うんだ。
- 992 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 01:32:58 ]
- ハゲドー
一年もかかってやっと1スレなペースだし
- 993 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 01:40:20 ]
- >>983
> コンパイルエラーなどたいして問題じゃないけどね。 断言君さようなら
- 994 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 11:26:29 ]
- 断言君だって。なにその俺様用語w
オナニーマクロだらけの糞コード書いてる奴は 日本語にもそれが出るね。
- 995 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 12:12:24 ]
- 断言君 の検索結果 約 926,000 件中 1 - 10 件目 (0.27 秒)
- 996 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 12:25:58 ]
- 俺も>>983を支持する。
ランタイムエラーが恐ろしいのであって、 コンパイルエラーなどコンパイラとの対話交渉に過ぎない。
- 997 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 13:14:27 ]
- てかさ、コンパイルエラーが出てたら、
そもそも実行ファイルはビルドされて無いんじゃないか? ワーニングなら分かるけど。
- 998 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 13:49:38 ]
- つぎスレ立てるかどうか迷っているんだが
このスレのタイトルをよく吟味したら 「統合」:いくつかの物を一つにまとめあわせること このように辞書では出ている。 つーことは「STL相談室」も「BOOSTを語れ」も入らないよーな気がした。 それとも、ここのつぎスレが要らないのか? そんな疑問を抱いてしまって、俺には次スレを立てる勇気がない。 さあ。次をたてる勇者はだれか。
- 999 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 13:53:56 ]
- boostは微妙だがSTLスレもこのスレも必要なし
あっても混乱するだけ
- 1000 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 14:02:28 ]
- STLを使うと実行ファイルのサイズが10倍になるから
スレは統合すべきだと思います。
- 1001 名前:1001 [Over 1000 Thread]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|