C++0x 3
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/03/06(木) 21:53:47http://www.open-std.org/jtc1/sc22/wg21/
wiki
http://ja.wikipedia.org/wiki/C%2B%2B0x
C++0x
http://pc11.2ch.net/test/read.cgi/tech/1149440647/
C++0x 2
http://pc11.2ch.net/test/read.cgi/tech/1191842951/
0002デフォルトの名無しさん
2008/03/06(木) 21:56:560003デフォルトの名無しさん
2008/03/06(木) 22:26:28by bjarne stroustrup
0004デフォルトの名無しさん
2008/03/07(金) 04:54:57ばいびょーんすっぽすっぽ
0005デフォルトの名無しさん
2008/03/07(金) 06:43:350006デフォルトの名無しさん
2008/03/07(金) 08:18:13ときどき小学生と間違われている
でも処女じゃない
0007デフォルトの名無しさん
2008/03/07(金) 08:19:09wikiとwikipediaは違うぞw
MAILING 2008/02
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/#mailing2008-02
0008デフォルトの名無しさん
2008/03/07(金) 10:02:140009デフォルトの名無しさん
2008/03/07(金) 11:52:16個人的には今の C++/CLI は好きだ.
0010デフォルトの名無しさん
2008/03/07(金) 11:53:24標準準拠を重く見ているわけがないと思う。
0011デフォルトの名無しさん
2008/03/07(金) 13:23:22標準準拠の邪魔にはならないでしょ?
0012デフォルトの名無しさん
2008/03/07(金) 13:36:54それによって俺の人生が・・・・
もう終わってるけど
0013デフォルトの名無しさん
2008/03/07(金) 13:41:43けどベームさんが積極的にやってるから、
実装は今使える以上のものが出てくるんじゃないかな。
0014デフォルトの名無しさん
2008/03/07(金) 13:42:24残念だな.まぁいいか.
0015デフォルトの名無しさん
2008/03/07(金) 13:49:34イキロ
0016デフォルトの名無しさん
2008/03/07(金) 14:13:180017デフォルトの名無しさん
2008/03/07(金) 21:54:280018デフォルトの名無しさん
2008/03/07(金) 22:00:000019デフォルトの名無しさん
2008/03/07(金) 22:10:33ケースバイケース
0020デフォルトの名無しさん
2008/03/07(金) 22:14:100021デフォルトの名無しさん
2008/03/08(土) 00:19:53標準ライブラリにあるのは別に構わんが。
C/C++ は色んな環境に使えることが肝なんだろうし、
そういうのは強制するもんじゃなくて
選択肢としてはありますが強制ではないですよってものであってほしい。
0022デフォルトの名無しさん
2008/03/08(土) 00:24:30個人的には「強制しない」「言語側」を支持する。
0023デフォルトの名無しさん
2008/03/08(土) 00:42:54まさに C++/CLI だけど、あの珍妙な文法を見ると・・・。
0024デフォルトの名無しさん
2008/03/08(土) 00:59:210025デフォルトの名無しさん
2008/03/08(土) 01:07:33↑笑うなよ!
0026デフォルトの名無しさん
2008/03/08(土) 01:09:140027デフォルトの名無しさん
2008/03/08(土) 01:10:43C++界隈で相当に有名な人が設計していて、
目指す方向は悪くないのに。
やっぱり言語設計は別物なんだな。
>>22
俺も言語側に何かないと今出てる以上のものは難しいと思う。
けど最低限のもので、汎用に使える聞こうにして欲しい。
まあ禿がいる限りそう言うものしか出てこないだろうけども。
0028デフォルトの名無しさん
2008/03/08(土) 01:12:330029デフォルトの名無しさん
2008/03/08(土) 01:13:45Foo<Hoge※>※
0030デフォルトの名無しさん
2008/03/08(土) 01:16:120031デフォルトの名無しさん
2008/03/08(土) 01:27:29Foo<Hoge@>@
Foo<Hoge!>!
Foo<Hoge*>*
0032デフォルトの名無しさん
2008/03/08(土) 01:39:01積つながりの & は既にアドレスや参照で使われてるし。
0033デフォルトの名無しさん
2008/03/08(土) 01:42:56ちょっとXMLっぽいw
0034デフォルトの名無しさん
2008/03/08(土) 10:28:02m17n界隈にはcharacter set independenceとかISO 2022に執着してる
アンチUnicodeの人がまだ生きてるし、変換表地獄でリアルに困ってる人もいるから、
EBCDICを気にしなくていい環境でもASCIIの範囲をはみ出すのはやめた方がいい。
特にメタ文字に使うような記号類は化けやすいし文字幅問題も出てくるから。
0035デフォルトの名無しさん
2008/03/08(土) 10:50:560036デフォルトの名無しさん
2008/03/08(土) 12:35:01http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
Status of Experimental C++0x Support in GCC 4.3
Rvalue references N2118 Yes
Rvalue references for *this N2439 No
Variadic templates N2242 Yes
Static assertions N1720 Yes
Declared type of an expression N2343 Yes
Right angle brackets N1757 Yes
Default template arguments for function templates DR226 Yes
Extern templates N1987 Yes
C99 Features in C++0x
__func__ predefined identifier N2340 Yes
C99 preprocessor N1653 Yes
long long N1811 Yes
もちろんg++起動オプションでオンにしたときだけ。
http://gcc.gnu.org/gcc-4.3/changes.html
0037デフォルトの名無しさん
2008/03/08(土) 12:48:430038デフォルトの名無しさん
2008/03/08(土) 16:01:56うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
0039デフォルトの名無しさん
2008/03/08(土) 16:26:47詳しく
0040デフォルトの名無しさん
2008/03/08(土) 16:29:480041デフォルトの名無しさん
2008/03/08(土) 16:34:38*thisの右辺値参照 N2439 No
可変個引数テンプレート N2242 Yes
静的アサーション N1720 Yes
式に対するdecltype N2343 Yes
山括弧閉じの件 N1757 Yes
テンプレート関数のデフォルトテンプレート引数 DR226 Yes
Extern templates N1987 Yes
0042デフォルトの名無しさん
2008/03/08(土) 16:35:260043デフォルトの名無しさん
2008/03/08(土) 16:36:26ktkr
0044デフォルトの名無しさん
2008/03/08(土) 16:38:50http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
draft読まないとな。ディフォルト引数便利だし。
0045デフォルトの名無しさん
2008/03/08(土) 17:50:46相手は誰だ…
うらやましすぐる
0046デフォルトの名無しさん
2008/03/08(土) 18:43:270047デフォルトの名無しさん
2008/03/19(水) 00:34:380048デフォルトの名無しさん
2008/03/19(水) 20:09:10制御文やループ文のブロック仮引数使えて面白いんだが…
withLock(lockVar) {
// do something
}
void withLock(Lock l, {Lock => void} b) { ...
for foo(T i : aCollection) {
// do something
}
void foo(C<T> c, {T => void} b) { ...
0049デフォルトの名無しさん
2008/03/26(水) 00:05:23<> が [] になって、中にキャプチャ変数並べられるようにしたと
return は省略できないぽい?
0050デフォルトの名無しさん
2008/03/26(水) 00:09:48http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2588.pdf
0051デフォルトの名無しさん
2008/03/26(水) 00:12:150052デフォルトの名無しさん
2008/03/26(水) 02:27:35下方互換性がなくなるからね。
あまり奇怪な記号列も困るけどラムダ式は俺的にギリギリセーフ。
あとconceptのexportは取り下げられたねw
0053デフォルトの名無しさん
2008/03/26(水) 02:56:22まさかテンプレートのexportと同じように、
別の翻訳単位のコンセプトを参照する機能?
そんなのあったんだ。そりゃはいらないだろうなぁ
N2550を、今読んでいるんだけど、文法がものすごくキモいな。
本当に新しいキーワードがほしい。
新しいキーワードさえあれば、
どこでlambdaを使っているか、メモ帳ですら検索できるのに。
0054デフォルトの名無しさん
2008/03/26(水) 03:27:16検索のやりやすさが全然違う。
0055デフォルトの名無しさん
2008/03/26(水) 04:26:40もしかして省略できる?
つまり、
[](){}() ;
と同じ意味で
[]{}() ;
は可能?
しかし、邪悪なコードだ。
0056デフォルトの名無しさん
2008/03/26(水) 07:11:360057デフォルトの名無しさん
2008/03/26(水) 11:20:09std::for_each(v.begin(), v.end(), ら(int x) {std::cout << x;});
0058デフォルトの名無しさん
2008/03/26(水) 12:15:33λ.....トボトボ
0059デフォルトの名無しさん
2008/03/26(水) 12:30:25#define closure(captures) [captures]
こんなんほしいかもな。
0060デフォルトの名無しさん
2008/03/26(水) 12:31:44文法のところにはっきり opt と書いてあるだろ。
0061デフォルトの名無しさん
2008/03/26(水) 19:02:170062デフォルトの名無しさん
2008/03/26(水) 19:21:480063デフォルトの名無しさん
2008/03/26(水) 19:36:110064デフォルトの名無しさん
2008/03/26(水) 20:23:14int n = 10;
auto x10 = inline [n] (int a) { return a * n; }
0065デフォルトの名無しさん
2008/03/26(水) 21:04:170066デフォルトの名無しさん
2008/03/26(水) 21:47:250067デフォルトの名無しさん
2008/03/26(水) 21:55:470068デフォルトの名無しさん
2008/03/26(水) 21:57:590069デフォルトの名無しさん
2008/03/26(水) 21:58:590070デフォルトの名無しさん
2008/03/26(水) 22:01:070071デフォルトの名無しさん
2008/03/26(水) 22:02:11構文に影響を与えるタイプのマクロも混乱を招くしかない。
しかし元の文法からして微妙。
どうすればいいんだ。
0072デフォルトの名無しさん
2008/03/26(水) 23:43:51100回くらい使ってれば慣れるよきっと
0073デフォルトの名無しさん
2008/03/26(水) 23:44:270074デフォルトの名無しさん
2008/03/27(木) 00:42:100075デフォルトの名無しさん
2008/03/27(木) 05:49:530076デフォルトの名無しさん
2008/03/27(木) 07:40:59最初の抵抗感から最終的な快感への淫靡なプロセスをたどるわけだ
0077デフォルトの名無しさん
2008/03/27(木) 10:58:460078デフォルトの名無しさん
2008/03/27(木) 11:49:130079デフォルトの名無しさん
2008/03/27(木) 13:39:310080デフォルトの名無しさん
2008/03/27(木) 19:36:340081デフォルトの名無しさん
2008/04/06(日) 20:01:370082デフォルトの名無しさん
2008/04/06(日) 20:11:060083デフォルトの名無しさん
2008/04/06(日) 21:25:260084デフォルトの名無しさん
2008/04/06(日) 23:25:530085デフォルトの名無しさん
2008/04/06(日) 23:27:340086デフォルトの名無しさん
2008/04/07(月) 00:16:53旧キャスト並に邪悪だ。
0087デフォルトの名無しさん
2008/04/07(月) 00:21:24旧キャストとはCスタイルのキャストのこと?
だとして、構文が邪悪?
0088デフォルトの名無しさん
2008/04/07(月) 00:23:29こういうときに、えぴなんとか通せばいいの?
0089デフォルトの名無しさん
2008/04/07(月) 00:35:49今年に入ってからトラブってるらしいんだよなあ。他の人はどうしてんだろ。
0090デフォルトの名無しさん
2008/04/07(月) 00:41:350091デフォルトの名無しさん
2008/04/07(月) 07:53:48とかいう構文は邪悪でしょう...
0092デフォルトの名無しさん
2008/04/07(月) 09:39:320093デフォルトの名無しさん
2008/04/07(月) 11:27:580094デフォルトの名無しさん
2008/04/07(月) 13:27:49そういう意味ではCスタイルキャストのいやらしさと似てる。
0095デフォルトの名無しさん
2008/04/07(月) 14:24:310096デフォルトの名無しさん
2008/04/07(月) 15:22:330097デフォルトの名無しさん
2008/04/07(月) 21:31:480098デフォルトの名無しさん
2008/04/07(月) 21:46:43検索しにくい事がどう邪悪なのかも判らん
もっと判り易く説明してくれ
0099デフォルトの名無しさん
2008/04/07(月) 21:48:48関数適用が検索し易くなければならない理由もないけど
0100デフォルトの名無しさん
2008/04/07(月) 22:29:38なんか必死だなあw
どちらかといえば探せたほうがいいかな、という程度の話なんだけどね。
関数の先頭とかも検索しにくいわけだから、構わんといえば構わんか。
あとは美観の問題だね。
0101デフォルトの名無しさん
2008/04/07(月) 22:39:50その程度の話なら別にいいんだけど,
邪悪だなんて穏やかでない言い方してるから
なんか構文的に問題があるなら教えてくれ、ってだけなんだけど
0102デフォルトの名無しさん
2008/04/07(月) 22:41:37構文の問題とかはさすがにないんだろ、偉い人が考えたんだから。w
0103デフォルトの名無しさん
2008/04/07(月) 23:13:220104デフォルトの名無しさん
2008/04/07(月) 23:17:11使い回すにしてもどれを使い回すか結構考えないと、
goto と同じくらい邪悪になってしまう。
0105デフォルトの名無しさん
2008/04/07(月) 23:19:390106デフォルトの名無しさん
2008/04/07(月) 23:21:280107デフォルトの名無しさん
2008/04/07(月) 23:50:420108デフォルトの名無しさん
2008/04/07(月) 23:51:440109デフォルトの名無しさん
2008/04/07(月) 23:57:240110デフォルトの名無しさん
2008/04/07(月) 23:59:440111デフォルトの名無しさん
2008/04/08(火) 00:05:07コンビネータもλ式の一種だぞ。
0112デフォルトの名無しさん
2008/04/08(火) 00:08:030113デフォルトの名無しさん
2008/04/08(火) 00:10:440114デフォルトの名無しさん
2008/04/08(火) 00:12:540115デフォルトの名無しさん
2008/04/08(火) 00:18:390116デフォルトの名無しさん
2008/04/08(火) 00:24:350117デフォルトの名無しさん
2008/04/08(火) 00:27:350118デフォルトの名無しさん
2008/04/08(火) 00:40:300119デフォルトの名無しさん
2008/04/08(火) 00:52:290120デフォルトの名無しさん
2008/04/08(火) 01:01:220121デフォルトの名無しさん
2008/04/08(火) 01:09:380122デフォルトの名無しさん
2008/04/08(火) 01:10:040123デフォルトの名無しさん
2008/04/08(火) 01:16:090124デフォルトの名無しさん
2008/04/08(火) 02:02:33[&]とoperator[]が絡んでおかしなことにならねえかな
0125デフォルトの名無しさん
2008/04/08(火) 02:03:220126デフォルトの名無しさん
2008/04/08(火) 02:45:240127デフォルトの名無しさん
2008/04/08(火) 02:49:240128デフォルトの名無しさん
2008/04/08(火) 03:03:300129デフォルトの名無しさん
2008/04/08(火) 07:31:32#define lambda _Lambda を行うヘッダファイル lambda を用意すればいい。
0130デフォルトの名無しさん
2008/04/08(火) 08:31:410131デフォルトの名無しさん
2008/04/08(火) 08:36:47それなんて _Bool ?
0132デフォルトの名無しさん
2008/04/08(火) 13:16:480133デフォルトの名無しさん
2008/04/08(火) 14:23:300134デフォルトの名無しさん
2008/04/08(火) 19:27:05C++2xくらいでは酷いことになってそうだ
0135デフォルトの名無しさん
2008/04/08(火) 19:43:390136デフォルトの名無しさん
2008/04/08(火) 20:06:520137デフォルトの名無しさん
2008/04/08(火) 20:10:450138デフォルトの名無しさん
2008/04/08(火) 20:19:48妄想してみるか。
・十分にハードウェアが高速になったとして、とうとうC++にもevalを導入
・メタプログラミングや賢いマクロを積極的に仕様に盛り込むことで、新たな文法を定義可能
例えば、LispやPerl、Pythonはおろか、Brainf*ckやWhitespaceまでもがC++としてコンパイル可能
・現実世界で、本当にほしいライブラリが標準規格に盛り込まれる(XMLとかUnicodeとか)
・Bjarne Stroustrupがフサフサになる
C++以外の妄想
・宗教戦争は終わらない:言語、OS、コンパイラ、エディタ
・既に64bitが主流になり、32bitコードは16bitコードなみの扱いを受けている
・メモリを数十GB確保することは当然である
・そのようなハードウェアでも、最新の3Dゲームはまだ遅い
・96DPIより高いDPIのディスプレイが使われている。
0139デフォルトの名無しさん
2008/04/08(火) 20:31:440140デフォルトの名無しさん
2008/04/08(火) 20:57:472029年までC++は現役でいられるんだろうか?…
寧ろ、現役であることのほうが問題だとも感じてしまうのだが、C++0x仕様策定の経緯を考えると
僅か数年のライフサイクルの為にそんなことしないとも思えるわけで…
まだCPUが8ビットでOSなんか載ってなくて、アセンブリでがんがってた時代を顧みると、
既に量子コンピュータは無理としても量子マイコンみたいな4キュービットマシンがあったりしてw
そういやtime_tが32ビット符号付なLinuxディストリビューションが2038年にオーバーフローする件、
Y2Kのような事は起きないんだろうな
それまでにtime_tは64ビットは当たり前だったりするだろうし、CPUのレジスタやアドレス空間が
512ビット幅だったりしてねw
メモリはTBは余裕なんじゃないの?
15年くらい前は4MBとかだったのに15年程度で1〜2GBが標準だし
HDDなんかがTB越えてEBとか新たな単位がデファクトスタンダード化してたりして
妄想楽しかったわ
0141デフォルトの名無しさん
2008/04/08(火) 21:09:01・GCは本当にC++標準になるか?
・CRTPの果たす機能を、より一般的でかつ抽象的な機構で実現できないか?
・daemon method, accessor hook
0142デフォルトの名無しさん
2008/04/08(火) 21:12:282038年問題は考えてたけれど、2029年には早すぎると思って入れるのをやめた。
人間が騒ぎ出すのは、大抵、問題がひっ迫してからだから、数年後に迫らないと、
本格的に議論されないと思う。
Y2Kのようなことはおきるね。32bitコードはそこらかしこで動いているだろうから。
一体誰がコンパイルしなおすの?
というか標準規格厨としては、POSIXのCライブラリは嫌い。
ANSI CやC99とは微妙に違うし。
というかそもそもCライブラリ自体が古いから、使われなくなってくれれば、うれしいんだけどなぁ。
>CPUのレジスタやアドレス空間が512ビット幅
というか本音を言うと、本当に64bitに移行できているかどうかも怪しい。
最悪、いまだにWindowsは32bit版が発売されているということも。
>HDDなんかがTB越えて
HDDに置き換わるものは、やはり20〜30年ぐらいじゃ無理かな。
0143デフォルトの名無しさん
2008/04/08(火) 21:27:47mixin だな。今の C++ に足りないのは。
0144デフォルトの名無しさん
2008/04/08(火) 21:29:44access controlがないのが痛いね。
0145デフォルトの名無しさん
2008/04/08(火) 21:31:58まあY2Kと同じで大した問題は起きないだろうな。
と油断しておけば、いろいろ問題が起きて楽しめるかも。w
0146デフォルトの名無しさん
2008/04/08(火) 21:36:25冷静に考えると、CPUのアドレスバス幅を512bitなんかにする恩恵は殆ど無いね
64bitでも十分なアドレス空間があるし
確かに、32bitCPUのライフサイクルは長かった、というか今も64bitコアを64bitとして使ってる
OSは全体からすれば少数だろうし
CはもうC++のサブセットでいいんじゃないの?
今もC++コンパイラがオプションでCコンパイル出来るけど…
よりOOP色、AOP色強くなればなるほど、C標準ライブラリを使用することへの危機感はでかくなる
だろうし…
POSIX俺も好きじゃないし、なんやかんやいいつつも、ISOベースでいいとおもってるし
直近じゃC++0x、boostの幾つかを標準ライブラリとしてstdネームスペースに取り入れるようだし
それはコンパイラとしては歓迎されるのかも?
新コンパイラ出たところで、2038年問題とも絡んで古いコードは存在し続けるわけで、古い
コンパイラを使うだろうから新しいライブラリを使用するのは暫く様子を見ることになるんだろうし
32bitのソースなど、下手すりゃポインタ変数のサイズ=4バイトと決めうちのコードもあるから
リコンパイルだけじゃ済まなそう…
アライメント違反も出そうだなあ
とはいえ、プリプロセッサが2029年まで残ってるんだろうか?
今の俺の脳味噌ではプリプロセッサが無いと大変に困るわけだけど…
EffectiveC++なんかに指南される
#define FOO "foobarfoo"
よりも
const char* const FOO = "foobarfoo";
を使え、これは分かるが、
#if/#ifdefが無いのは困るし、マクロ定義が使えずにインラインというのもそれはそれでデバッグログ
出すときに困る…
0147デフォルトの名無しさん
2008/04/08(火) 21:39:050148デフォルトの名無しさん
2008/04/08(火) 21:40:01stdがどんどん増えるのは好ましくないと思う。
0149デフォルトの名無しさん
2008/04/08(火) 21:49:59もうちょっとkwsk
0150デフォルトの名無しさん
2008/04/08(火) 21:56:36> stdがどんどん増えるのは好ましくないと思う。
わからなくはないが、STLの大半がコンテナであるうえに、stdというネームスペース名を考えると、
確かに新しい標準ライブラリは異なるネームスペースに入れて貰いたいという気もしなくもない
ついでに、マクロに C++0x 対応コンパイラなのかどうかを判別するマクロ用意して欲しいんだけど、
既にそれは予定済みだったりしてw
0151デフォルトの名無しさん
2008/04/08(火) 21:59:10気軽に using できない。
そう考えると、あんまり標準ライブラリの階層深いと
ダルくなると思う。
0152デフォルトの名無しさん
2008/04/08(火) 22:08:51__cplusplusの値が増えているんじゃないの?
0153デフォルトの名無しさん
2008/04/08(火) 22:16:47それそれ、頼むからヘッダファイルで using namespace std; とかしないで欲しい!
だが、今のPRJではそこら中にあるんだよね…
そんなに std::string とか std::vector って書くのがめんどくさいのかね
>>152
それもそうだw
__cplusplusなんて値を意識しないもんなぁ extern"C" くらいにしか使わないからw
0154デフォルトの名無しさん
2008/04/08(火) 22:42:460155デフォルトの名無しさん
2008/04/08(火) 22:49:260156デフォルトの名無しさん
2008/04/08(火) 23:23:08単純にスタティックなオブジェクト言語の限界だと思うんだが
0157デフォルトの名無しさん
2008/04/08(火) 23:47:46ヘッダも今や階層化されてるし。
>>156
そんなの関係ないねえ
0158デフォルトの名無しさん
2008/04/09(水) 00:30:10> そんなの関係ないねえ
どんな意味で関係ないんだろ? >>151, >>156 は
> ヘッダも今や階層化されてるし。
このことを問題にしてるんじゃないのか?
0159デフォルトの名無しさん
2008/04/09(水) 00:45:230160デフォルトの名無しさん
2008/04/09(水) 01:54:30何だかんだ言ってもここ20年間はおおむねCとC++の天下だったし、
それはこの先も変わらないだろうな
0161デフォルトの名無しさん
2008/04/09(水) 03:09:07オブジェクト指向やC++にはスマートさで限界を感じる。
0162デフォルトの名無しさん
2008/04/09(水) 04:26:18LISPが誕生して50年になるけどその間に関数型言語が主流になったことなんて一度もないだろ
0163デフォルトの名無しさん
2008/04/09(水) 04:44:38ほんとにそうよね。
まあ、最近よく言われてるのは、
宣言型とか手続き型、静的とか動的の垣根がなくなっていくってのかな。
あとは、1つの言語で全部書くんじゃなくて、
多言語混在開発な方向に進んで行ってる。
というのを考えると、やっぱり C++ には限界を感じるんだけど。
0164デフォルトの名無しさん
2008/04/09(水) 07:18:34・・・・・・・・・・・・・・・・・・
by Sutter
なぜlambdaやclosureに拘っているのかもわからん。
MSはF#に本腰を入れてるようだけど。
いずれにせよC++色々取り込みすぎて記述レベルに難があるとは思う。
0165デフォルトの名無しさん
2008/04/09(水) 07:48:48D言語はpure関数とかを導入して、関数プログラミングを取り込む方向で動いてるみたいだね。
http://www.digitalmars.com/d/2.0/accu-functional.pdf
どうなるかわかんないけど。
0166デフォルトの名無しさん
2008/04/09(水) 07:55:090167デフォルトの名無しさん
2008/04/09(水) 08:29:090168デフォルトの名無しさん
2008/04/09(水) 08:57:25わからん方が鈍いと思うけどね。
0169デフォルトの名無しさん
2008/04/09(水) 09:15:35schemeをやってきた俺は勝ち組だがな。C++はのλはモドキだ。
0170デフォルトの名無しさん
2008/04/09(水) 09:25:400171デフォルトの名無しさん
2008/04/09(水) 09:30:06モドキ
だけじゃなくて、具体的に言わないと。
愚痴書くスレじゃないから。
0172デフォルトの名無しさん
2008/04/09(水) 09:32:05でもテンプレートの可読性の低さは難だろ。キモ構文のオンパレード
それでもあなたはC++に期待しますか?
0173デフォルトの名無しさん
2008/04/09(水) 09:39:490174デフォルトの名無しさん
2008/04/09(水) 09:45:09例えばscheme処理系は言語の機能として構文拡張が可能。
C++は言うに及ばず。
0175デフォルトの名無しさん
2008/04/09(水) 09:53:56Schemeのプリミティブは強力だけど、
Schemeだって得意じゃないことは一杯あるし。
C++のclosureは、Javaの奴みたいに、
コントロール拡張について考慮されてないのが寂しいですねえ。
0176デフォルトの名無しさん
2008/04/09(水) 10:53:42>C++のclosureは、Javaの奴みたいに、
>コントロール拡張について考慮されてないのが寂しいですねえ。
もうちょっとkwsk
0177デフォルトの名無しさん
2008/04/09(水) 11:23:440178デフォルトの名無しさん
2008/04/09(水) 11:25:270179デフォルトの名無しさん
2008/04/09(水) 12:31:24まるでLISPが関数型言語みたいな言い方だな。w
0180デフォルトの名無しさん
2008/04/09(水) 13:17:07細かい突っ込みは痛々しいよ。
その「句点のあとのダブリュー」に突っ込むくらい虚しいことだ。
0181デフォルトの名無しさん
2008/04/09(水) 13:17:510182デフォルトの名無しさん
2008/04/09(水) 13:35:510183デフォルトの名無しさん
2008/04/09(水) 13:38:140184デフォルトの名無しさん
2008/04/09(水) 14:50:27あやふやな知識じゃ自慢できませんものね。w
0185デフォルトの名無しさん
2008/04/09(水) 15:14:330186デフォルトの名無しさん
2008/04/09(水) 16:44:560187デフォルトの名無しさん
2008/04/09(水) 17:39:48わかります
0188デフォルトの名無しさん
2008/04/09(水) 21:42:03遅くなりましたけれどありがとうございます.
finally 周りを省略するための使い方は, scope guard 系の技法に
lambda expression を組み合わせれば C++0x でもおよそそのまま転用できそうですね.
Listener に Event 設定したり, thread function の設定に使うのは
C++ だと lifetime の問題が出てくるのでそのまま転用するのが
難しい局面が出てくると思いますけれど,
これはコントロール云々とは直接は関係ないですかね.
0189デフォルトの名無しさん
2008/04/10(木) 15:51:50Dスレから来ました
> Brainf*ckやWhitespaceまでもがC++としてコンパイル可能
DでBrainfuckをDの関数としてコンパイルするサンプルはもう作ってみたよ。
C++でもテンプレートプログラミングが変態的になればできると思う。
メモリ管理がうまくいけばJavaあたりはC++で直接いけるような気がします
0190デフォルトの名無しさん
2008/04/10(木) 16:11:46Dはやねうらおが一時期信者だったので敬遠してたんだが、
今は離れたみたいだし、ちょっと遊んでみようかな。
流行るとは思わないけれど。
0191デフォルトの名無しさん
2008/04/11(金) 11:57:20「誰々が信者だったから〜」
なんともくだらない理由だなww
0192デフォルトの名無しさん
2008/04/11(金) 12:15:170193デフォルトの名無しさん
2008/04/11(金) 12:50:57美少女中学生の生理なら駄目じゃないぞむしろ大歓迎
0194デフォルトの名無しさん
2008/04/11(金) 18:00:430195デフォルトの名無しさん
2008/04/11(金) 18:02:33坊主憎けりゃ袈裟まで憎いとか俺には一生分からない感情だろうな。
0196デフォルトの名無しさん
2008/04/11(金) 18:30:23「坊主憎けりゃなんとやらか」
「でも今日は気にしないよ」
「あー、"今朝まで憎い"ってか」
0197デフォルトの名無しさん
2008/04/11(金) 18:43:42煽りの内容もお前が言うなレベルの低次元なものだし・・・
0198デフォルトの名無しさん
2008/04/11(金) 19:10:560199デフォルトの名無しさん
2008/04/11(金) 19:27:21でも最近は仕事じゃPHPばっかりで萎える.
0200デフォルトの名無しさん
2008/04/11(金) 20:40:510201デフォルトの名無しさん
2008/04/11(金) 23:00:490202デフォルトの名無しさん
2008/04/12(土) 09:07:380203デフォルトの名無しさん
2008/04/12(土) 09:27:120204デフォルトの名無しさん
2008/04/12(土) 11:47:560205デフォルトの名無しさん
2008/04/12(土) 11:50:32誰も使わない上に紛らわしい
pythonを見習って止めるべし
0206デフォルトの名無しさん
2008/04/12(土) 11:51:150207デフォルトの名無しさん
2008/04/12(土) 14:32:370208デフォルトの名無しさん
2008/04/12(土) 14:51:09パーミションは3ビットだから8進使うと便利だな
0209デフォルトの名無しさん
2008/04/12(土) 14:55:540210デフォルトの名無しさん
2008/04/12(土) 14:59:150211デフォルトの名無しさん
2008/04/12(土) 15:00:110212デフォルトの名無しさん
2008/04/12(土) 16:04:490213デフォルトの名無しさん
2008/04/12(土) 16:08:270214デフォルトの名無しさん
2008/04/12(土) 17:27:33これ良く書かれてるんだけど
0xdcとかが11011100とかに見えないの?
実に不思議だ
0215デフォルトの名無しさん
2008/04/12(土) 17:28:570216デフォルトの名無しさん
2008/04/12(土) 17:34:12「実質ゼロ時間・ゼロ労力」でできるのはせいぜいその辺の変換+αくらいで、
その程度ではまるで不便だから「よく書かれる」んだろう。
もし「0xdcが11011100に見えないレベルの人が」よくこの要望を出しているのだと考えているなら、
勘違いで自分を相対的に持ち上げすぎ。不思議っていうか、君が不思議ちゃんだよw
0217デフォルトの名無しさん
2008/04/12(土) 17:36:42という話しになってしまうな
ただ二進数だと桁が多くなるから区切りがないと返って可読性落ちるな
0218デフォルトの名無しさん
2008/04/12(土) 17:40:15どういうこと?
16進と2進は直接4桁ごとに変換できるから2進表記はないんだろ?
そしてそれをほとんどができるから
よく書かれるってのは皮肉で書いたんだけど
0219デフォルトの名無しさん
2008/04/12(土) 17:40:540220デフォルトの名無しさん
2008/04/12(土) 18:02:420221デフォルトの名無しさん
2008/04/12(土) 18:04:050222デフォルトの名無しさん
2008/04/12(土) 18:28:35・2進 <-> 8進 <-> 16進の変換
・0xF*0xFまでの16進九九
・文字定数 <-> ASCII値
・主要な2^n値の10進表記(n=1〜16,20,24,30,31,32,40,63,64あたり)
くらいは身につけてるのが常識だし、マナーだと思ってたが
最近はそうでもないのか
0223デフォルトの名無しさん
2008/04/12(土) 18:30:39そのままでいいこととは別の話だろ?
0224デフォルトの名無しさん
2008/04/12(土) 18:34:33九九を知らない奴が家を設計できるようになることが良いこととは思えない
0225デフォルトの名無しさん
2008/04/12(土) 18:34:38こんなのぱっと見て長すぎて分かりにくいし
たかだか16個のビットパターン覚えられないって方がネタだろ
0226デフォルトの名無しさん
2008/04/12(土) 18:38:18この辺、本当にそう思うならちょっと披露して欲しいと思った。
・8進16進変換
普通の人は、2進を介在させないと難しいと思う。
・16進9x9
必要になるケースがレアすぎる。
・2^nのnが40とか64とか。
nが16以下なら普通に言えるけど。nが32でさえ桁数が多すぎて普通は無理。
0227デフォルトの名無しさん
2008/04/12(土) 18:38:200228デフォルトの名無しさん
2008/04/12(土) 18:38:45そんな化石言語使いません。
0229デフォルトの名無しさん
2008/04/12(土) 18:39:30でも、できるなら言語的にサポートされてほしい。
0230デフォルトの名無しさん
2008/04/12(土) 18:40:18これを0b1101000101とか書かれると困る
0bの後に続く数は4の倍数個に制限するべきだが、導入されたとして多分そうはならないだろ
だったら有害なだけ
0231デフォルトの名無しさん
2008/04/12(土) 18:40:590232デフォルトの名無しさん
2008/04/12(土) 18:41:410233デフォルトの名無しさん
2008/04/12(土) 18:42:55D ではこう書く。
0b11_0100_0101
0234デフォルトの名無しさん
2008/04/12(土) 18:43:182^31と2^32の10進値も知らないコンピュータ技術者がいるなんて信じたくない
0235デフォルトの名無しさん
2008/04/12(土) 18:44:270236デフォルトの名無しさん
2008/04/12(土) 18:45:061048576までなら覚えてるけど
0237デフォルトの名無しさん
2008/04/12(土) 18:45:36細かい値が必要なときだけ電卓でポンでいいだろ。
無駄な事覚えるのはタダのバカ。
0238デフォルトの名無しさん
2008/04/12(土) 18:48:05けど2^24は16777216って覚えてるな
0239デフォルトの名無しさん
2008/04/12(土) 18:48:142^10 = K
2^20 = M
2^30 = G
で十分だ。
0240デフォルトの名無しさん
2008/04/12(土) 18:49:04俺も 16777216 は覚えてるな。
何か覚えやすい並びだしな。
0241デフォルトの名無しさん
2008/04/12(土) 18:50:18Gってのは文脈によって1073741824・1047586000・1024000000・1000000000を意味する可能性がある
全然十分ではない
0242デフォルトの名無しさん
2008/04/12(土) 18:51:082^10=1024も知らないとか冗談だろ?
0243デフォルトの名無しさん
2008/04/12(土) 18:51:510244デフォルトの名無しさん
2008/04/12(土) 18:53:29例えば伝送速度は1k=1000、メモリ容量などは1k=1024換算だ。
>>242
んなもん覚えてるわ
0245デフォルトの名無しさん
2008/04/12(土) 18:53:37万の区切りで48が2回出てくるし偶数桁目に4,4,3,4って調子よく並んでるし
0246デフォルトの名無しさん
2008/04/12(土) 18:54:10文脈だって、馬鹿じゃね
0247デフォルトの名無しさん
2008/04/12(土) 18:54:582^10 = 1024
2^15 = 32768
2^16 = 65536
これはおさえとかないと確かにマズいな
0248デフォルトの名無しさん
2008/04/12(土) 18:56:380249デフォルトの名無しさん
2008/04/12(土) 18:56:51これで覚えてる
0250デフォルトの名無しさん
2008/04/12(土) 18:58:21メディア業界でも会社によってメガが1000000だったり1024000だったりするから困る
(1048576であることはまずないけど)
0251デフォルトの名無しさん
2008/04/12(土) 18:58:280252デフォルトの名無しさん
2008/04/12(土) 18:59:210253デフォルトの名無しさん
2008/04/12(土) 19:04:49#define FLAG_A 0b00000001
#define FLAG_B 0b00000010
#define FLAG_C 0b00000100
#define FLAG_D 0b00001000
#define FLAG_E 0b00010000
#define FLAG_F 0b00100000
なんて表現ができて初心者がフラグの定義の仕方を直感的に理解できるくらいか?
それ以外のメリットが思いつかん・・・
0254デフォルトの名無しさん
2008/04/12(土) 19:06:21#define FLAG_A BIT(0)
#define FLAG_B BIT(1)
#define FLAG_C BIT(2)
#define FLAG_D BIT(3)
#define FLAG_E BIT(4)
#define FLAG_F BIT(5)
とかの方が分かりやすい
0255デフォルトの名無しさん
2008/04/12(土) 19:07:070256デフォルトの名無しさん
2008/04/12(土) 19:10:500257デフォルトの名無しさん
2008/04/12(土) 19:12:27マ板行けよ
新しい関数型の記法です。->を使う。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
typedef int IFUNC(int);
IFUNC* fpif(int);
↓
auto fpif(int)->int(*)(int)
template <class T, class U> decltype((*(T*)0)+(*(U*)0)) add(T t, U u);
↓
template <class T, class U> auto add(T t, U u) -> decltype(t+u);
0258デフォルトの名無しさん
2008/04/12(土) 19:17:280259デフォルトの名無しさん
2008/04/12(土) 19:19:27long n=0;
for(; *literal_string; literal_string++){
n = (n << 1) + *literal_string - '0';
}
return n
}
こういうのが出来れば0b厨もおとなしくなるのに
0260デフォルトの名無しさん
2008/04/12(土) 19:21:370261デフォルトの名無しさん
2008/04/12(土) 19:21:550262デフォルトの名無しさん
2008/04/12(土) 19:36:310263デフォルトの名無しさん
2008/04/12(土) 19:37:58そこがいい。下品な俺たちにぴったりなのだ。
0264デフォルトの名無しさん
2008/04/12(土) 19:50:37templateの例はtypedefじゃきついだろ。
関数型表記の無理やり感がついに破綻しましたね。
0265デフォルトの名無しさん
2008/04/12(土) 19:51:05というかその人達、これだけ会話が続いてもまだ
「16種類のビットパターンを覚えられないから0b表記を欲しがっている」
と思い込んでるのが痛い。
0266デフォルトの名無しさん
2008/04/12(土) 19:58:44ごめん、違うの?
0267デフォルトの名無しさん
2008/04/12(土) 19:59:45違うに決まってるだろ。
その記憶力でちゃんと日本語を覚えような。
0268デフォルトの名無しさん
2008/04/12(土) 20:04:250bには16進のビットパターンを覚えられないゆとりのため以外にどのような利点があるのでしょうか
0269デフォルトの名無しさん
2008/04/12(土) 20:06:340270デフォルトの名無しさん
2008/04/12(土) 20:07:39バーカバーカ
0271デフォルトの名無しさん
2008/04/12(土) 20:09:47保守性の向上
0272デフォルトの名無しさん
2008/04/12(土) 20:10:360273デフォルトの名無しさん
2008/04/12(土) 20:12:120274デフォルトの名無しさん
2008/04/12(土) 20:18:020275デフォルトの名無しさん
2008/04/12(土) 20:20:560bの方が読みやすい、だから保守性が向上するんだ!という主張ですね?
つまり0xを読めない奴でも保守できるようにするための機能ということですから
16進のビットパターンを覚えられないゆとりのための機能という意味ですね
解答になってないですね
「16進のビットパターンを覚えられないゆとりのため」以外の理由を教えて下さい
この馬鹿な私に教えて下さい
0276デフォルトの名無しさん
2008/04/12(土) 20:21:57こういう下品な理由こそが C++ に相応しい
0277デフォルトの名無しさん
2008/04/12(土) 20:22:32君は馬鹿というより単純だと思う
0278デフォルトの名無しさん
2008/04/12(土) 20:24:26「ゆとりと仕事する(或いは保守をやらせる)かも知れないから」
でいいんじゃね
0279デフォルトの名無しさん
2008/04/12(土) 20:24:42一行目と二行目の間に凄い飛躍があるなw
0280デフォルトの名無しさん
2008/04/12(土) 20:26:550xが読めるなら0xだろうと0bだろうと保守性は変わらないんですから
0xが読めない人にのみ意味のある保守性の向上ということですよね?
普通に読めばそういう意味になると思いますが
どのような飛躍があるのか教えて下さい
単純な私に教えて下さい
0281デフォルトの名無しさん
2008/04/12(土) 20:31:062進で書くか16進で書くかによって
コードに込められた意図に差が出ることだってあるだろ。
0282デフォルトの名無しさん
2008/04/12(土) 20:31:06「読める」と「読みやすい」の違いは判る?
0283デフォルトの名無しさん
2008/04/12(土) 20:31:2773種類もある(しかも多くは多重に意味のある)C++の予約語を覚えられるわけがないから
そういう奴は普通に考えてC++をいじるような仕事が出来るわけがないと思うんだが
0b入れたとしてもさ
0284デフォルトの名無しさん
2008/04/12(土) 20:32:200285デフォルトの名無しさん
2008/04/12(土) 20:32:53読みやすさなら圧倒的に16進だろ
0bには別のメリットがあるに決まってるじゃん馬鹿なの?
0286デフォルトの名無しさん
2008/04/12(土) 20:33:16やりづらいことこの上なかったぞw
0287デフォルトの名無しさん
2008/04/12(土) 20:33:17本当に単純なんだね
0288デフォルトの名無しさん
2008/04/12(土) 20:33:36そんな意図はコメントやドキュメントに書くべきであって
リテラルの形式に勝手にそんな暗黙の約束を置く方がかえって保守性下がると思うんだが
0289デフォルトの名無しさん
2008/04/12(土) 20:34:540290デフォルトの名無しさん
2008/04/12(土) 20:35:29それはもちろんゆとりでも対応表を片手に一つずつ変換していけば読むこと自体は出来るに決まっていますから
今までの「読める」はすべて「読みやすい」の意味だと思って下さい
言葉が足りなくて申し訳ありませんでした
では改めて「16進のビットパターンを覚えられなくて0xを読みにくいゆとりのため」以外の理由を教えて下さい
0291デフォルトの名無しさん
2008/04/12(土) 20:35:33まさか意味も無く16進使ってるわけはないよな?
0292デフォルトの名無しさん
2008/04/12(土) 20:36:41Unixのchmodも10進数で書いちゃう人ですか?
0293デフォルトの名無しさん
2008/04/12(土) 20:38:17forが出てくれば繰り返しだとわかるけど
コード中に「0xAA」と「0b10101010」が説明なしに出てきて
一体どうやってプログラマの意図をくみ取ればいいんだ?
同じ数だぞ?
0294デフォルトの名無しさん
2008/04/12(土) 20:38:32あれは8進で書くべき。
2進が欲しいってのも似たような理由だな。
2進の方が分かりやすい所では2進が使えた方がいい。
0295デフォルトの名無しさん
2008/04/12(土) 20:39:59それ以上はかえって読みにくくなるし
読みやすさのためだけなら必要ないと思うんだけど
0296デフォルトの名無しさん
2008/04/12(土) 20:40:16例えば5ビットずつ情報を与えたい場合であれば、
0b11011_11101_01011 と書けた方がいいだろう。
0297デフォルトの名無しさん
2008/04/12(土) 20:40:52おおむね「ビットに意味のある数」が16進でそうじゃない数を10進で書くよな
さて、2進で書きたい数というのは多分「ビットに意味のある数」だろう
16進とどう使い分けるんだ?
0298デフォルトの名無しさん
2008/04/12(土) 20:41:220299デフォルトの名無しさん
2008/04/12(土) 20:42:18ビットオーダーが環境依存だからだっけ?
でもシフト演算子の << >> の方向にあわせて0bの記法をきめちゃってよさそうなのにな。
0300デフォルトの名無しさん
2008/04/12(土) 20:42:30これ_挟むの
0301デフォルトの名無しさん
2008/04/12(土) 20:44:220302デフォルトの名無しさん
2008/04/12(土) 20:44:540303デフォルトの名無しさん
2008/04/12(土) 20:45:41ビットオーダーって単なる値には特に関係ないんじゃないかと思うんだが。
つか、それ言い出すと16進数もやばいんじゃね?
0304デフォルトの名無しさん
2008/04/12(土) 20:46:26勝手にそんなもの入れられるようにして何が嬉しいんだ?
0305デフォルトの名無しさん
2008/04/12(土) 20:46:530306デフォルトの名無しさん
2008/04/12(土) 20:49:16とか書けるようになるんだろ
きめえ
0307デフォルトの名無しさん
2008/04/12(土) 20:54:260308デフォルトの名無しさん
2008/04/12(土) 20:56:11お前はマクロ引数の反省を全く学んでいないんだな
0309デフォルトの名無しさん
2008/04/12(土) 20:57:080310デフォルトの名無しさん
2008/04/12(土) 20:57:27おまえらの執着心には感心する。
0311デフォルトの名無しさん
2008/04/12(土) 21:01:14導入されても別に構わんだろ。
使いたくなきゃ使わなきゃいいんだし。
0312デフォルトの名無しさん
2008/04/12(土) 21:01:320313デフォルトの名無しさん
2008/04/12(土) 21:04:42そんなのはC++の標準団体に言えよ
とりあえずそんな消極的な理由じゃ話にならない
0314デフォルトの名無しさん
2008/04/12(土) 21:06:410315デフォルトの名無しさん
2008/04/12(土) 21:06:530316デフォルトの名無しさん
2008/04/12(土) 21:07:25でも、便利そうな状況はありそうな気がするから困る。
const char hoge[] = "abcdefg";
size_t btof = 0u11111;
とか。
0317デフォルトの名無しさん
2008/04/12(土) 21:07:520318デフォルトの名無しさん
2008/04/12(土) 21:14:30数えれば幾つかすぐ分かる
0319デフォルトの名無しさん
2008/04/12(土) 21:17:40unitary("11111"); /* == 5 */
0320デフォルトの名無しさん
2008/04/12(土) 21:18:360321デフォルトの名無しさん
2008/04/12(土) 21:18:48#define unitary(u) (sizeof #u - 1)
unitary(11111); /* == 5 */
0322デフォルトの名無しさん
2008/04/12(土) 21:23:460b入れたとしても中で2や3が使えることになってカオスになりそうだからいらない
0323デフォルトの名無しさん
2008/04/12(土) 21:25:360324デフォルトの名無しさん
2008/04/12(土) 21:26:17規格上はおkだったはず
0325デフォルトの名無しさん
2008/04/12(土) 21:34:450
octal-literal octal-digit
octal-digit:
0 1 2 3 4 5 6 7
と書いてあるが・・・。
0326デフォルトの名無しさん
2008/04/12(土) 21:36:29昔の話だったかもしれん。すまん
0327デフォルトの名無しさん
2008/04/12(土) 21:46:320328デフォルトの名無しさん
2008/04/13(日) 10:18:06そのへんルーズな処理系がいっぱいあってなゴホゴホ
0329デフォルトの名無しさん
2008/04/13(日) 16:44:180330デフォルトの名無しさん
2008/04/13(日) 17:25:44リテラル書くって、要するにマジックナンバー書くってことじゃん。
ダメ。
マクロなり変数なり関数なり、名前を付けてそれ使いなさい。
だから不要。
0331デフォルトの名無しさん
2008/04/13(日) 17:28:580332デフォルトの名無しさん
2008/04/13(日) 17:29:050333デフォルトの名無しさん
2008/04/13(日) 17:35:07複数ビットある場合は微妙かもしんないな。
0334デフォルトの名無しさん
2008/04/13(日) 17:44:01#define FLAG_HOGE 0x01
#define FLAG_FOO 0x02
#define FLAG_BAR 0x04
...
if(flg & (FLAG_FOO || FLAG_BAR)){
...
}
これが「#define FLAG_BAR 0b00000100」になったからって読みやすいとはとても思えないし
「if(flg & 0b00000110)」なんてのを書くようなら0b関係なく論外(「if(flg & 0x06)」だとしても同じこと)
0335デフォルトの名無しさん
2008/04/13(日) 17:46:550336デフォルトの名無しさん
2008/04/13(日) 17:46:590337デフォルトの名無しさん
2008/04/13(日) 17:48:50想像力がありすぎる女子中学生好きのスレ
0338デフォルトの名無しさん
2008/04/13(日) 17:52:090339デフォルトの名無しさん
2008/04/13(日) 17:53:22if(flg & 0b100100001101)って書ければ便利じゃん?0x90dって書くよりわかりやすいじゃんじゃん???」
ってのが0b厨の希望ということですね
規格に意見する前にもっとましなプログラミングスタイルを勉強した方がいいと思いますよ
0340デフォルトの名無しさん
2008/04/13(日) 18:02:14相手より先に自分が興奮してると馬鹿にしか見えないですよ。
0341デフォルトの名無しさん
2008/04/13(日) 18:10:57お子ちゃまがいますね
0342デフォルトの名無しさん
2008/04/13(日) 18:12:170343デフォルトの名無しさん
2008/04/13(日) 18:12:590344デフォルトの名無しさん
2008/04/13(日) 18:16:54だったら入れるだけ入れて、使うかどうかは実装者に任せるのが
今までのC++のスタンスとして正しい
0345デフォルトの名無しさん
2008/04/13(日) 18:34:27typeof(T+U) add(T, U)(t t, U u);
Dだとこうかな。TやUがstaticなopAddのオーバーロードを持ってると上手く動かないけど。
0346デフォルトの名無しさん
2008/04/13(日) 18:38:580347デフォルトの名無しさん
2008/04/13(日) 19:06:18入れろって言ってるやつが16進数表記では自分は読めないって以外の理由を
いまだ示せていないし
0348デフォルトの名無しさん
2008/04/13(日) 19:15:290349デフォルトの名無しさん
2008/04/13(日) 19:15:32読める読めないが論点だと言うのなら、10進数表記以外に16進数表記が必要な理由でも説明してみろ
0350デフォルトの名無しさん
2008/04/13(日) 19:18:000351デフォルトの名無しさん
2008/04/13(日) 19:18:54それがいらないって奴はBrainfuckでも使ってろ
0bが入ったって少なくとも可読性が下がることはない
だったら入れるべき
0352デフォルトの名無しさん
2008/04/13(日) 19:19:43ありません。
16進数表記を必要としている人は、10進数を脳内で16進数変換できない頭の悪い人だけです。
だから俺は要りませんよ、16進数。
0353デフォルトの名無しさん
2008/04/13(日) 19:19:54そのコンピュータを低レベルで扱おうとしたとき16進数で書けた方が
人間にとって読んだり書いたりしやすくなる
0354デフォルトの名無しさん
2008/04/13(日) 19:20:4516進数表記はビット演算のためです
そして2進数表記も入るとすればビット演算のためです
同じ機能は2つもいりません
0355デフォルトの名無しさん
2008/04/13(日) 19:21:0216進数と2進数はできるけど
0356デフォルトの名無しさん
2008/04/13(日) 19:21:530357デフォルトの名無しさん
2008/04/13(日) 19:24:10なんか恐ろしく単純な人みたいだし
0358デフォルトの名無しさん
2008/04/13(日) 19:25:210359デフォルトの名無しさん
2008/04/13(日) 19:25:42単項の - があるんだから、二項の - は廃止したほうが良いだろうね。
そのほうがシンプルになるだろう。
0360デフォルトの名無しさん
2008/04/13(日) 19:26:260361デフォルトの名無しさん
2008/04/13(日) 19:26:35p[i] もいらね。*(p+i) だけでいい。
0362デフォルトの名無しさん
2008/04/13(日) 19:26:530bが要らないって言ってるやつは単純な二元論者だから、シンプルな人生が歩めるだろうね
0363デフォルトの名無しさん
2008/04/13(日) 19:27:062進と16進は(2進の)4桁ごとに変換が閉じるから楽ちん
こうですかわかりません
0364デフォルトの名無しさん
2008/04/13(日) 19:27:550365デフォルトの名無しさん
2008/04/13(日) 19:28:07そろそろ専用スレでも建てようか?
0366デフォルトの名無しさん
2008/04/13(日) 19:28:400367デフォルトの名無しさん
2008/04/13(日) 19:28:44p[i]はマジで害悪にしかなってないからなくなった方がいいと実際思ってる
まるでCに配列が存在するかのような幻想を初心者に与えて混乱させる元凶になってるだけ
0368デフォルトの名無しさん
2008/04/13(日) 19:28:590369デフォルトの名無しさん
2008/04/13(日) 19:29:420370デフォルトの名無しさん
2008/04/13(日) 19:29:53バカすぎる・・・
0371デフォルトの名無しさん
2008/04/13(日) 19:30:460372デフォルトの名無しさん
2008/04/13(日) 19:31:170373デフォルトの名無しさん
2008/04/13(日) 19:31:550374デフォルトの名無しさん
2008/04/13(日) 19:32:020375デフォルトの名無しさん
2008/04/13(日) 19:32:07定数を定義するする地点で使うことに問題は無いと何度言えばいいのだろうか。
0376デフォルトの名無しさん
2008/04/13(日) 19:32:39何の機能もない表現をプログラム本文中に入れるのは問題だと思う
本文中の記号はプログラムの動作に何かをもたらすものでなければいけない
(使われ方次第では無意味になることもあるとしても)
0377デフォルトの名無しさん
2008/04/13(日) 19:33:36それで読みづらくなるんだったら意味が無い。ただのバカだな。
0378デフォルトの名無しさん
2008/04/13(日) 19:33:53おまえ、改行と空白を敵に回したな
0379デフォルトの名無しさん
2008/04/13(日) 19:34:100380デフォルトの名無しさん
2008/04/13(日) 19:35:27何の意味もない記号なんてものが(コメント以外に)ある方がよほど読みづらいわ
0381デフォルトの名無しさん
2008/04/13(日) 19:35:50そろそろ苦しいから諦めろ。
0382デフォルトの名無しさん
2008/04/13(日) 19:36:01トークンを区切るという立派な仕事があるじゃないか
0bの中のアンダースコアはそれすらないんだぞ
0383デフォルトの名無しさん
2008/04/13(日) 19:36:12ぜひ作ってくれ。
全てのトークンがプログラムの動作に影響を与える言語。
0384デフォルトの名無しさん
2008/04/13(日) 19:36:260385デフォルトの名無しさん
2008/04/13(日) 19:36:37Dでそれが問題になってるという話は聞かない。
ただの妄想に過ぎないな。
0386デフォルトの名無しさん
2008/04/13(日) 19:39:04C++は全てのコメント以外のトークンがプログラムの動作に影響を与えうる(もちろん与えないこともある)言語ですよ
0bの_は「絶対に」プログラムの動作に影響を与えない
0bXYと0bX_Yが違う意味を持つということはいかなる文脈でも絶対にない
無意味だと思わないか
0387デフォルトの名無しさん
2008/04/13(日) 19:39:41こんなの使う必要ないと思うんだけど
0388デフォルトの名無しさん
2008/04/13(日) 19:40:30別に?
0389デフォルトの名無しさん
2008/04/13(日) 19:40:50自明的にトークンを構成する文字の前後に冗長な空白を入れるのは禁止したほうが良いですね
0390デフォルトの名無しさん
2008/04/13(日) 19:42:16「違う意味を持つということはいかなる文脈でも絶対にない」トークン列なんて無数に考えつくけど
0391デフォルトの名無しさん
2008/04/13(日) 19:44:22全部英小文字のみにしろということか。
0392デフォルトの名無しさん
2008/04/13(日) 19:44:34ソースを見ただけでどんなアイコンか見当付きやすいってことくらいかな
他になんかある?
0393デフォルトの名無しさん
2008/04/13(日) 19:45:09いやいや、そりゃあるだろうよ
でもそのトークン列で使われている記号はどれも、別のトークン列の中でなら区別に貢献する可能性があるわけだ
0bの中の_という記号は、それがどんな数値定数の中でも区別に寄与しない
機能自体が全く無意味なんだよ
あるトークンの中で無意味というのとは次元が違う
0394デフォルトの名無しさん
2008/04/13(日) 19:47:22トークン間(空白等)は良くて、トークン内は許せないとする論拠は?
0395デフォルトの名無しさん
2008/04/13(日) 19:47:40さっさと言え。
0396デフォルトの名無しさん
2008/04/13(日) 19:47:49D言語と同じようにするならその問題はない。
0397デフォルトの名無しさん
2008/04/13(日) 19:49:48プログラムの見た目は非常に重要な要素だということを
言語レベルで認定しているようなもんなんだがな。
0398デフォルトの名無しさん
2008/04/13(日) 19:52:17トークン間の空白はあるとないとで全く意味が変わる可能性があるじゃないか
ab /*「ab」という識別子*/
a b /*「a」と「b」という2つの識別子*/
_はあってもなくても絶対に何も変わらない
0b11 /* 10進数で3という数 */
0b1_1 /* これも10進数で3という数 */
0b____1___1_________ /* どう入れてみた所で3という数は変わりはしない */
_によって意味が変わることはどんなプログラムにおいても存在しない
だから無意味なんだ
0399デフォルトの名無しさん
2008/04/13(日) 19:53:35abとa_bとa__bは違う識別子です
0b11と0b1_1と0b1__1は全く同じ意味です
0400デフォルトの名無しさん
2008/04/13(日) 19:53:36int a_b = 0;
int a_b = 0;
意味は変わらないな。
0401デフォルトの名無しさん
2008/04/13(日) 19:54:07何故無意味か説明できていない。
早く説明してくれ。
0402デフォルトの名無しさん
2008/04/13(日) 19:55:350bの中の_にプログラム的に意味がある場合がもしあるなら教えて下さい
0403デフォルトの名無しさん
2008/04/13(日) 19:55:40空白だって連続している場所では意味を持たない、そうでない場所では意味を持つ
'_' だって数値リテラルの中では意味を持たない、そうでない場所では意味を持つ(識別子等)
さほど大きな違いがあるようには思えないのだが。
0404デフォルトの名無しさん
2008/04/13(日) 19:56:46動作に違いが無いこととその存在が無意味であることには乖離がある。
なぜなら、プログラムはコンパイラだけが読むものではないからだ。
0405デフォルトの名無しさん
2008/04/13(日) 19:57:28特定の文脈(この場合は0bの後)でのみ意味を持たないってだけでは?
0406デフォルトの名無しさん
2008/04/13(日) 19:57:55398の説明で理解してもらえないとすれば
プログラム中の記号に「意味がある」というのはどういうことなのか
あなたの考えを聞かせていただきたい
可読性とか動作に関係ないことは除いてね
0407デフォルトの名無しさん
2008/04/13(日) 19:58:40たいそう汚いんだろうな。
0408デフォルトの名無しさん
2008/04/13(日) 19:59:510b001_110_011 なんてやるより
(AAA | BBB | CCC) とかのほうが分かりやすいと思うんだけど
0409デフォルトの名無しさん
2008/04/13(日) 20:00:42場合によるのでは?
極端なケースは上で出てきたアイコンのデザインとか。
0410デフォルトの名無しさん
2008/04/13(日) 20:01:42Dでは2進数に限らず _ を入れられるわけで、
長い10進数に区切りを入れるのもアリだ。
0411デフォルトの名無しさん
2008/04/13(日) 20:02:30お前プロジェクトで人の話聞かないで周りに色々迷惑かけてそうだな
>>376から続いてる話なのにどうして「可読性に意味が無い」なんて馬鹿な読み方が出来るんだ?
0412デフォルトの名無しさん
2008/04/13(日) 20:02:46おまえらって奴は
0413デフォルトの名無しさん
2008/04/13(日) 20:03:300414デフォルトの名無しさん
2008/04/13(日) 20:04:44ムズカシイ話はワカラナイもん
0415デフォルトの名無しさん
2008/04/13(日) 20:04:57そういや、お金の計算だと三桁ごとにカンマを入れるなぁ。
カンマの代わりに"_"を入れることができると。
int yen = 100_000_000;
0416デフォルトの名無しさん
2008/04/13(日) 20:05:26確かにそう言われてしまうとそうなんだが
識別子中の_とリテラル中の_というのは全く別の扱いになる機能で
一方は全く無意味というのはどうなのかと
0417デフォルトの名無しさん
2008/04/13(日) 20:05:43普段はどんな話してるのか知らない
0418デフォルトの名無しさん
2008/04/13(日) 20:06:25__1とかって識別子になったっけ
0419デフォルトの名無しさん
2008/04/13(日) 20:06:48途中にしか入れられないようにすれば問題ない。
0420デフォルトの名無しさん
2008/04/13(日) 20:09:45・・・ゴクリ。
0421デフォルトの名無しさん
2008/04/13(日) 20:14:090422デフォルトの名無しさん
2008/04/13(日) 20:16:000423デフォルトの名無しさん
2008/04/13(日) 20:26:430424デフォルトの名無しさん
2008/04/13(日) 20:33:18マシン語のシンタックスシュガーみたいなもんだからな。
あくまでみたいなもんだけど。
0425デフォルトの名無しさん
2008/04/13(日) 20:36:17美少女中学生の話も食い付き悪くてさみしい
0426デフォルトの名無しさん
2008/04/13(日) 20:58:020427デフォルトの名無しさん
2008/04/13(日) 21:19:59そんなオバサンの話されても。
0428デフォルトの名無しさん
2008/04/13(日) 21:29:25パーツのどこそこに意味があるだのないだのとあげつらってみても
それらが集合して美少女中学生を構成しない限り意味を成すことはない
美少女中学生の一部分だけ見つづけると観察者はゲシュタルト崩壊を起こす
0b論も同じこと
いくら論じてもこの美少女中学生の現時点の美少女っぷりにはなんの影響も与えない
繰り返す
構成された美少女中学生そのものが意味なのだ
0429デフォルトの名無しさん
2008/04/13(日) 22:04:510430デフォルトの名無しさん
2008/04/13(日) 23:08:55#include <boost/static_assert.hpp>
template<unsigned int v, unsigned int n> struct binary_i{
private:
BOOST_STATIC_ASSERT((n % 10) <= 1);
public:
enum{ value = (n % 10) + (binary_i<v, n / 10>::value) * 2 };
};
template<unsigned int a> struct binary_i<a, 0>{
enum{ value = 0 };
};
template<unsigned int v> struct binary{
enum{ value = binary_i<v, v>::value };
};
std::cout << binary<1001110101>::value << std::endl;
0431デフォルトの名無しさん
2008/04/13(日) 23:13:32もっといいマクロならそこら辺に落ちてる。
0432デフォルトの名無しさん
2008/04/13(日) 23:16:570433デフォルトの名無しさん
2008/04/13(日) 23:18:040434デフォルトの名無しさん
2008/04/13(日) 23:22:480435デフォルトの名無しさん
2008/04/14(月) 00:31:21C++0x的に考えて
0436デフォルトの名無しさん
2008/04/14(月) 00:39:070437デフォルトの名無しさん
2008/04/14(月) 00:39:51#define BOOST_STATIC_ASSERT_EXPR(b) ((void)(char(*)[(b) ? 1 : -1])0)
くらい用意してくれないと constexpr で困る。
・・・って、constexpr の引数って静的な値として認識されるんだよね?
0438デフォルトの名無しさん
2008/04/14(月) 01:03:38式版の有る無しで何が変わるの?
キャストやカンマ演算子は定数式にはなれなかったような気がするし、
静的な式なら評価タイミングも関係ないし、あんまり意味が無いような。
0439デフォルトの名無しさん
2008/04/14(月) 04:35:030440デフォルトの名無しさん
2008/04/14(月) 06:56:57じゃあ constexpr の引数をチェックできないの?
0441デフォルトの名無しさん
2008/04/14(月) 10:27:41メタ関数書けば?
外向きに一段 constexpr 関数かませば使いやすくはなるかも。
0442デフォルトの名無しさん
2008/04/14(月) 10:44:572進数を128桁も書きたいというお前がマレw
0443デフォルトの名無しさん
2008/04/14(月) 13:28:45具体的にどういうコードが書きたいのかもうちょっとkwsk
0444デフォルトの名無しさん
2008/04/14(月) 19:18:59#define TOHEX(n) (STATIC_ASSERT_EXPR(sizeof #n <= 9), 0x##n)
みたいなことをやってんだけど、
まあこれはそのまあ constexpr にするわけにゃいかんが、
constexpr の引数を静的にチェックしたいと思ってね。
typedef が constexpr の中に入れれるなら別に
BOOST_STATIC_ASSERT を使えばいいんだけど、どうだっけ?
無理なら return STATIC_ASSERT_EXPR(hoge < 10), hoge; みたいなことができれば
面白いなあと思ってね。
0445デフォルトの名無しさん
2008/04/14(月) 22:37:44http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf
が採用されたらさらに一般化されて解決されるんじゃないの?
誰も上で話に出してなかったけど ...
0446デフォルトの名無しさん
2008/04/14(月) 22:42:09つうか0bの話ししてる奴の大半はドラフトなんか読んでないんじゃね
0447デフォルトの名無しさん
2008/04/14(月) 23:38:21キモイ記法になるから組み込みにして欲しいって話だと思ってた。
0448デフォルトの名無しさん
2008/04/15(火) 00:21:30>>259を忘れないで。
たぶんこれのことだよね?
0449デフォルトの名無しさん
2008/04/15(火) 00:49:320450デフォルトの名無しさん
2008/04/15(火) 01:23:020451デフォルトの名無しさん
2008/04/15(火) 01:23:260452デフォルトの名無しさん
2008/04/15(火) 03:11:100bは無理なので厨はお気に召さないだろう
0453デフォルトの名無しさん
2008/04/15(火) 07:23:280454デフォルトの名無しさん
2008/04/15(火) 07:29:49#define b00 0
#define b000 0
// ... 一つの数値に128通りの#define
// = 2^129個の#define
0455445
2008/04/15(火) 09:59:34でも constexpr って今の定義だとそんなに中にいろいろ書けないんじゃ?
0456デフォルトの名無しさん
2008/04/15(火) 18:47:230457デフォルトの名無しさん
2008/04/15(火) 18:47:450458デフォルトの名無しさん
2008/04/15(火) 22:59:46suffix しか無理ながら,とりあえず constexpr リテラル化はできるような?
>>259 みたいに for 文を使用 (して,かつ constexpr 化) することは
現在の提案ではできないみたいですけれど
0459デフォルトの名無しさん
2008/04/16(水) 00:27:150460デフォルトの名無しさん
2008/04/16(水) 03:32:48return (value % 10 != 0) | ((value / 10 % 10 != 0) << 1) | ...;
}
このくらいならできるのか?
0461デフォルトの名無しさん
2008/04/16(水) 07:28:120462デフォルトの名無しさん
2008/04/16(水) 07:36:040463デフォルトの名無しさん
2008/04/16(水) 11:24:41いかんせん以下をコンパイルして確認できる環境が存在しないので
間違いがある可能性が高いです.
template<char C>
unsigned long long binaryDigitToNum();
constexpr unsigned long long binaryDigitToNum<'0'>(){ return 0; }
constexpr unsigned long long binaryDigitToNum<'1'>(){ return 1; }
template<unsigned long long I, char C, char... TAIL>
constexpr unsigned long long binaryLiteralImpl()
{ return binaryLiteralImpl<I << 1 + binaryDigitToNum<C>(), TAIL>(); }
template<unsigned long long I, char C>
constexpr unsigned long long binaryLiteralImpl()
{ return I << 1 + binaryDigitToNum<C>(); }
template<char C, char... TAIL>
constexpr unsigned long long operator "b" ()
{ return binaryLiteralImpl<0, C, TAIL>(); }
普通の raw-form literal operator だと, '0', '1' 以外が来たときに
compile-time error を吐かせる方法がいまいちピンと来なかったので
variadic template form を使いました.
0464デフォルトの名無しさん
2008/04/16(水) 12:22:300465デフォルトの名無しさん
2008/04/16(水) 19:32:220466デフォルトの名無しさん
2008/04/16(水) 21:30:210467デフォルトの名無しさん
2008/04/16(水) 22:31:320468デフォルトの名無しさん
2008/04/16(水) 23:03:570469デフォルトの名無しさん
2008/04/20(日) 05:34:540470デフォルトの名無しさん
2008/04/20(日) 10:36:220bで馬鹿らしくなって>>257くらいしか書き込んでないw
0471デフォルトの名無しさん
2008/04/20(日) 10:53:040472デフォルトの名無しさん
2008/04/20(日) 12:20:100473デフォルトの名無しさん
2008/04/20(日) 12:22:390474デフォルトの名無しさん
2008/04/21(月) 01:15:32読まなければ良いのでは?
0475デフォルトの名無しさん
2008/04/21(月) 01:22:220476デフォルトの名無しさん
2008/04/21(月) 01:31:120477デフォルトの名無しさん
2008/04/23(水) 08:11:490478デフォルトの名無しさん
2008/04/23(水) 08:33:530479デフォルトの名無しさん
2008/04/23(水) 12:15:450480デフォルトの名無しさん
2008/04/23(水) 18:33:010481デフォルトの名無しさん
2008/04/23(水) 18:35:180482デフォルトの名無しさん
2008/04/26(土) 22:18:03美少女中学生について語ってはならないとは
スレタイにもテンプレにも書いてないんだが
# 個人的には平面の方が好きなんだけどな
0483デフォルトの名無しさん
2008/04/26(土) 23:25:12まあ2次元とも決まっていないがな。
#ん、C++タンの出番だな。
0484デフォルトの名無しさん
2008/04/26(土) 23:27:23新しい関数宣言方法(ラムダ式と同じ形にする案)
[]foo(int x) -> int { return x; }
0485デフォルトの名無しさん
2008/04/26(土) 23:30:30lambda とかいうヘッダファイルを用意して。
#define labmda []
foo(lambda foo(int x) -> int { return x; });
0486デフォルトの名無しさん
2008/04/26(土) 23:33:190487デフォルトの名無しさん
2008/04/27(日) 00:49:500488デフォルトの名無しさん
2008/04/27(日) 03:30:500489デフォルトの名無しさん
2008/04/27(日) 03:33:59そこはしゃーないと思う。
でも、C99 の #define bool _Bool みたいに
互換性を保ちつつキーワードを導入するテクはもっと使ってもいいと思う。
0490デフォルトの名無しさん
2008/04/27(日) 03:48:53大勝利ですね!
0491デフォルトの名無しさん
2008/04/27(日) 04:06:370492デフォルトの名無しさん
2008/04/28(月) 11:12:49->を使うんだろ。
コロンじゃだめだったのかな。
たとえば、普通の関数も統一しようぜっていうN2582も、
こんな風に書けるのに。
[] func() : int
{
return 0 ;
}
0493デフォルトの名無しさん
2008/04/28(月) 11:35:23は無理だったっけ ...
0494デフォルトの名無しさん
2008/04/28(月) 11:44:20見た目が違うだけじゃんw
0495デフォルトの名無しさん
2008/04/28(月) 13:33:02{
//...
}
0496デフォルトの名無しさん
2008/04/28(月) 18:35:05コロンはコンストラクタの初期化子と競合しそうだな。
0497デフォルトの名無しさん
2008/04/28(月) 18:38:20文法的な紛らわしさに関してはまああるかもしれないが。
0498デフォルトの名無しさん
2008/04/28(月) 18:46:28いやだなぁ
0499デフォルトの名無しさん
2008/04/28(月) 19:30:15だったか。ECMAScript4は文法キモすぎて見たくもない。
いつのまにかコンストラクタの初期化子まで採用してるし。
0500デフォルトの名無しさん
2008/04/28(月) 19:35:51function func.<T>() : T { return new T(); }
0501デフォルトの名無しさん
2008/04/28(月) 20:35:430502デフォルトの名無しさん
2008/04/28(月) 20:42:16Haskellかよ
0503デフォルトの名無しさん
2008/04/28(月) 21:04:22http://pc11.2ch.net/test/read.cgi/tech/1205156417/
Scala違いだ移動しる・・
0504デフォルトの名無しさん
2008/04/28(月) 22:49:10コンフリクトはないはずだ
[] func() return int
{
return 0 ;
}
0505デフォルトの名無しさん
2008/04/28(月) 22:50:510506デフォルトの名無しさん
2008/04/28(月) 22:52:000507デフォルトの名無しさん
2008/04/28(月) 22:53:18コピペのためか?
0508デフォルトの名無しさん
2008/04/28(月) 22:56:04->でいいんじゃないの?
0509デフォルトの名無しさん
2008/04/28(月) 22:58:39C系言語的には->は昔からずっと間接参照演算子だ
0510デフォルトの名無しさん
2008/04/28(月) 23:13:550511デフォルトの名無しさん
2008/04/28(月) 23:26:17それ、俺も思っていたんだけど、
C++の文法としては、何か違和感あるよね。
ところで、@と$がC++の規格にないのは、何か理由があるの?
0512デフォルトの名無しさん
2008/04/28(月) 23:30:21どんな不都合があったの?
0513デフォルトの名無しさん
2008/04/28(月) 23:50:130514デフォルトの名無しさん
2008/04/28(月) 23:53:10(charからcharへの関数)を引数に取り(intからintへの関数)を返す関数
を引数に取り(charからintへの関数)を返す関数の型を、
C++03(「関数」は「関数へのポインタ」とする)とC++0xで書いてみてくれ。
0515デフォルトの名無しさん
2008/04/28(月) 23:58:270516デフォルトの名無しさん
2008/04/29(火) 00:10:240517デフォルトの名無しさん
2008/04/29(火) 00:11:59多少醜くなってもいいじゃん
0518デフォルトの名無しさん
2008/04/29(火) 00:14:30いいこと言うなあ。君のそのレスで俺の気持ちは吹っ切れたよ。
0519デフォルトの名無しさん
2008/04/29(火) 00:19:470520デフォルトの名無しさん
2008/04/29(火) 02:22:09typedef int (*itoi_t)(int);
typedef int (*itoc_t)(char);
typedef itoi_t (*ctoc_to_itoi_t)(ctoc_t);
typedef itoc_t (*answer_t)(ctoc_to_itoi_t);
こんな型何に使うかは知らんが、使うとしたら
きっと近くでitoc_t型やctoc_to_itoi_t型の変数も必要になるだろ
ならそんなキモい書き方しないで必要なものをtypedefで作るべき
0521デフォルトの名無しさん
2008/04/29(火) 06:35:410522デフォルトの名無しさん
2008/04/29(火) 07:06:50これは従来のアナルっぽい記法よりは読みやすいな
0523デフォルトの名無しさん
2008/04/29(火) 07:15:37いまさらtrigraphやdigraphの要るような記号追加するのもねえ…ってことじゃないかと予想
0524デフォルトの名無しさん
2008/04/29(火) 07:38:26そういう理由なのかなぁ。
しかし、trigraphやdigraphって廃止しても、それほど互換性の問題も無いんじゃないかなとおもったりするんだけど。
西側の、なまじ7bitで全種類の文字を表せちゃったので、悲惨なことになっている連中も、
結局使ってないみたいだし。
0525デフォルトの名無しさん
2008/04/29(火) 09:39:20まずそんなものを書く状況自体が無いな。
あっても >>519 も読みづらいから typedef 使うわ。
0526デフォルトの名無しさん
2008/04/29(火) 11:51:290527デフォルトの名無しさん
2008/04/29(火) 11:53:44template メタプログラミングがかなり出来なくなる気が ...
0528デフォルトの名無しさん
2008/04/29(火) 11:58:25decltype と auto を駆使することになる
0529デフォルトの名無しさん
2008/04/29(火) 18:05:210530デフォルトの名無しさん
2008/04/29(火) 19:02:480531デフォルトの名無しさん
2008/04/29(火) 19:46:540532デフォルトの名無しさん
2008/04/29(火) 19:51:440533デフォルトの名無しさん
2008/04/29(火) 20:12:56ネイティブディレクティブとか作ろうよ
0534デフォルトの名無しさん
2008/04/29(火) 20:36:050535デフォルトの名無しさん
2008/04/29(火) 21:37:43初期化指定子で初期化指定が完了するのは美しいと思わんか
0536デフォルトの名無しさん
2008/04/29(火) 21:54:12ヒープ領域って誰が管理してくれるんだ?
ラムダ返されて、それ引数に関数呼び出して
関数の中でグローバルに束縛されて... ... ...
でも, らむだはデストラクションしないとまずいんだろ?
0537デフォルトの名無しさん
2008/04/29(火) 22:07:150538デフォルトの名無しさん
2008/04/29(火) 22:17:48例えば C# の場合、ローカル変数を参照するようなラムダ式書くと、
クラスが自動生成されて、ローカル変数参照がメンバ参照に置き換わるんだけど、
そういう状態になった場合、デストラクタはどこで呼ばれるの?
ローカルスコープ内でしか使わないラムダ式ならいいけど、
例えば、「ラムダ式を返す関数」みたいなの作っちゃった場合。
0539デフォルトの名無しさん
2008/04/29(火) 22:21:56クラッシュしても自業自得で済まされる話
C++はプログラマを全面的に信頼する言語ですよ
0540デフォルトの名無しさん
2008/04/29(火) 22:24:33あんまマジにシンタックス見てないんであれなんだが
こんな感じの関数書くとするやん?
f(x, y) {
return [copy x]lambda(y){+ x; ...}
}
この場合, x はスタックじゃなくてヒープに取るしかないと思うんだ
で,
g(f(1), f(2)...)
とかな感じで, 呼び出したら?
f が返す関数に束縛されてる x がコピーされた領域は誰が回収するんだろ?
と、思った
0541デフォルトの名無しさん
2008/04/29(火) 23:01:43スタックじゃないの?
0542デフォルトの名無しさん
2008/04/29(火) 23:04:430543デフォルトの名無しさん
2008/04/29(火) 23:08:10はないの?よくわからんけど
0544デフォルトの名無しさん
2008/04/29(火) 23:23:24なので、単なる一時オブジェクトとして生成されると思う
0545デフォルトの名無しさん
2008/04/29(火) 23:24:34何かエセっぽいな。
0546デフォルトの名無しさん
2008/04/29(火) 23:28:110547デフォルトの名無しさん
2008/04/29(火) 23:30:370548デフォルトの名無しさん
2008/04/29(火) 23:31:35関数オブジェクトと同じ
でも、戻り値の型を特定できないかも、新シンタックスで可能?
0549デフォルトの名無しさん
2008/04/29(火) 23:33:070550デフォルトの名無しさん
2008/04/29(火) 23:33:48となると、>>543 みたいな、ラムダ式をヒープに取るような構文が必要じゃない?
(スマートポインタ使うにしても、まずはただのポインタが要るし。)
それか、ラムダ式から生成される関数オブジェクトが
適切な operator = を実装しててくれるなら別にどうでもいいことなのかな。
0551デフォルトの名無しさん
2008/04/29(火) 23:37:49あっても困らないけど、なくても良いと思う
ポリモーフィズムは必要ないし、必要なら従来の関数オブジェクトがあるし
0552デフォルトの名無しさん
2008/04/30(水) 00:13:58本物のC++プログラマはコンパイル時に解決する。
コンパイラでできなければ、プリプロセッサでやる。
プリプロセッサでできなければ、それはやる価値が無いのだ。
0553デフォルトの名無しさん
2008/04/30(水) 00:16:030554デフォルトの名無しさん
2008/04/30(水) 00:30:050555デフォルトの名無しさん
2008/04/30(水) 00:36:14「本物のプログラマはJavaを使わない」
あたりかな
0556デフォルトの名無しさん
2008/04/30(水) 00:36:39流石に本物のプログラマとは言えないな。
0557デフォルトの名無しさん
2008/04/30(水) 00:45:500558デフォルトの名無しさん
2008/04/30(水) 01:03:02間違いなく言語と環境をごっちゃにした反論が帰ってきそうなタイトルだなw
0559デフォルトの名無しさん
2008/05/04(日) 00:38:19一番楽しみなのに
0560デフォルトの名無しさん
2008/05/04(日) 00:39:070561デフォルトの名無しさん
2008/05/05(月) 18:01:34Unordered associativeコンテナの、bucket関連のメンバってなんに使うの?
規格読んだだけだと、どうもよくわからないんだけど。
あるキーがどのbucketに属するかのインデックスを返されたとしても、
実際のbucket単位に直接アクセスする方法って無いよね?
普通に要素へのイテレータしかないみたいだし。
そのどのbucketに入れられているかってことが分かって、ライブラリを使う側の人間にとって、何がうれしいの?
0562デフォルトの名無しさん
2008/05/05(月) 19:14:44begin(i),end(i) で local_iterator を取得できたような。
ハッシュの分散結果をどう使うかってことなので、カスタムハッシュ関数次第
じゃないか? まあ通常はあまり使わないかも
0563デフォルトの名無しさん
2008/05/05(月) 19:23:03調査するためじゃねえの
0564デフォルトの名無しさん
2008/05/05(月) 19:27:20詳しいドキュメント読んでないから分からんけど、たぶん同一 hash 値だったら
同一の bucket に入ることが保証されるはずだから、次のような使い方ができる。
次の問題を考える:
二次元平面上の点が大量に与えられる。これを前処理して
新たな点 p が与えられたときに p に最も近い点を求めよ。
こんなときに、最初の二次元平面上の点に対して、ハッシュ関数を
(x座標値/1000)×(y座標値/1000) なんかに設定したコンテナを用意すると
元のデータが結構ばらけていたら、「同一 bucket 内に入るデータを全部調べる」
みたいなアルゴリズムで結構効率的に解ける。
0565デフォルトの名無しさん
2008/05/05(月) 19:59:380566デフォルトの名無しさん
2008/05/05(月) 20:46:02本当だ。
引数を取るb.begin(b), b.end(b)があったのか。
local_iteratorは、あるbucket内の要素のイテレータとは。
しかし、>>564には疑問だな。
例えば、その点pのハッシュ値が、ちょうどbucket単位の境にあった場合、
点pに最も近い点は、別のbucketに入るんじゃない?
すると、隣接するbucketも調べないといけないよね?
少なくとも二つ、大抵の場合は三つ。
それに、規格にあるのは、
>Keys with the same hash code appear in the same bucket.
だけで、似たようなハッシュ値が同じbucketに入るとは規定してないし。
隣接するbucketに入るとも規定されてないよね。
あくまでハッシュという名称を使っているだけで、実装じゃないし。
0567デフォルトの名無しさん
2008/05/05(月) 21:01:51(x/1000)*(y/1000) と ((x+500)/1000)*((y+500)/1000) みたいな
0568564
2008/05/05(月) 21:33:30bucket の番号を用いる例のためだけに、アルゴリズムの細かなことを書くのは
面倒だったから、本当に方針だけを書いたつもりなんだけどなあ。
まず、点を含む領域以外も見ないといけないのはそのとおりで、
ちゃんとやるには、点を含む領域から近い順に探索することになる。
(それまでに見つけた最も近い点までの距離を覚えておき、
見る必要のある領域を限定していく)
見る領域に対応する bucket の番号は、領域の座標値が分かっているのだから
領域座標 → ハッシュ を計算してやった後に ハッシュ → bucket 番号と取得する。
このとき、隣接領域で bucket 番号が隣接している必要はない。
詳しいことは、適当な計算幾何学の本を読んで欲しいところ。
こういうのはバケット法などの名前で知られている割と標準的な技法。
0569デフォルトの名無しさん
2008/05/05(月) 21:36:55進みが遅いと思う
0570デフォルトの名無しさん
2008/05/05(月) 21:40:38いや、だから規格では、同じハッシュ値のキーが同じbucketに入ってるって事ぐらいしか、
規定されてないような気がするんだけど。
似たようなハッシュ値が同じ、あるいは近いオフセットのbucketに入っているかもしれないとは書いてない。
そりゃ、大抵の実装はそうなるだろうけど。
0571デフォルトの名無しさん
2008/05/05(月) 21:40:590572デフォルトの名無しさん
2008/05/05(月) 22:01:44http://cpplover.blogspot.com/2008/05/c0xunordered.html
0573デフォルトの名無しさん
2008/05/05(月) 22:05:07似たような点を同じハッシュにするって話じゃないの?
0574564
2008/05/05(月) 22:10:03なんで似たようなハッシュ値が近いbucketに入る必要があると思うの?
そういう必要は無いですよ、と588で
> このとき、隣接領域で bucket 番号が隣接している必要はない。
と明記したつもりなんだけどなあ。
具体例で説明すると、たとえば 1000×1000 のメッシュに切って、
(x/1000)×(y/1000) % 100 をハッシュ関数として設定したとしよう。
ここに (10000,10000) の点 p が与えられたとしよう。
この点を含む領域に対応するハッシュ関数値は (10×10) % 100 = 0 だから、
ハッシュ関数値 0 に対応する bucket を持ってくればいい。
(点 p に対して bucket(p) を実行することが、この操作に対応する)
次に、この点を含む領域の左側の領域を調べることにしよう。
左側の領域の座標に対応するハッシュ関数値は (9×10) % 100 = 90
だから、ハッシュ関数値 90 に対応する bucket を持ってくればいい。
(p を左に 1000 だけ平行移動した点 q に対して
bucket(q) を実行することがこの操作に対応する)
0575デフォルトの名無しさん
2008/05/05(月) 22:34:130576デフォルトの名無しさん
2008/05/05(月) 22:41:03関係ねーだろ10000回染んで来い
0577デフォルトの名無しさん
2008/05/05(月) 23:41:500578デフォルトの名無しさん
2008/05/06(火) 00:17:58つうか、一体何が疑問なんだ
同じハッシュ値のキーが同じbucketに入ってるって事が規定されてりゃ十分だろう
同じハッシュ値になるようにハッシュ関数を作れば同じbucketに分類されるんだから
0579デフォルトの名無しさん
2008/05/06(火) 05:45:07似たようなキーを同じハッシュにするのか。
それで(x座標値/1000)×(y座標値/1000)だったのか。
0580デフォルトの名無しさん
2008/05/06(火) 21:04:030581デフォルトの名無しさん
2008/05/06(火) 21:05:26情報系の学校入れば絶対習う程度
0582デフォルトの名無しさん
2008/05/06(火) 21:26:480583デフォルトの名無しさん
2008/05/06(火) 22:06:41一つのカゴで一人の美少女中学生をイテレートできる
美少女中学生は控えめだから棚の下の方にハッシュされてるという寸法さベイベ♪
0584デフォルトの名無しさん
2008/05/06(火) 22:08:430585デフォルトの名無しさん
2008/05/06(火) 22:54:27勢力の足りないおっさんが無理にネタ振らなくても良いんだぜ?つまらないだけだから。
0586デフォルトの名無しさん
2008/05/07(水) 02:20:450587デフォルトの名無しさん
2008/05/09(金) 03:27:54つまらない。
0588デフォルトの名無しさん
2008/05/09(金) 09:42:130589デフォルトの名無しさん
2008/05/14(水) 03:55:480590デフォルトの名無しさん
2008/05/14(水) 04:05:160591デフォルトの名無しさん
2008/05/14(水) 04:34:23平年並みだろ。
0592デフォルトの名無しさん
2008/05/14(水) 21:41:350593デフォルトの名無しさん
2008/05/17(土) 18:02:04そんだけ温暖化が深刻ってこったな。
0594デフォルトの名無しさん
2008/05/17(土) 18:45:410595デフォルトの名無しさん
2008/05/17(土) 19:32:54これか?
入る見込みは無さそうだねぇ。
ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2565.html
>Not ready for C++0x, but open to resubmit in future
BOOST_STRONG_TYPEDEFでもつかっておけば。
0596デフォルトの名無しさん
2008/05/17(土) 20:20:55usingとかとは違くて?
0597デフォルトの名無しさん
2008/05/17(土) 20:41:230598デフォルトの名無しさん
2008/05/17(土) 20:43:100599デフォルトの名無しさん
2008/05/17(土) 20:58:140600デフォルトの名無しさん
2008/05/17(土) 21:12:180601デフォルトの名無しさん
2008/05/17(土) 22:19:45それあったらテンプレートがまたワクワクするものになりそうだな
0602デフォルトの名無しさん
2008/05/17(土) 22:38:47strong typedef でまずその穴をふさぎたい
0603デフォルトの名無しさん
2008/05/17(土) 22:43:14class AnotherType : public Type{
private:
operator Type(); //実装しない
}
0604デフォルトの名無しさん
2008/05/17(土) 22:44:250605デフォルトの名無しさん
2008/05/17(土) 23:11:500606デフォルトの名無しさん
2008/05/18(日) 22:50:150607デフォルトの名無しさん
2008/05/18(日) 23:24:530608デフォルトの名無しさん
2008/05/19(月) 00:05:38#include <iostream>
#define STRONG_TYPEDEF(base, name) \
template <typename Dummy = void> class name##_ { \
public: \
name##_() { } \
explicit name##_(const base& value) : m_value(value) { } \
base& get() { return m_value; } \
const base& get() const { return m_value; } \
name##_& operator=(const name##_& rhs) { m_value = rhs.m_value; return *this; } \
friend name##_ operator+(const name##_& lhs, const name##_& rhs) { return name##_(lhs.m_value + rhs.m_value); } \
private: \
base m_value; \
}; \
typedef name##_<> name
struct TestBase { void show() { std::cout << "Test" << std::endl; } };
STRONG_TYPEDEF(int, Hoge);
STRONG_TYPEDEF(TestBase, Test);
int main() {
Hoge a(1), b;
b = Hoge(2);
std::cout << (a + b).get() << std::endl;
Test t;
t.get().show();
}
0609デフォルトの名無しさん
2008/05/19(月) 07:37:070610デフォルトの名無しさん
2008/05/21(水) 10:29:550611デフォルトの名無しさん
2008/05/21(水) 11:09:490612デフォルトの名無しさん
2008/05/21(水) 12:32:56乙
0613デフォルトの名無しさん
2008/05/21(水) 12:37:340614デフォルトの名無しさん
2008/05/21(水) 12:42:310615デフォルトの名無しさん
2008/05/21(水) 12:48:01がスゲイ
0616デフォルトの名無しさん
2008/05/21(水) 18:04:02現行のC++から、この仕様のC++にキレイに置き換わってしまう?
また、複雑難解怪奇な文法を覚え直さなければいけないの?
0617デフォルトの名無しさん
2008/05/21(水) 18:49:37GCCだけでなくVC++も実装してくると思う、現にTR1も対応しているし。
C99よりは広まると思う。
文法はどうしようもないな。現在でも複雑怪奇なんだから
今さら少しくらい増えたってどうってことないって構えをしたほうがいいかも。
0618デフォルトの名無しさん
2008/05/21(水) 18:50:26auto とかは使うけど・・・って感じ。
0619デフォルトの名無しさん
2008/05/21(水) 20:38:480620デフォルトの名無しさん
2008/05/21(水) 20:49:42化粧のナイステクを見つけるのが先かこっちが見慣れるのが先かというところか
0621デフォルトの名無しさん
2008/05/21(水) 21:21:56言語があれば、もう C++ にこだわる気になれないなぁ。うんざりする
0622デフォルトの名無しさん
2008/05/21(水) 21:36:41やるならfortranを++すれば良かったのに。
0623デフォルトの名無しさん
2008/05/21(水) 21:38:00そこで Fortress ですよ
0624デフォルトの名無しさん
2008/05/21(水) 22:35:21だからD言語を使えと(ry
0625デフォルトの名無しさん
2008/05/21(水) 22:36:59あれは数値計算用途以外では使いたい文法でもないけど・・・
それ以前に、なかなか開発進んでなくね?
0626デフォルトの名無しさん
2008/05/21(水) 22:40:30GC がいらない
0627デフォルトの名無しさん
2008/05/21(水) 23:09:24(ほぼ)今のままのコードで動く。
0628デフォルトの名無しさん
2008/05/21(水) 23:10:26GCありというか明示的メモリ管理なしのC++ってもの使ってみたい。
DとかJavaじゃなくて、まっとうなC++で。
0629デフォルトの名無しさん
2008/05/22(木) 00:25:00だが、リソース管理は結局自前だろ
ファイナライザは入れないんだよな
0630デフォルトの名無しさん
2008/05/22(木) 20:45:13現行でC++03としても使えてない奴の方が多いからな
その辺はしゃーない
0631デフォルトの名無しさん
2008/05/22(木) 22:04:12どうせ、プリコンパイルヘッダみたいな事やるんだから、
.cppをプリコンパイルして参照解決したっていいじゃん。
0632デフォルトの名無しさん
2008/05/22(木) 22:09:220633デフォルトの名無しさん
2008/05/22(木) 22:12:52モジュールシステムを設計しなおすことになると思う
0634デフォルトの名無しさん
2008/05/22(木) 22:49:18とりあえずその前にほとんどのコンパイラベンダに言いたいんだが
export を実装してくれよ!
Comeau 以外どこか実装してんの?
0635デフォルトの名無しさん
2008/05/22(木) 22:51:430636デフォルトの名無しさん
2008/05/22(木) 22:54:500637デフォルトの名無しさん
2008/05/22(木) 22:59:03Comeauでさえ
0638デフォルトの名無しさん
2008/05/22(木) 23:51:17提案しているのが Lawrence Crowl だし,ほんの一瞬とはいえ
本気にして「なんだ!?とち狂ったのか!?」とか思った俺涙目www
0639デフォルトの名無しさん
2008/05/23(金) 05:58:24w
ま、いつか入るかもな。競合は大丈夫そうだし。
16進浮動小数点数リテラルとか知名度低いのもあるし、こっそり紛れてても誰も騒がないでしょw
0640デフォルトの名無しさん
2008/05/23(金) 18:12:450641デフォルトの名無しさん
2008/05/23(金) 19:20:22普通にやってるとチェコ語だかでパース失敗しなかったか?
0642デフォルトの名無しさん
2008/05/23(金) 19:26:27まさかチェコ語は、スラッシュやアスタリスクにまで独自の文字を割り当てているのか?
0643デフォルトの名無しさん
2008/05/23(金) 20:05:42-Ku は当然付けてるよね。
0644デフォルトの名無しさん
2008/05/23(金) 21:06:450645デフォルトの名無しさん
2008/05/23(金) 22:02:470646デフォルトの名無しさん
2008/05/23(金) 22:46:190647デフォルトの名無しさん
2008/05/23(金) 23:01:500648デフォルトの名無しさん
2008/05/23(金) 23:42:00auto がこんな使い方できるんだ
template<InputIterator Iter, Callable<auto, Iter::reference> Function>
Function for_each(Iter first , Iter last , Function f );
役立たずだった auto が大人気だ
0649デフォルトの名無しさん
2008/05/23(金) 23:46:41↓
恐ろしい副作用が見つかる
↓
カオス
の黄金パターンですね、わかります
0650デフォルトの名無しさん
2008/05/24(土) 00:04:34十六進浮動小数点数は、C99由来だから知名度低くても余裕で入るだろ、たぶん。
0651デフォルトの名無しさん
2008/05/24(土) 01:17:23Haskellのほかに
静的型付言語で
0652デフォルトの名無しさん
2008/05/24(土) 03:58:02conceptの型理論を書いた人たちがGってのを作ったよ。
他にはない。concept_mapみたいなglueがあるのは。
0653デフォルトの名無しさん
2008/05/24(土) 11:43:160654デフォルトの名無しさん
2008/05/24(土) 12:39:46concept_mapを理解してないね。
0655デフォルトの名無しさん
2008/05/24(土) 12:41:520656デフォルトの名無しさん
2008/05/24(土) 12:44:38ジェネリックス系としては
0657デフォルトの名無しさん
2008/05/24(土) 14:23:27コンセプトの型を規定するスーパーコンセプトが目玉機能になるんですね
わかりました
0658デフォルトの名無しさん
2008/05/24(土) 14:32:030659デフォルトの名無しさん
2008/05/24(土) 15:10:08と、マジで思う今日このごろ
0660デフォルトの名無しさん
2008/05/24(土) 15:11:070661デフォルトの名無しさん
2008/05/24(土) 15:12:280662デフォルトの名無しさん
2008/05/24(土) 15:18:310663デフォルトの名無しさん
2008/05/24(土) 16:09:52namespace hoge {
private: void priv();
public: void pub() { priv(); }
}
hoge::priv(); // error
0664デフォルトの名無しさん
2008/05/24(土) 16:20:34入れ子にした無名 namespace で代用できない?
0665デフォルトの名無しさん
2008/05/24(土) 16:44:37concept はコンセプトをパラメータにとることが出来るのでメタコンセプトは必要ないと思う
0666デフォルトの名無しさん
2008/05/24(土) 16:46:20namespace detail {
はそういうことやってるんだわな。
>>663はスロット単位でやりたいんだろうけど。
0667デフォルトの名無しさん
2008/05/24(土) 17:02:23「自尊心はあっても自信が無い」から、衝動で突っ込むけど説明添える勇気は無いんですね、わかります。
0668デフォルトの名無しさん
2008/05/24(土) 17:51:480669デフォルトの名無しさん
2008/05/24(土) 18:01:510670デフォルトの名無しさん
2008/05/24(土) 18:04:220671デフォルトの名無しさん
2008/05/24(土) 18:13:27突っ走ってきたという面が多かったと思う、D&E読んだ直後の感想。
しかし、現実はと言うと……。
0xも同じ道を辿るに違いない。
0672デフォルトの名無しさん
2008/05/24(土) 18:17:27> 分かりやすい言語にするために
皮肉とかじゃなく、そうは思えません。
やはりCとの互換性を抑えた上での、実行効率をメインに考えてきたと思います。
0673デフォルトの名無しさん
2008/05/24(土) 18:21:59kwsk
0674デフォルトの名無しさん
2008/05/24(土) 18:42:420675デフォルトの名無しさん
2008/05/24(土) 18:42:58やっぱ出来ねえや
勘違い
0676デフォルトの名無しさん
2008/05/24(土) 20:09:08つらいのはコンパイラベンダやライブラリベンダ
0677デフォルトの名無しさん
2008/05/24(土) 20:21:530678デフォルトの名無しさん
2008/05/27(火) 08:48:190679デフォルトの名無しさん
2008/05/27(火) 16:55:43auto i = v.begin();
みたいな書き方をする以外に使い方ありますか?
0680デフォルトの名無しさん
2008/05/27(火) 19:07:49福音と混沌をもたらします
0681デフォルトの名無しさん
2008/05/27(火) 20:05:280682デフォルトの名無しさん
2008/05/27(火) 20:13:090683デフォルトの名無しさん
2008/05/27(火) 20:13:470684デフォルトの名無しさん
2008/05/27(火) 21:57:302020 ぐらいじゃね?
0685デフォルトの名無しさん
2008/05/28(水) 09:04:380686デフォルトの名無しさん
2008/05/28(水) 15:41:55商用コンパイラとかだとその賞金が売り上げを下回るっていう可能性もあるから、
MSの無償配布してるものと同じ様なライセンスでなければいけないとかいう条件をつけてさ。
そうすれば販売方法を確立できない個人でも目指す事ができるし、万が一先を越されてしまっても
その場合は販売すれば良い。
0687デフォルトの名無しさん
2008/05/28(水) 15:53:55そんな非現実的で理想を追求した完全準拠のコンパイラは、まず実用にはならないと思われる。
0688デフォルトの名無しさん
2008/05/28(水) 18:07:34貴重な予約語exportをもっと他の有意義なことに使えるように努力すべき
0689デフォルトの名無しさん
2008/05/28(水) 19:47:46個人でやれるような範囲の話ではない
0690デフォルトの名無しさん
2008/05/28(水) 20:16:07テーブルを先頭に持ってくるんだったか程度のもの
0691デフォルトの名無しさん
2008/05/28(水) 20:22:030692デフォルトの名無しさん
2008/05/28(水) 22:23:11ABIだと思ってたが、特許なのか?
0693デフォルトの名無しさん
2008/05/28(水) 23:46:26Conceptは、Douglas Gregorが規格も処理系(ConceptGCC)も書いてるよー。
0694デフォルトの名無しさん
2008/05/29(木) 00:25:18だったらちょっと試してみたい
0695デフォルトの名無しさん
2008/05/29(木) 06:43:01他の新標準機能は入ってないよ。
http://gcc.gnu.org/projects/cxx0x.html
lambdaはgcc headで実装始まってるはず。
0696デフォルトの名無しさん
2008/05/29(木) 08:49:352100頃までC++は生き残るわけですね分かります
0697デフォルトの名無しさん
2008/05/29(木) 11:46:02std::*IntegralLikeになってやがる。
FloatingPointLikeってなんだよ
// Revision 1の頃から変わっていたのか
0698デフォルトの名無しさん
2008/06/04(水) 13:39:480699デフォルトの名無しさん
2008/06/04(水) 13:52:25大衆には見向きもせずプログラミング言語の実験室として頑張っていただきたい。
0700デフォルトの名無しさん
2008/06/04(水) 14:03:10でも、必要としている一部の人間のために頑張って頂きたい。w
0701デフォルトの名無しさん
2008/06/04(水) 14:05:120702デフォルトの名無しさん
2008/06/04(水) 14:11:26ライブラリを書く奴のための機能だから、
一般ピーポーが覚える必要は無いんじゃない?
とは言ったものの、どうやって実装しているか分からないと、
俺としては、使う気にならなかったりするから微妙だ。
STLヤベー、超便利ー。
↓
イテレータとか関数オブジェクトとか分からん。勉強するか。
↓
いわゆる、STLの解説本とかではまともに説明されてねー。何コレ。
↓
テンプレート解説本なら詳しく載ってる。やっべ、スゲー詳しい。面白れー。
↓
Boostたのしー。
↓
あれ、当初の目的って何だっけ?
STL? デザインが貧弱すぎじゃね? あれって。
0703デフォルトの名無しさん
2008/06/04(水) 16:25:03auto とか。
0704デフォルトの名無しさん
2008/06/04(水) 16:26:100705デフォルトの名無しさん
2008/06/05(木) 04:01:490706デフォルトの名無しさん
2008/06/05(木) 14:58:46すでにフォートラン化しはじめてる?
0707デフォルトの名無しさん
2008/06/05(木) 16:44:530708デフォルトの名無しさん
2008/06/05(木) 20:08:45予約語から外してほしい
0709デフォルトの名無しさん
2008/06/05(木) 20:23:20prelink 工程というのがあってそこで全部解決するまで再帰的にコンパイルしつづける
関数がインラインにならないという効果はあるがそれ以上の利益はない気がする
0710デフォルトの名無しさん
2008/06/05(木) 21:53:24FORTRAN 77とは全然違う。
FORTRAN 77は数値計算の世界では現役のまま陳腐化した。
C++0xは現役のまま最先端を走り続け、プログラマを置き去りにし続けてる。
0711デフォルトの名無しさん
2008/06/05(木) 21:55:370712デフォルトの名無しさん
2008/06/05(木) 22:04:190713デフォルトの名無しさん
2008/06/05(木) 22:04:260714デフォルトの名無しさん
2008/06/05(木) 22:53:05> C++0xは現役のまま最先端を走り続け
「他言語に出来ることが出来ないので悔しい」
って、入れた機能がほとんどじゃないかい?
0715デフォルトの名無しさん
2008/06/05(木) 22:53:25Fortran2008は結構強烈だぞ?
0716デフォルトの名無しさん
2008/06/05(木) 23:00:35conceptはHaskellだけじゃない、似てる機能があるのは。
しかもそれは後から分かったことだし。
traitsを置き換えるために生まれた。
move semanticsだってかなり狂ってるしね。
明示的なメモリ管理がある言語で導入するとは。
0717デフォルトの名無しさん
2008/06/05(木) 23:50:130718デフォルトの名無しさん
2008/06/06(金) 00:03:11お作法って具体的にはどういうこと?
0719デフォルトの名無しさん
2008/06/06(金) 13:01:23registerもいつか役に立つ日が来るのでしょうか?
0720デフォルトの名無しさん
2008/06/06(金) 13:06:07Fortran2008のco-Arrayなんて、
Crayの実装の後追いじゃないですか。
C++0xなんて規格が独走状態ですよ。
一緒にしないでください、失礼です。
0721デフォルトの名無しさん
2008/06/06(金) 13:45:38俺のエスパー能力を駆使すると、パラダイムをお作法と訳してるんじゃねーの。
禿げ曰く「C++はマルチパラダイム言語だ」と。
パラダイムがないつーか、ひとつに縛らない言語だがな。
パラダイムが何も無いのがすばらしいなら、ifとgotoだけでいいじゃねーかと。
0722デフォルトの名無しさん
2008/06/06(金) 16:09:13class string {
public:
string(const char*);
};
void f(string, string, bool = false); // 1
void f(string, bool = false); // 2
void g() {
// どちらの関数が呼ばれるか。
f(“Hello”, “Goodbye”);
}
俺はできなかった。
まあ、Overload Resolutionの厳密なルールを暗記してるわけじゃないし。
答え:ttp://blogs.msdn.com/vcblog/archive/2008/06/05/some-c-gotchas.aspx
これをもうちょっと人間的にするために、
なにかプログラマが優先順位を指定できるような機能はつくれないのかな。
0723デフォルトの名無しさん
2008/06/06(金) 16:39:20だれしも一回は引っかかる罠だけどね。
0724デフォルトの名無しさん
2008/06/06(金) 17:49:35触れないし触らない方がいい
0725デフォルトの名無しさん
2008/06/06(金) 17:52:570726デフォルトの名無しさん
2008/06/06(金) 18:45:450727デフォルトの名無しさん
2008/06/06(金) 19:38:40もしかしたら、&の使用を制限する目的に使えるかもしれない。
例えば、register int foo して func(& foo) したらエラーになるとか。
で、参照渡しができるのなら、ポインタの使用を禁止できることになる。
# 意味が違いすぎるなw
0728デフォルトの名無しさん
2008/06/06(金) 20:37:33C++ では付けれるらしいよ。
0729デフォルトの名無しさん
2008/06/06(金) 20:42:27どうせ予約語の意味なんてメチャクチャなんだから
0730デフォルトの名無しさん
2008/06/06(金) 20:42:580731デフォルトの名無しさん
2008/06/06(金) 20:45:010732デフォルトの名無しさん
2008/06/06(金) 20:47:450733デフォルトの名無しさん
2008/06/06(金) 22:20:43だれか提案したの?
0734デフォルトの名無しさん
2008/06/06(金) 22:45:360735デフォルトの名無しさん
2008/06/06(金) 22:57:330736デフォルトの名無しさん
2008/06/06(金) 23:32:07考えに考えた末に発狂するのとでは筋が違うと思う。
0737デフォルトの名無しさん
2008/06/06(金) 23:42:24特に特殊化と混じったりするとわけわからん
0738デフォルトの名無しさん
2008/06/06(金) 23:54:55それどこで?
comp.std.c++ と comp.lang.c++ と流し読みしてるけど、とりあえず見覚えが無い。
0739デフォルトの名無しさん
2008/06/07(土) 01:11:13あまり触れたくないよな
0740デフォルトの名無しさん
2008/06/07(土) 19:41:12m = inline (auto x, auto y) { return x > y ? x : y; } (10, 20);
とか?
0741デフォルトの名無しさん
2008/06/07(土) 20:23:440742デフォルトの名無しさん
2008/06/07(土) 20:35:49適当に#defineして使うからさあ
0743デフォルトの名無しさん
2008/06/07(土) 21:21:55とりあえず #include <lambda> をくれ。
0744デフォルトの名無しさん
2008/06/08(日) 20:07:300745デフォルトの名無しさん
2008/06/09(月) 15:24:25でどっちが呼ばれるの?
ふつーに考えて1でしょ?
(ブーッという音が聞こえてるようだ)
0746デフォルトの名無しさん
2008/06/09(月) 15:31:18んで、pointer-to-boolなんて知らなかったので、さらに調査中。
昔はほんとにC++好きだったんだけどな。今は規格がぎしぎししてるね。
0747デフォルトの名無しさん
2008/06/09(月) 18:31:18全然何ともなってないといういつものパターンなんだろ
0748デフォルトの名無しさん
2008/06/09(月) 19:25:05整数とbool
は互換禁止にすべきだな
やりたきゃ明示的にキャストしれと
0749デフォルトの名無しさん
2008/06/09(月) 19:27:180750デフォルトの名無しさん
2008/06/09(月) 20:17:320751デフォルトの名無しさん
2008/06/09(月) 20:18:01ただ、if (T* p = dynamic_cast<T*>(q)) { ... } がやりたいので
無くなると困る。
0752デフォルトの名無しさん
2008/06/09(月) 20:47:280753デフォルトの名無しさん
2008/06/09(月) 21:45:570754デフォルトの名無しさん
2008/06/09(月) 22:27:430755デフォルトの名無しさん
2008/06/09(月) 23:42:09は?C++でNULLなんて使うなよ。0を使え。
0756デフォルトの名無しさん
2008/06/09(月) 23:48:560757デフォルトの名無しさん
2008/06/10(火) 00:34:52どうせ変数に入れたら0と区別付かないからやりたい放題なのに
0758デフォルトの名無しさん
2008/06/10(火) 01:41:26NULL をどう定義するかは処理系定義で、
整数変数に代入しようとした時に警告出してくれるように
定義してくれてるかもしれないというのに
何で 0 なんて使わないといけないのか。
0759デフォルトの名無しさん
2008/06/10(火) 01:42:55Effective C++ を100回読め
0760デフォルトの名無しさん
2008/06/10(火) 01:49:27今すぐ叩き壊した方がいいよ
0761デフォルトの名無しさん
2008/06/10(火) 01:58:26もちろん、C++はある程度「綺麗」なスタイルを提示しながらも、そうじゃないスタイルを拒絶することはしない。
better Cとして、例外を使わなかったり、templateを使わなかったり、NULLを使っても良い。
ただし、それが推奨されているわけではないことは覚えておくべき。
0762デフォルトの名無しさん
2008/06/10(火) 02:08:51g++ は __null で定義されているが・・・。
0763デフォルトの名無しさん
2008/06/10(火) 02:35:320764デフォルトの名無しさん
2008/06/10(火) 03:00:50enum{NULL = 0};
0765デフォルトの名無しさん
2008/06/10(火) 03:03:49T *NULL(){
return 0;
}
0766デフォルトの名無しさん
2008/06/10(火) 07:04:54Effective C++以前のC++ FAQの時代からの常識。
>>759
情けない…このスレに来るのは十年早いよ。
0767デフォルトの名無しさん
2008/06/10(火) 07:20:10NULL は結構色んなヘッダファイルで定義されてるので
cstddef をインクルードするまでもないことが殆ど。
0768デフォルトの名無しさん
2008/06/10(火) 07:24:440769デフォルトの名無しさん
2008/06/10(火) 07:28:500770デフォルトの名無しさん
2008/06/10(火) 07:29:45それだとメンバへのポインタに対応できない気がする。
0771デフォルトの名無しさん
2008/06/10(火) 08:42:090772デフォルトの名無しさん
2008/06/10(火) 08:50:23実際のコンパイルでエラーになるまで対応するヘッダをインクルードしないってこと?
ライブラリの実装に依存してそうでイヤじゃない?
0773デフォルトの名無しさん
2008/06/10(火) 09:37:26低レベルの質問にはよく答えられる低の高くらいのレベルの人が多いんですよ。
おいらも含めて。w
0774デフォルトの名無しさん
2008/06/10(火) 10:47:54エントリーモデルの中で頭一つ出た商品みたいで所謂人気商品ってイメージ
0775デフォルトの名無しさん
2008/06/10(火) 11:16:08今は、プレミアム系商品の人気が高くなっている辺りも含めて。
0776デフォルトの名無しさん
2008/06/10(火) 14:01:460777デフォルトの名無しさん
2008/06/10(火) 15:27:35廃れたね。
JVMもCLRもなければ主流になったかも知れないのに。
0778デフォルトの名無しさん
2008/06/10(火) 16:32:19規格でどのヘッダがNULLを定義してるか決めてあるでしょ。
0779デフォルトの名無しさん
2008/06/10(火) 17:05:26使うなら、定義されてるヘッダを必ず明示的にインクルードしないと、
コンパイル通っても、実装依存なコードだってことでしょ。
実際多いよね、そういうコードは。
実装上の都合による孫インクルードに依存しているコード。
0780デフォルトの名無しさん
2008/06/10(火) 17:37:45多いね。
うっかりやることもあるので、ちゃんと警告するシステムが欲しい。
(あるのかな?)
0781デフォルトの名無しさん
2008/06/10(火) 17:43:48#includeの話題で盛り上がってるあたりC++の病巣がよく表れている
0782デフォルトの名無しさん
2008/06/10(火) 17:45:270783デフォルトの名無しさん
2008/06/10(火) 17:50:06いまさらC++に入れるくらいなら俺はDを使うわ。
0784デフォルトの名無しさん
2008/06/10(火) 17:52:090785デフォルトの名無しさん
2008/06/10(火) 18:46:50標準の拡張子無しのヤツはヘッダっていうんじゃなかった?
自分で作ったらヘッダーファイルだっけね。
0786デフォルトの名無しさん
2008/06/10(火) 20:53:480787デフォルトの名無しさん
2008/06/10(火) 21:00:08具体的に言うとファイル名に拡張子ほしい。<ios>でios.hppを探しに行くような感じで。
拡張子のないファイルは扱いが面倒臭い。
関連付け以外にも、色分けなどのために拡張子で種類を判別するエディタの多いこと。
0788デフォルトの名無しさん
2008/06/10(火) 21:19:21副次ストリームに書く。
エディタはそれを読んで判断。
0789デフォルトの名無しさん
2008/06/10(火) 21:41:220790デフォルトの名無しさん
2008/06/10(火) 23:15:030791デフォルトの名無しさん
2008/06/10(火) 23:17:46でも結局iosのファイルの中身は
#include <ios.hpp>
だけだったりするんだよね
0792デフォルトの名無しさん
2008/06/10(火) 23:29:300793デフォルトの名無しさん
2008/06/10(火) 23:31:430794デフォルトの名無しさん
2008/06/10(火) 23:38:16C++標準化後にどれだけ旧態然とした入門書が悪影響を与えたか。
0795デフォルトの名無しさん
2008/06/10(火) 23:54:23結局 VC++ が無視したら広まらないんだろうな。
C99 みたいに。
0796デフォルトの名無しさん
2008/06/10(火) 23:56:170797デフォルトの名無しさん
2008/06/10(火) 23:58:18俺らは使うだけだけど
0798デフォルトの名無しさん
2008/06/11(水) 00:00:01MSじゃなくてさ
0799デフォルトの名無しさん
2008/06/11(水) 00:00:45言語仕様に手を入れるのはどうなんだろうね。
VCEE の C++ の力の入れ具合が 2005 で微妙だったのが(デフォでは Platform SDK なし)
2008 で微妙に改善されたので(デフォで Windows SDK あり)
もしかしたらやる気があるのかもしれない。
0800デフォルトの名無しさん
2008/06/11(水) 00:16:03TR1だってispodとかコンパイラに手を入れないと無理なのもある。
ところで、もしVC++がExpressだと0x使えないって言われたら
喜んでStandard買いそうな気がしてならない。
そんときゃg++で我慢すればいいはずなのに。
0801デフォルトの名無しさん
2008/06/11(水) 00:16:590802デフォルトの名無しさん
2008/06/11(水) 00:19:500803デフォルトの名無しさん
2008/06/11(水) 00:20:530804デフォルトの名無しさん
2008/06/11(水) 00:22:390805デフォルトの名無しさん
2008/06/11(水) 00:23:59あとはinitializerでのコンテナ初期化と範囲forとか
0806デフォルトの名無しさん
2008/06/11(水) 00:27:120807デフォルトの名無しさん
2008/06/11(水) 00:29:050808デフォルトの名無しさん
2008/06/11(水) 00:31:260809デフォルトの名無しさん
2008/06/11(水) 00:43:260810デフォルトの名無しさん
2008/06/11(水) 00:48:09けどC++/CLI蹴られたし、ISO C++からは離れるかもね。
0811デフォルトの名無しさん
2008/06/11(水) 00:53:26型の種類と値の範囲の表をちょっと増やすだけだもんなw
個人的にはUTF文字列をまともに扱って欲しい
0812デフォルトの名無しさん
2008/06/11(水) 18:58:03外に出るときの見た目は変わらない
0813デフォルトの名無しさん
2008/06/11(水) 19:48:210814デフォルトの名無しさん
2008/06/11(水) 19:49:300815デフォルトの名無しさん
2008/06/11(水) 19:53:42gccぶち込んでみるかな。
0816デフォルトの名無しさん
2008/06/11(水) 20:54:49どうでも良いが個人的にまつもと氏に0xに改善されても尚C++が問題外かどうかを訊ねたい。
0817デフォルトの名無しさん
2008/06/11(水) 21:31:56もっとだめと言うに100万ペリカ
ところで初心者向けと言えば、やっぱりテンプレート絡みの
エラーメッセージがまともになるという1点においてコンセプトが
一番簡単にアピールできる機能だと思う。
コンセプト自体は、入門書で取り上げられるような内容ではないだろうけど。
0818デフォルトの名無しさん
2008/06/12(木) 08:16:260819デフォルトの名無しさん
2008/06/12(木) 10:28:130820デフォルトの名無しさん
2008/06/12(木) 14:25:24>>693のGregorとか。
一人で大幅な改訂してる暇はたぶんないだろ。
WG21 papers、かなり名前出てくてるからな。
0821デフォルトの名無しさん
2008/06/12(木) 14:26:54そんなことない?
0822デフォルトの名無しさん
2008/06/12(木) 14:32:270823デフォルトの名無しさん
2008/06/12(木) 16:20:390824デフォルトの名無しさん
2008/06/12(木) 17:13:20ぼっぼくと付き合ってくださいっ!
0825デフォルトの名無しさん
2008/06/12(木) 18:01:42文脈的には>>821が美少女中学生だと思う
TC++PLやD&Eの続編って書く予定ないのかな と思って禿のページ見に行ったら
なんかいまC++の入門書書いてるみたいだね
0826デフォルトの名無しさん
2008/06/12(木) 18:30:150827デフォルトの名無しさん
2008/06/12(木) 20:21:40おお、それは期待したい
0828デフォルトの名無しさん
2008/06/12(木) 20:21:56そこにコンセプトなんか追加したらどうなることやら
0829デフォルトの名無しさん
2008/06/12(木) 22:22:580830デフォルトの名無しさん
2008/06/12(木) 22:24:030831デフォルトの名無しさん
2008/06/12(木) 22:31:250832デフォルトの名無しさん
2008/06/12(木) 22:33:180833デフォルトの名無しさん
2008/06/12(木) 22:35:17両者が結びついているかのような書き込みは控えてください!迷惑です!
ここはC++0xのスレッドです!C++0xの話をしてください!
美少女中学生の話がしたければどこかよそでやってください!
0834デフォルトの名無しさん
2008/06/12(木) 22:39:310835デフォルトの名無しさん
2008/06/12(木) 22:55:110836デフォルトの名無しさん
2008/06/12(木) 22:56:410837デフォルトの名無しさん
2008/06/12(木) 22:57:56コンパイルに何年かかるんだ?
0838デフォルトの名無しさん
2008/06/12(木) 22:58:14コンセプトが追加されてはじめてまともになるんじゃないか。何を言ってるんだ
0839デフォルトの名無しさん
2008/06/12(木) 23:37:42紫の上のコンパイルはたった4年です。
0840デフォルトの名無しさん
2008/06/13(金) 21:31:21拡張子をなくした理由ってなんだろ?
0841デフォルトの名無しさん
2008/06/13(金) 21:32:15いつまで入門者でいるつもりなのかなー
0842デフォルトの名無しさん
2008/06/13(金) 21:38:19ヘッダはファイルである必要は無い
とか言えるようにするため。
0843デフォルトの名無しさん
2008/06/14(土) 00:34:500844デフォルトの名無しさん
2008/06/14(土) 00:36:530845デフォルトの名無しさん
2008/06/14(土) 00:37:26#include <iostream.h>
int main() {
cout << "hoge" << endl;
return 0;
}
とか書かれたプログラムが大量にあってだな・・・。
それとの互換性を考えると名前を変えざるを
0846デフォルトの名無しさん
2008/06/14(土) 10:06:580847デフォルトの名無しさん
2008/06/14(土) 10:11:18特に暗黙の型変換辺り。
ちなみにDなら不要だよ。
0848デフォルトの名無しさん
2008/06/14(土) 10:12:46時には思い切って捨てたりしてるけど(信者を)それが逆にしがらみになってる。
0849デフォルトの名無しさん
2008/06/14(土) 10:25:48仕様だけでも作ってくれ
0850デフォルトの名無しさん
2008/06/14(土) 10:28:12暗黙関係はトラブルの元だからどうにかしたいな。暗黙関係は警告を出すオプションが欲しい。
デフォルトのコピーコンストラクタが作成できませんなんて余計な警告はあるのになんでないんだ?>VC8
0851デフォルトの名無しさん
2008/06/14(土) 10:52:11その場合でもmove semanticsは面白いこと出来ると思う。
0852デフォルトの名無しさん
2008/06/14(土) 14:27:37double d = 1;
とか
Base *b = new Derived();
とかが全部エラーになるんだよな
0853デフォルトの名無しさん
2008/06/14(土) 14:29:420854デフォルトの名無しさん
2008/06/14(土) 14:33:28あれも認めろこれも認めろと言うキチガイが出てくるので全て禁止です
そういう思想で作られてる言語ねえのかな
0855デフォルトの名無しさん
2008/06/14(土) 14:42:530856デフォルトの名無しさん
2008/06/14(土) 15:20:30は実質
double d( 1 );
と同じだから明示的な変換を表しているんじゃないか?
0857デフォルトの名無しさん
2008/06/14(土) 15:22:160858デフォルトの名無しさん
2008/06/14(土) 15:29:260859デフォルトの名無しさん
2008/06/14(土) 15:41:090860デフォルトの名無しさん
2008/06/14(土) 15:42:310x 的には = delete してくれってことじゃないのかな。
0861デフォルトの名無しさん
2008/06/14(土) 15:44:38特にポインタ、文字型、論理型が整数様型と絡むと。
0862デフォルトの名無しさん
2008/06/14(土) 15:46:080863デフォルトの名無しさん
2008/06/14(土) 15:47:360864デフォルトの名無しさん
2008/06/14(土) 15:55:09それはよく思う。
でも、今更変えらんないんだろうなあ。
0865デフォルトの名無しさん
2008/06/14(土) 15:57:43言語拡張&コンパイラ実装の研究がどんどん進んでいるね。
0866デフォルトの名無しさん
2008/06/14(土) 23:38:080867デフォルトの名無しさん
2008/06/15(日) 09:46:350868デフォルトの名無しさん
2008/06/16(月) 13:47:36OpenC++の中の人も今はOpenJavaやってるね。
0869デフォルトの名無しさん
2008/06/17(火) 06:06:45それを std 空間に template <> swap( .. ) と逐一定義しないと std::swap から呼ばれない。
理屈はわかるんですけど、なんとかならないですかね。
一々 namespace std { template <> swap( うんたらかんたらと書くのが面倒くさいです。
0870デフォルトの名無しさん
2008/06/17(火) 06:50:040871デフォルトの名無しさん
2008/06/17(火) 12:24:39クラスと同じ名前空間に swap() を定義している。
0872デフォルトの名無しさん
2008/06/17(火) 21:01:320873デフォルトの名無しさん
2008/06/17(火) 21:08:06これからは右辺値参照の時代ですもんね。
0874デフォルトの名無しさん
2008/06/17(火) 23:41:59自分が値をあべこべに格納していないか考え直しなさい
Bjarne Stroustrup
0875デフォルトの名無しさん
2008/06/18(水) 00:38:14恐らくどうしようもないかと思います.
さらに, std 名前空間以外の名前空間で定義された関数テンプレート
(クラステンプレート内で定義されてた非テンプレート関数もこれに準じますが)
において, unqualified call で swap が呼ばれる場合にも対応しようとすると
クラスと同じ名前空間にも swap を定義しなければいけなくなります.
現時点において,規格として std 名前空間で定義された関数テンプレート内で
>>871 さんの提言する実装 (using std::swap;) が行われている保証が無いことが
本質的な問題だと思います.ただ,ここに文句を言っても現時点での問題は
何も解決されませんので,とりあえずの次善策として, std::swap の特殊化と
associated namespace に swap を定義することの両方を実施することを
個人的には勧めておきます.「面倒くさい」という問題の解決にまったくなっていませんが.
さらに >>870 さんの言うように,クラステンプレートの場合には
根本的な解決策はないです.
>>873
move できるかどうかは, swap できるかどうかとは本質的には独立で,
特に move が可能になるためには,オブジェクトに valid resourceless state が
存在することが必要になり,これはやや強い制限だと思いますから,
move はできないけれども swap はできるという状況は比較的容易に起こりえると思います.
なので, move さえあれば良いということは必ずしも言えないかと思います.
0876デフォルトの名無しさん
2008/06/18(水) 00:51:43template <typename T> requires HasSwapFunction<T>
inline void swap(T& x, T& y) throw () { x.swap(y); }
template <typename T>
inline void swap(T& x, T& y) throw () { std::swap(x, y); }
↑ こういう感じのってダメなの?よくわからんけど…
0877デフォルトの名無しさん
2008/06/18(水) 01:00:17template<HasSwapFunction T>
concept_map Swappable<T> { void swap(T &x, T &y){ x.swap(y); } }
多分,こんな感じで concept_map で差異を吸収したほうが楽なのではないかと.
0878デフォルトの名無しさん
2008/06/18(水) 02:03:49・デフォルトはクラスが定義するswapを実行する
・swapが実装されていなければ、言語側で一時オブジェクトを作り処理する
とできないのかな
実装で埋めようとして複雑になっている印象がありますが
0879デフォルトの名無しさん
2008/06/18(水) 04:23:08http://groups.google.ca/group/comp.lang.c++.moderated/browse_thread/thread/b396fedad7dcdc81
0880デフォルトの名無しさん
2008/06/18(水) 10:07:180881デフォルトの名無しさん
2008/06/18(水) 11:18:580882デフォルトの名無しさん
2008/06/18(水) 16:00:02for (int &entry: aContainer) { ... }
Javaのクロージャを引数に取る拡張に比べるとつまらない。>>48
C++的には最悪のセンスだと思う。
0883デフォルトの名無しさん
2008/06/18(水) 17:41:050884デフォルトの名無しさん
2008/06/18(水) 17:58:22これくらいしか書きようがないと思う。
0885デフォルトの名無しさん
2008/06/18(水) 18:00:07参照が指す先変えながらグルグル回るの?
キモッ
0886デフォルトの名無しさん
2008/06/18(水) 18:21:35従来の、for無いのスコープで参照変数を宣言してるようなもの。
0887デフォルトの名無しさん
2008/06/18(水) 18:29:260888デフォルトの名無しさん
2008/06/18(水) 18:55:1808891/2
2008/06/18(水) 19:11:15彼はC言語の研修でポインターでつまづくような無能で、無論C++など理解出来なかった。
プログラマーとしては全く使い物にならんということでネットワークエンジニアとして使われていた。当然役には立たなかったが、サーバー運びや配線や小間使いぐらいは出来た。
この世にポインターがあるから自分がそんな境遇に陥ったのだと不満を募らせた彼はポインターを憎悪し、ポインターの無い言語があればいいのに、と夢想するようになった。
彼はその夢想言語をJAVAと名付け陳腐な企画書を出したが、すべて無視された。
そんなある日、どうせ役には立たないんだからと、しつこいNetscape社の営業を追い払う仕事を任された。もちろん権限は一切なく、ただNetscape社の営業の話相手をし、すべてを断るだけの仕事だ。
彼は毎日のようにNetscape社の営業と無駄話をした。彼にとってそれは、愚痴や不平不満をこぼす絶好の機会だった。
Netscape社の営業は当然のように彼に同意した。彼の境遇に同情し、彼の才能を認め、褒め称えた。
そして誰も耳を傾けなかった夢想言語JAVAの話になるとNetscape社の営業は強い興味を持ち、ブラウザーに搭載したいと言い出した。当時のNetscape社は、動きのあるページを作る案を求めていた。
夢想言語JAVAが現実のものになる。彼は天にも昇る気持ちになり、全面的に協力を申し出た。が、やはり何の役にも立たなかった。すべての設計、策定、実装はNetscape社によって行われた。
Netscape社は、夢想言語JAVAを「何処でも全く同じに動く言語」としてブラウザーに搭載しようとしたのだ。
これを聞いて驚いたのはSunの役員達だ。直ちにNetscape社と交渉し、JAVAはそもそもSunのものであることを主張し始めた。
交渉の結果夢想言語JAVAの最初の実装はJavaScriptと改名することになり、SunのJAVAとは独立したNetscape社の言語となった。
08901/2
2008/06/18(水) 19:11:45また夢想言語JAVAの詳細を厨に尋ね、規格をまとめ……ようとした。というのは、厨の頭の中には「ポインターを使わない」の他には支離滅裂な妄想以外何も無かったからだ。
役に立たない彼を「夢想言語JAVAを広める為の広報」に追い出し、夢想言語JAVAではなく現実的なJAVA言語の設計が行われた。
だが現実的設計にはいろいろと難があった。その度に開発部は厨に尋ね、その意向を可能な限り反映する努力を行った。しかし無能な厨の意向を反映することは困難を極めた。
その中で最も大きな障害となったのが、多重継承の禁止である。
未だにSunは公式に認めていないが、JAVAが多重継承を禁止する決断をさせたのは、実はMicrosoftの寄与するところが大きかった。
Microsoftは既にMFCとCOMによって多重継承が抱える問題を解決していたからである。
その後も厨は(何度出入り禁止を喰らっても)設計に口を出し、そして開発部はその意向を可能な限り反映する努力を行ない続けた。
特に厨が主張するコーディング規約は支離滅裂を極め、ゴスリンは「それまでに書かれたコードを書き直す量が最も少なくなるコーディング規約」をまとめる必要に迫られた。
この時にまとめられた何の意味も無いコーディング規約は後に、それを知らなかった企画部によって改めてまとめられJAVAの標準のコーディング規約として発表された。
ゴスリンはこの時の心境を「JAVAが最高だと生涯言い張り続ける覚悟を決めた」と述懐している。
厨は熱心に広報活動を行っていたが、役に立ったのは最初だけだった。すごい言語が出来る、ということを印象付けた後は、何の役にも立たなかった。
開発には近寄ることすら許されず、広報からは役立たずの烙印を押された。彼は再びネットワークエンジニアとして保守管理部に戻った。
今では彼は毎日何百ものLEDを見張って、消えたらそれに対応するハードディスクドライブを交換する仕事をしていると言われている。名前は記録されていない。
0891デフォルトの名無しさん
2008/06/18(水) 19:12:400892デフォルトの名無しさん
2008/06/18(水) 20:18:37valid resourceless state てなーに?
0893デフォルトの名無しさん
2008/06/18(水) 22:24:140894デフォルトの名無しさん
2008/06/18(水) 22:26:030895デフォルトの名無しさん
2008/06/18(水) 22:26:500896デフォルトの名無しさん
2008/06/18(水) 22:28:34ネタにマジレスw
0897デフォルトの名無しさん
2008/06/18(水) 22:29:560898デフォルトの名無しさん
2008/06/18(水) 22:30:340899デフォルトの名無しさん
2008/06/18(水) 22:37:470900デフォルトの名無しさん
2008/06/18(水) 22:38:24d = std::move(s);
という構文が実行された直後の s の状態が明確に定義されていなければならないですが,
この状態は有効な状態でなければならず,かつ,
いかなるリソースの所有権も保持していないような状態でなければならないです.
これを valid resourceless state と表現していました.
有効な状態 (valid) でなければならないというのは,
move された直後の s に対しての操作が
well-defined でなければならないという要請を表現したものです.
少なくとも最低限かつ自明の要求として,いかなるタイミングでも
デストラクタの発動は有効に機能しなければならない,という意味で
有効な状態でなければならないことは分かるかと思います.
また, move は no-fail,つまり失敗しない操作であることが要求されます.
ここで仮に move 直後の s が何らかのリソースの所有権を保持した状態であるとすると
s が保持するリソースの確保において失敗が発生する可能性があり,
move が no-fail であるという要求と矛盾します.
従って, s はいかなるリソースの所有権も保持していない状態
(resourceless) である必要が出てきます.
一般に,オブジェクトが常に何らかのリソースを確保している状態であることが自然な場合,
このようなオブジェクトに move の操作が行えることを要求すると,
オブジェクトの構築は完了しているがリソースの確保が完了していない
オブジェクトの状態を有効な状態としてユーザに暴露しなければならなくなり,
RAII の観点から見てやや大きな弱点を生じるように思います.
0901デフォルトの名無しさん
2008/06/19(木) 00:18:583行でまとめろ
0902デフォルトの名無しさん
2008/06/19(木) 00:36:13forの繰り返しの度に初期化が行われているとみるべきでは?
例えが悪いかもしれないけど、今だってBOOST_FOREACHでは要素を受ける変数の型に参照が使える。
0903デフォルトの名無しさん
2008/06/19(木) 00:53:390904デフォルトの名無しさん
2008/06/19(木) 01:53:07右辺値オブジェクトからの move を保証するために決めたって感じだな。
RAII については、どうせ unique_ptr や shared_ptr その他スマポ使うこと
になるからあんまり問題にならないんじゃない?
そもそもグローバルヒープが制限されてるウチみたいな環境じゃ、
あまり MoveSemantics の恩恵にあずかれなそうだが。
あーでも ScopedAllocator 使えればちっとは便利になるんかな...
0905デフォルトの名無しさん
2008/06/19(木) 07:55:32環境はあんまり関係ないんじゃないの。
0906デフォルトの名無しさん
2008/06/19(木) 12:44:120907デフォルトの名無しさん
2008/06/19(木) 14:34:090908デフォルトの名無しさん
2008/06/19(木) 20:14:51>NullPo・・・
0909デフォルトの名無しさん
2008/06/19(木) 21:08:560910デフォルトの名無しさん
2008/06/19(木) 21:11:19ガッ
0911デフォルトの名無しさん
2008/06/20(金) 00:04:06std::exceptionがstringしか使えない点
はどうなるの?
0912デフォルトの名無しさん
2008/06/20(金) 01:57:11> std::basic_stringが異常に使いにくい点
何の話?
> std::exceptionがstringしか使えない点
what() のことなら、変わらない。
UTF-8 なりシステムデフォルトなりにエンコーディングを決めて詰め込むのが正解。
0913デフォルトの名無しさん
2008/06/20(金) 03:20:430914デフォルトの名無しさん
2008/06/20(金) 07:41:28std::exception::what は wchar_t 文字列をキャストして返してもいいという仕様だし。
メモリ確保が問題だと思う。
0915デフォルトの名無しさん
2008/06/20(金) 09:32:45> std::exception::what は wchar_t 文字列をキャストして返してもいいという仕様だし。
wchar_t 文字列に変換できるマルチバイト char 文字列、とか、そんな感じだったはず。
ここでいう変換はキャストじゃないと思う。
0916デフォルトの名無しさん
2008/06/20(金) 13:09:480917デフォルトの名無しさん
2008/06/20(金) 13:40:10国際化ということにまったく関心が無く、
「はぁ? 一文字は一バイトに決まってんだろ。野蛮な絵文字を使うアジアのイエロー達など知ったことか」
という意見が大多数を占めたために、こんな仕様になったんだろ。
まあ、実際のところは、当時はまだUnicodeなんて、
規格に入れるほど発達していなかったんだろうが。
0918デフォルトの名無しさん
2008/06/20(金) 13:41:310919デフォルトの名無しさん
2008/06/20(金) 14:08:050920デフォルトの名無しさん
2008/06/20(金) 14:11:08exception はなるべくシンプルなほうがいいんだよ。
それより fstream のファイル名は wchar_t にも対応してほしい。
0921デフォルトの名無しさん
2008/06/20(金) 14:20:58まずロケールを廃止するところから。
0922デフォルトの名無しさん
2008/06/20(金) 14:36:370923デフォルトの名無しさん
2008/06/20(金) 15:10:16localeとiostreamの関係は悪くないと思います。
0924デフォルトの名無しさん
2008/06/20(金) 15:57:400925デフォルトの名無しさん
2008/06/20(金) 16:03:33POSIX/UNIXの方は、プラットフォームのデフォールト設定と、
プログラムの実行環境の設定が合致している必要がありませんが、
初期のWindowsのAPIの方は、合致している必要があったので、
より柔軟性の高いPOSIX localeモデルと組み合わせにくかったのでしょう。
C++はさらに柔軟性が高くなっていますから。(streamごと)
0926デフォルトの名無しさん
2008/06/20(金) 17:27:44・大量の文字劣苦ラスがライブラリ毎に量産されている点。
Boost含めてC++のライブラリの最大の欠点って
使い方が難しく直感的でない故に毎回、ドキュメントを参照せねば使えないことが多い。
タイプ量が多く、本質的シンプルさを追求せずに
いたずらに複雑さを選択し、使い勝手を軽視している。
このようなものが次世代で生き残っていけるとは思えない。
0927デフォルトの名無しさん
2008/06/20(金) 18:32:35君も元気でね
0928デフォルトの名無しさん
2008/06/20(金) 18:37:23かと言っても悲しいかな、今更どうしようもできない。
0929デフォルトの名無しさん
2008/06/20(金) 19:41:35タイプ量に文句付けるとかあんまり笑わせんな
0930デフォルトの名無しさん
2008/06/20(金) 20:00:43せめて CString::GetBuffer 相当の関数が欲しいよね。
0931デフォルトの名無しさん
2008/06/20(金) 20:01:38別に basic_string のメンバ関数にする必要は無くて
むしろ RAII なクラスを提供してくれる方がいい。
0932デフォルトの名無しさん
2008/06/20(金) 20:01:56結局C++でまともな文字列クラスなんて作れないんだよ
0933デフォルトの名無しさん
2008/06/20(金) 20:09:510934デフォルトの名無しさん
2008/06/20(金) 20:24:29<<なんてアホらしくて使ってられませんよねー
0935デフォルトの名無しさん
2008/06/20(金) 20:25:41ただし、それはない。
0936デフォルトの名無しさん
2008/06/20(金) 20:26:54いくらでも新しい型を入出力に組み込めるんだから
<< >> の方が便利だろうが
0937デフォルトの名無しさん
2008/06/20(金) 20:31:11可変長テンプレートかなんか使ってprintfがもっと便利になって復活してくれたら
一生C++に付いて行くけど禿のことだから絶対ねえよなー
0938デフォルトの名無しさん
2008/06/20(金) 20:34:310939デフォルトの名無しさん
2008/06/20(金) 21:15:40俺も、昔は無理矢理iostream系使ってたけど、今はCスタイルがメインだ。
0940デフォルトの名無しさん
2008/06/20(金) 21:21:12boost::formatのことかな
可変長引数を使いたくない とか
クラス型のオブジェクトも扱えるようにしたい とか
仮想関数を強制したくない とか
いう
理由があったんじゃないかと妄想を膨らましてみた時期が俺にもありました
0941デフォルトの名無しさん
2008/06/20(金) 21:38:20GetBuffer 代わりに str.resize(size + 1); して、
char* p = &str[0]; に文字列を書き込んで
ReleaseBuffer 代わりに str.resize(strlen(&str[0])); してもいいのか?
0942デフォルトの名無しさん
2008/06/20(金) 21:48:480943デフォルトの名無しさん
2008/06/20(金) 21:54:11#include <iostream>
#include <string>
template < typename Char, typename Traits = std::char_traits<Char> >
class basic_bare_string
{
public:
typedef std::basic_string<Char, Traits> string;
basic_bare_string(string& str, typename string::size_type size) : m_str(str) { m_str.resize(size + 1); }
~basic_bare_string() { m_str[m_str.length() - 1] = '\0'; m_str.resize(Traits::length(&m_str[0])); }
operator Char*() { return &m_str[0]; }
typename string::size_type size() const { return m_str.length(); }
private:
basic_bare_string(const basic_bare_string&);
basic_bare_string& operator=(const basic_bare_string&);
std::string& m_str;
};
typedef basic_bare_string<char> bare_string;
typedef basic_bare_string<wchar_t> bare_wstring;
int main(){
std::string str;
try {
bare_string bare(str, 4);
strncpy(bare, "foobar", bare.size());
} catch (const std::bad_alloc&) {
}
std::cout << str << std::endl;
std::cout << str.length() << std::endl;
}
0944デフォルトの名無しさん
2008/06/20(金) 21:57:320945デフォルトの名無しさん
2008/06/20(金) 22:39:200946デフォルトの名無しさん
2008/06/20(金) 22:50:28const_cast するのは気持ち悪いし。
0947デフォルトの名無しさん
2008/06/20(金) 23:52:39非変更型の関数しかないけど
なんか理由あるの?
0948デフォルトの名無しさん
2008/06/21(土) 00:05:17immutableだから。
0949デフォルトの名無しさん
2008/06/21(土) 00:06:030950デフォルトの名無しさん
2008/06/21(土) 00:15:24boost::shared_ptr<string>でしか使えないわけだから
何かの拍子に書き換えられるとヤバイのかな。
stringでコピーして共有するか選ばなきゃいけないわけだ。
0951デフォルトの名無しさん
2008/06/21(土) 01:00:080952デフォルトの名無しさん
2008/06/21(土) 01:19:26immutableなコンテナはmutableにするための仕組みが不要だから高速化できる。
.Netのimmutable containerがそうだと断言はできないが、少なくともCocoaのFoundationはそう。
0953デフォルトの名無しさん
2008/06/21(土) 01:26:430954デフォルトの名無しさん
2008/06/21(土) 01:28:38コピーが発生するのは致命的じゃないか?
メモリ確保も発生する訳で。
0955デフォルトの名無しさん
2008/06/21(土) 01:33:47使いどころによる。mutableでも変更したら結局コピーやメモリ確保が発生する。
immutable containerの生成時は(それが他のコンテナに基づくものなら)内部データの参照カウンタを増やすだけかもしれない。
0956デフォルトの名無しさん
2008/06/21(土) 01:40:04.NETでは頻繁に書き換える場合はStringBuilderというものを使う
0957デフォルトの名無しさん
2008/06/21(土) 01:43:010958デフォルトの名無しさん
2008/06/21(土) 01:45:24使い分けてんのね。
0959デフォルトの名無しさん
2008/06/21(土) 10:10:530960デフォルトの名無しさん
2008/06/21(土) 13:33:270961デフォルトの名無しさん
2008/06/21(土) 14:42:030962デフォルトの名無しさん
2008/06/22(日) 14:48:03ドキュメント生成やリファクタリングのツールが作りやすくなるように。
0963デフォルトの名無しさん
2008/06/22(日) 15:06:180964デフォルトの名無しさん
2008/06/22(日) 15:10:050965デフォルトの名無しさん
2008/06/22(日) 15:12:54テキストマクロを廃止するのが第一歩だろうな…
0966デフォルトの名無しさん
2008/06/22(日) 19:42:57Javaみたいに味気ない言語になっちゃうなw
まぁ現状が残念なのは間違いないところだが
0967デフォルトの名無しさん
2008/06/22(日) 19:55:35それなんてD言語ってかんじだけど
0968デフォルトの名無しさん
2008/06/23(月) 09:21:040969968
2008/06/23(月) 09:23:39http://s3.amazonaws.com/dconf2007/WalterAndrei.pdf
0970デフォルトの名無しさん
2008/06/23(月) 10:06:47Dは全般的にセンスがダサイ。
0971デフォルトの名無しさん
2008/06/23(月) 11:17:19使わない.しょせん,modula2のようにいつのまにか忘れ去られてしまう言語.
0972デフォルトの名無しさん
2008/06/23(月) 11:34:10ライブラリにはまったく関心が払われてないな…
0973デフォルトの名無しさん
2008/06/23(月) 12:06:17inline関数と違うのはパターンマッチだけじゃん。
そのパターンマッチもtemplate並なんじゃ、
全体の機能はtemplateよりもずっと貧弱。
よくこんな思いつきを付け足す気になるな。
0974デフォルトの名無しさん
2008/06/23(月) 13:15:26concept_mapってキーワードは要らないんじゃないのかな?
コンセプトインスタンスごとに定義すればいいんだから。
0975デフォルトの名無しさん
2008/06/23(月) 13:17:37Lisp系言語のマクロの場合, 引数評価をコントロール可能なんで
マクロの意味があるんだが…
0976デフォルトの名無しさん
2008/06/23(月) 18:32:39スライドでは、シンボルに$をつけると展開後に名前解決をする、と書いてあるようだが。
0977デフォルトの名無しさん
2008/06/23(月) 18:43:10二つだけ使い分けられればいいんじゃないの?ようわからん
0978デフォルトの名無しさん
2008/06/24(火) 10:25:20待ってるうちにおら寿命が先に来ちまうでよ
0979デフォルトの名無しさん
2008/06/24(火) 23:25:05もうちょっと想定している文法などを含めてkwsk
0980デフォルトの名無しさん
2008/06/24(火) 23:51:18concept ForwardIterator<typename T> {
// なんだかんだ
};
concept ForwardIterater<int> { // concept_mapじゃなくて
// どうしたこうした
}
で十分じゃないかということ。templateがそうだもの。
0981デフォルトの名無しさん
2008/06/25(水) 09:25:29VSに付いてる。
0982デフォルトの名無しさん
2008/06/25(水) 16:51:280983デフォルトの名無しさん
2008/06/25(水) 16:52:470984デフォルトの名無しさん
2008/06/25(水) 17:02:250985デフォルトの名無しさん
2008/06/25(水) 20:37:260986デフォルトの名無しさん
2008/06/25(水) 20:57:35http://pc11.2ch.net/test/read.cgi/tech/1191754720/
があるから、これでいいんじゃね?
0987デフォルトの名無しさん
2008/06/25(水) 21:11:060988デフォルトの名無しさん
2008/06/25(水) 22:13:130989デフォルトの名無しさん
2008/06/25(水) 22:44:58http://www.open-std.org/jtc1/sc22/wg21/
wikipedia
http://ja.wikipedia.org/wiki/C%2B%2B0x
C++0x
http://pc11.2ch.net/test/read.cgi/tech/1149440647/
C++0x 2
http://pc11.2ch.net/test/read.cgi/tech/1191842951/
C++0x 3
http://pc11.2ch.net/test/read.cgi/tech/1204808027/
0990デフォルトの名無しさん
2008/06/25(水) 22:48:270991デフォルトの名無しさん
2008/06/25(水) 22:56:530992デフォルトの名無しさん
2008/06/26(木) 00:25:47http://pc11.2ch.net/test/read.cgi/tech/1214407525/
0993デフォルトの名無しさん
2008/06/26(木) 10:43:040994デフォルトの名無しさん
2008/06/26(木) 11:16:180995デフォルトの名無しさん
2008/06/26(木) 11:39:550996デフォルトの名無しさん
2008/06/26(木) 11:53:120997デフォルトの名無しさん
2008/06/26(木) 12:02:510998デフォルトの名無しさん
2008/06/26(木) 12:16:08実行時リフレクションはなくてもいいけど、
Dにあるみたいなコンパイルタイムリフレクションはほしい
0999デフォルトの名無しさん
2008/06/26(木) 12:25:471000デフォルトの名無しさん
2008/06/26(木) 13:20:23その発想は「ほげ言語のパラドックス」ですな。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。