[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 09:48 / Filesize : 166 KB / Number-of Response : 901
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++0x 3



1 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 21:53:47 ]
The C++ Standards Committee
www.open-std.org/jtc1/sc22/wg21/

wiki
ja.wikipedia.org/wiki/C%2B%2B0x

C++0x
pc11.2ch.net/test/read.cgi/tech/1149440647/
C++0x 2
pc11.2ch.net/test/read.cgi/tech/1191842951/


307 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:54:26 ]
_ を連続させられないようにすればいいだけだろ・・・そんなの。

308 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:56:11 ]
>>307
お前はマクロ引数の反省を全く学んでいないんだな

309 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:57:08 ]


310 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:57:27 ]
個人的にはどっちでもいい。(特に欲しいとは思わないけど、入っても構わない)
おまえらの執着心には感心する。

311 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:01:14 ]
導入されてる言語があって、そこで別に不自由ないんだから、
導入されても別に構わんだろ。
使いたくなきゃ使わなきゃいいんだし。

312 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:01:32 ]
ここは変態言語らしく1〜36進数までサポートしようぜ

313 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:04:42 ]
>>311
そんなのはC++の標準団体に言えよ
とりあえずそんな消極的な理由じゃ話にならない

314 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:06:41 ]
委員会に却下された理由ってなんなの?

315 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:06:53 ]
そういえば85進数でIPv6書こうっていうRFCがあったな



316 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:07:25 ]
おお・・・驚異の1進数・・・
でも、便利そうな状況はありそうな気がするから困る。

const char hoge[] = "abcdefg";
size_t btof =    0u11111;

とか。

317 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:07:52 ]
等幅で見て

318 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:14:30 ]
一進数は便利だ
数えれば幾つかすぐ分かる

319 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:17:40 ]
#define unitary(s) (sizeof(s)-1)

unitary("11111"); /* == 5 */

320 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:18:36 ]
unitaryじゃなくてunaryか

321 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:18:48 ]
そこはこうだろ・・・

#define unitary(u) (sizeof #u - 1)

unitary(11111); /* == 5 */

322 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:23:46 ]
今でも8進数の数字に8や9が使えちゃうことだし
0b入れたとしても中で2や3が使えることになってカオスになりそうだからいらない

323 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:25:36 ]
エラーになるけど??

324 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:26:17 ]
コンパイラが親切なだけじゃないの?
規格上はおkだったはず

325 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:34:45 ]
octal-literal:
 0
 octal-literal octal-digit

octal-digit:
 0 1 2 3 4 5 6 7

と書いてあるが・・・。



326 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:36:29 ]
あれ?
昔の話だったかもしれん。すまん

327 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:46:32 ]
K&Rの2版で8と9は使えなくなったと書かれていたが。

328 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 10:18:06 ]
C89の仕様ができるまでは、
そのへんルーズな処理系がいっぱいあってなゴホゴホ

329 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 16:44:18 ]
ビットマスクには2進を使いたいじゃんね

330 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:25:44 ]
15年前にアセンブラからCに移った時は欲しくて仕方なかったけど、
リテラル書くって、要するにマジックナンバー書くってことじゃん。
ダメ。
マクロなり変数なり関数なり、名前を付けてそれ使いなさい。
だから不要。

331 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:28:58 ]
その理屈だと整数リテラルはすべて禁止だな

332 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:29:05 ]
マクロ/変数(定数?)/関数が返す値をどうやって書くかという話なんだけどな。

333 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:35:07 ]
1ビットだけならマクロ使って何ビット目が立ってるか書いた方が分かりやすいが、
複数ビットある場合は微妙かもしんないな。

334 名前:デフォルトの名無しさん mailto:sage [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)」だとしても同じこと)

335 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:46:55 ]
64ビットの2進リテラルはきもい



336 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:46:59 ]
もう想像力の欠如した粘着の相手はやめようぜ

337 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:48:50 ]
ここは想像力の欠如した粘着と
想像力がありすぎる女子中学生好きのスレ


338 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:52:09 ]
なんで || なんだよー

339 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:53:22 ]
「1ビット目と3ビット目と4ビット目と9ビット目と12ビット目が立ってるか判定するときに
if(flg & 0b100100001101)って書ければ便利じゃん?0x90dって書くよりわかりやすいじゃんじゃん???」
ってのが0b厨の希望ということですね

規格に意見する前にもっとましなプログラミングスタイルを勉強した方がいいと思いますよ

340 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 18:02:14 ]
面白いキャラ設定に興奮するのはいいけど、
相手より先に自分が興奮してると馬鹿にしか見えないですよ。

341 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 18:10:57 ]
なんか自分を規格を策定する側にいると誤解して、必死に規格の正しさを言い張ってる
お子ちゃまがいますね

342 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 18:12:17 ]
お前ら>>257にも少しは意見を寄せろ

343 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 18:12:59 ]
まだやってるのかよ

344 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 18:16:54 ]
こうまで論争の余地のある機能なんだったら
だったら入れるだけ入れて、使うかどうかは実装者に任せるのが
今までのC++のスタンスとして正しい

345 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 18:34:27 ]
>>257
typeof(T+U) add(T, U)(t t, U u);

Dだとこうかな。TやUがstaticなopAddのオーバーロードを持ってると上手く動かないけど。



346 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 18:38:58 ]
美少女中学生にオーバーライド

347 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:06:18 ]
議論の余地ないだろ
入れろって言ってるやつが16進数表記では自分は読めないって以外の理由を
いまだ示せていないし

348 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:15:29 ]
それが最大にして絶対的な理由だとなぜ気づかないんだ

349 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:15:32 ]
読める読めないのみ議論の論点だと言い張ってる馬鹿が議論を放棄してるだけ
読める読めないが論点だと言うのなら、10進数表記以外に16進数表記が必要な理由でも説明してみろ

350 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:18:00 ]
論点もなにもただのスレ違いだろ

351 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:18:54 ]
プログラミング言語の全ての機能は可読性のためにあるんだよ
それがいらないって奴はBrainfuckでも使ってろ

0bが入ったって少なくとも可読性が下がることはない
だったら入れるべき

352 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:19:43 ]
>>349
ありません。
16進数表記を必要としている人は、10進数を脳内で16進数変換できない頭の悪い人だけです。
だから俺は要りませんよ、16進数。

353 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:19:54 ]
16進数が必要なのはコンピュータが2進数だから
そのコンピュータを低レベルで扱おうとしたとき16進数で書けた方が
人間にとって読んだり書いたりしやすくなる

354 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:20:45 ]
>>349
16進数表記はビット演算のためです
そして2進数表記も入るとすればビット演算のためです
同じ機能は2つもいりません

355 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:21:02 ]
勘違いしてるようだけど10進数と16進数は変換できないぞ
16進数と2進数はできるけど



356 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:21:53 ]
じゃあ8進数が(ry

357 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:24:10 ]
自説を曲げる気のない人にどれだけ言っても無駄じゃない?
なんか恐ろしく単純な人みたいだし

358 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:25:21 ]
0bが欲しいって言ってるやつは0bと0xの変換が計算が必要な面倒な作業だと思ってるんだろうな

359 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:25:42 ]
>>354
単項の - があるんだから、二項の - は廃止したほうが良いだろうね。
そのほうがシンプルになるだろう。

360 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:26:26 ]
でなければ>>352みたいなことは書けない

361 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:26:35 ]
p-> なんて贅肉。(*p). だけでいい。
p[i] もいらね。*(p+i) だけでいい。

362 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:26:53 ]
>>358
0bが要らないって言ってるやつは単純な二元論者だから、シンプルな人生が歩めるだろうね

363 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:27:06 ]
10進と16進の変換は下位桁の状況が上位にずっと波及するから計算が面倒
2進と16進は(2進の)4桁ごとに変換が閉じるから楽ちん

こうですかわかりません

364 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:27:55 ]
徹底的に無視される8進数カワイソス

365 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:28:07 ]
素人にも理解できる問題は盛り上がって良いね。
そろそろ専用スレでも建てようか?



366 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:28:40 ]
しかも読みやすくなるならまだしも長ったらしくて読みにくくなるだけだし

367 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:28:44 ]
>>361
p[i]はマジで害悪にしかなってないからなくなった方がいいと実際思ってる
まるでCに配列が存在するかのような幻想を初心者に与えて混乱させる元凶になってるだけ

368 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:28:59 ]
区切り入れられるようにすれば読みやすいと何度言えば

369 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:29:42 ]
ただの荒しだろこいつら

370 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:29:53 ]
>>367
バカすぎる・・・

371 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:30:46 ]
それで読みやすくなるコードが既に誤ったコーディングスタイルだってことも指摘されてるのに

372 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:31:17 ]
権威主義に落ちてるのさ。批判的精神を失ったら、もう技術者としては終わりだ

373 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:31:55 ]
一人で両方の意見を書いてるマッチポンプ野郎が2人くらい来ている気がする

374 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:32:02 ]
[]がなかったら宣言ができなくなる

375 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:32:07 ]
>>371
定数を定義するする地点で使うことに問題は無いと何度言えばいいのだろうか。



376 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:32:39 ]
>>368
何の機能もない表現をプログラム本文中に入れるのは問題だと思う
本文中の記号はプログラムの動作に何かをもたらすものでなければいけない
(使われ方次第では無意味になることもあるとしても)

377 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:33:36 ]
>>376
それで読みづらくなるんだったら意味が無い。ただのバカだな。

378 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:33:53 ]
>>376
おまえ、改行と空白を敵に回したな

379 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:34:10 ]
コメントも敵に回してるな。

380 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:35:27 ]
>>377
何の意味もない記号なんてものが(コメント以外に)ある方がよほど読みづらいわ

381 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:35:50 ]
>>380
そろそろ苦しいから諦めろ。

382 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:36:01 ]
>>378
トークンを区切るという立派な仕事があるじゃないか
0bの中のアンダースコアはそれすらないんだぞ

383 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:36:12 ]
>>376
ぜひ作ってくれ。
全てのトークンがプログラムの動作に影響を与える言語。

384 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:36:26 ]
盛り上がってきたね。いいぞいいぞ。どちらも負けるな。もっとやれ。

385 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:36:37 ]
>>382
Dでそれが問題になってるという話は聞かない。
ただの妄想に過ぎないな。



386 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:39:04 ]
>>383
C++は全てのコメント以外のトークンがプログラムの動作に影響を与えうる(もちろん与えないこともある)言語ですよ

0bの_は「絶対に」プログラムの動作に影響を与えない
0bXYと0bX_Yが違う意味を持つということはいかなる文脈でも絶対にない
無意味だと思わないか

387 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:39:41 ]
上のほうで書かれてた5ビットずつのRGBってのもビット列自体に意味はないから
こんなの使う必要ないと思うんだけど

388 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:40:30 ]
>>386
別に?

389 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:40:50 ]
>>382
自明的にトークンを構成する文字の前後に冗長な空白を入れるのは禁止したほうが良いですね

390 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:42:16 ]
>>386
「違う意味を持つということはいかなる文脈でも絶対にない」トークン列なんて無数に考えつくけど

391 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:44:22 ]
変数名内の _ の使用も禁止。
全部英小文字のみにしろということか。

392 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:44:34 ]
唯一使えるとしたらアイコンかなんかのパターンを記述するとき
ソースを見ただけでどんなアイコンか見当付きやすいってことくらいかな

他になんかある?

393 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:45:09 ]
>>390
いやいや、そりゃあるだろうよ
でもそのトークン列で使われている記号はどれも、別のトークン列の中でなら区別に貢献する可能性があるわけだ

0bの中の_という記号は、それがどんな数値定数の中でも区別に寄与しない
機能自体が全く無意味なんだよ
あるトークンの中で無意味というのとは次元が違う

394 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:47:22 ]
>>393
トークン間(空白等)は良くて、トークン内は許せないとする論拠は?

395 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:47:40 ]
何でそれがダメなのか明確な理由が述べられていない。
さっさと言え。



396 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:47:49 ]
>>391
D言語と同じようにするならその問題はない。

397 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:49:48 ]
変数名に使える文字に _ を含めてる時点で
プログラムの見た目は非常に重要な要素だということを
言語レベルで認定しているようなもんなんだがな。

398 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:52:17 ]
>>394
トークン間の空白はあるとないとで全く意味が変わる可能性があるじゃないか

ab /*「ab」という識別子*/
a b /*「a」と「b」という2つの識別子*/

_はあってもなくても絶対に何も変わらない

0b11 /* 10進数で3という数 */
0b1_1 /* これも10進数で3という数 */
0b____1___1_________ /* どう入れてみた所で3という数は変わりはしない */

_によって意味が変わることはどんなプログラムにおいても存在しない
だから無意味なんだ

399 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:53:35 ]
>>397
abとa_bとa__bは違う識別子です
0b11と0b1_1と0b1__1は全く同じ意味です

400 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:53:36 ]
int ab = 0;
int a_b = 0;
int a_b = 0;

意味は変わらないな。

401 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:54:07 ]
>>398
何故無意味か説明できていない。
早く説明してくれ。

402 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:55:35 ]
>>401
0bの中の_にプログラム的に意味がある場合がもしあるなら教えて下さい

403 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:55:40 ]
>>398
空白だって連続している場所では意味を持たない、そうでない場所では意味を持つ
'_' だって数値リテラルの中では意味を持たない、そうでない場所では意味を持つ(識別子等)

さほど大きな違いがあるようには思えないのだが。

404 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:56:46 ]
>>402
動作に違いが無いこととその存在が無意味であることには乖離がある。
なぜなら、プログラムはコンパイラだけが読むものではないからだ。

405 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:57:28 ]
>>402
特定の文脈(この場合は0bの後)でのみ意味を持たないってだけでは?



406 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:57:55 ]
>>401
398の説明で理解してもらえないとすれば
プログラム中の記号に「意味がある」というのはどういうことなのか
あなたの考えを聞かせていただきたい
可読性とか動作に関係ないことは除いてね

407 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:58:40 ]
可読性に意味が無いと言う >>406 のプログラムは
たいそう汚いんだろうな。

408 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:59:51 ]
そもそも必要あるの?
0b001_110_011 なんてやるより
(AAA | BBB | CCC) とかのほうが分かりやすいと思うんだけど

409 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:00:42 ]
>>408
場合によるのでは?
極端なケースは上で出てきたアイコンのデザインとか。

410 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:01:42 ]
ビットだけで考えてる人がいるようだが、
Dでは2進数に限らず _ を入れられるわけで、
長い10進数に区切りを入れるのもアリだ。

411 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:02:30 ]
>>406
お前プロジェクトで人の話聞かないで周りに色々迷惑かけてそうだな
>>376から続いてる話なのにどうして「可読性に意味が無い」なんて馬鹿な読み方が出来るんだ?

412 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:02:46 ]
move semanticsのディープな話題が出たときには沈黙してるくせに
おまえらって奴は

413 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:03:30 ]
頭のおかしい奴が話を引っかき回してるようなので一回寝る

414 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:04:44 ]
>>412
ムズカシイ話はワカラナイもん

415 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:04:57 ]
>>410
そういや、お金の計算だと三桁ごとにカンマを入れるなぁ。
カンマの代わりに"_"を入れることができると。
int yen = 100_000_000;



416 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:05:26 ]
>>403
確かにそう言われてしまうとそうなんだが
識別子中の_とリテラル中の_というのは全く別の扱いになる機能で
一方は全く無意味というのはどうなのかと

417 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:05:43 ]
たまたま開いたら面白そうな話してたから参加してるだけ
普段はどんな話してるのか知らない

418 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:06:25 ]
互換性的にはどうなの
__1とかって識別子になったっけ

419 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:06:48 ]
>>418
途中にしか入れられないようにすれば問題ない。

420 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:09:45 ]
・・・まさか >>413>>376 なのか・・・?
・・・ゴクリ。

421 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:14:09 ]
もうC++0bにしちゃえよ

422 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:16:00 ]
実際そうなりそうで怖い。2011年。

423 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:26:43 ]
そんなに無意味な表記が嫌いなら一生マシン語でコード書いてろ

424 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:33:18 ]
プログラミング言語自体、
マシン語のシンタックスシュガーみたいなもんだからな。
あくまでみたいなもんだけど。

425 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:36:17 ]
>>412
美少女中学生の話も食い付き悪くてさみしい




426 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:58:02 ]
>>425 昔から知的で美人の大学生のおねいさんの方がいいに決まってるんだが...


427 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 21:19:59 ]
>>425
そんなオバサンの話されても。

428 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 21:29:25 ]
構成された美少女中学生そのものが意味なのだ

パーツのどこそこに意味があるだのないだのとあげつらってみても
それらが集合して美少女中学生を構成しない限り意味を成すことはない

美少女中学生の一部分だけ見つづけると観察者はゲシュタルト崩壊を起こす
0b論も同じこと
いくら論じてもこの美少女中学生の現時点の美少女っぷりにはなんの影響も与えない

繰り返す
構成された美少女中学生そのものが意味なのだ

429 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 22:04:51 ]
それは脳内美少女中学生ってことで FA?


430 名前:デフォルトの名無しさん mailto:sage [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;

431 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:13:32 ]
10桁までしか使えないじゃんか・・・。
もっといいマクロならそこら辺に落ちてる。

432 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:16:57 ]
最低128ビットくらいは使いたいんだけど

433 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:18:04 ]
0bでスレが加速するってどんだけスレ違いなんだよ

434 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:22:48 ]
文句があるならそのマクロとやらを使ってとっととこのスレから出て行きやがれ

435 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:31:21 ]
ここはconstexprを使った例を出すべきだろ…
C++0x的に考えて



436 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:39:07 ]
どんな底辺プログラマが書き込んでるんだ?

437 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:39:51 ]
boost の static_assert は式版のがないのがうんこだな。
#define BOOST_STATIC_ASSERT_EXPR(b) ((void)(char(*)[(b) ? 1 : -1])0)
くらい用意してくれないと constexpr で困る。
・・・って、constexpr の引数って静的な値として認識されるんだよね?

438 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 01:03:38 ]
>>437
式版の有る無しで何が変わるの?

キャストやカンマ演算子は定数式にはなれなかったような気がするし、
静的な式なら評価タイミングも関係ないし、あんまり意味が無いような。

439 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 04:35:03 ]
#define 0B_00001111 0xff

440 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 06:56:57 ]
そうなのか・・・。
じゃあ constexpr の引数をチェックできないの?

441 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 10:27:41 ]
>>440
メタ関数書けば?
外向きに一段 constexpr 関数かませば使いやすくはなるかも。

442 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 10:44:57 ]
>>432
2進数を128桁も書きたいというお前がマレw

443 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 13:28:45 ]
static_assert の式版とかいうやつを使って
具体的にどういうコードが書きたいのかもうちょっとkwsk

444 名前:デフォルトの名無しさん mailto:sage [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; みたいなことができれば
面白いなあと思ってね。

445 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:37:44 ]
いまさらだけど、0b の話って、
www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf
が採用されたらさらに一般化されて解決されるんじゃないの?
誰も上で話に出してなかったけど ...



446 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:42:09 ]
ユーザ定義リテラルは誰か途中で書いてなかったっけ
つうか0bの話ししてる奴の大半はドラフトなんか読んでないんじゃね

447 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:38:21 ]
>>445
キモイ記法になるから組み込みにして欲しいって話だと思ってた。

448 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:21:30 ]
>>445
>>259を忘れないで。
たぶんこれのことだよね?

449 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:49:32 ]
>>259を理解できていたらここまでスレは加速しない。

450 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:23:02 ]
あれって入る見込みありそうなの?

451 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:23:26 ]
たぶん無理

452 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 03:11:10 ]
入ったとしても定義できるのはサフィックスだけだから
0bは無理なので厨はお気に召さないだろう

453 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 07:23:28 ]
別にサフィックス b でいいよ。

454 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 07:29:49 ]
#define b0 0
#define b00 0
#define b000 0
// ... 一つの数値に128通りの#define
// = 2^129個の#define

455 名前:445 mailto:sage [2008/04/15(火) 09:59:34 ]
すいません、アホな言い合いが続いていたので 259 を読み飛ばしてました。
でも constexpr って今の定義だとそんなに中にいろいろ書けないんじゃ?



456 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 18:47:23 ]
ループを手動でアンロールすればいいっしょ。

457 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 18:47:45 ]
ああ、配列アクセスしてる時点で無理なのか。

458 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:59:46 ]
N2378 と最新のドラフト読む限りでは
suffix しか無理ながら,とりあえず constexpr リテラル化はできるような?
>>259 みたいに for 文を使用 (して,かつ constexpr 化) することは
現在の提案ではできないみたいですけれど

459 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:27:15 ]
ようやくらしくなってきたが、未解決なのは変わらずか。

460 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 03:32:48 ]
constexpr unsigned char operator "b" (unsigned int value) {
 return (value % 10 != 0) | ((value / 10 % 10 != 0) << 1) | ...;
}

このくらいならできるのか?

461 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:28:12 ]
5bitしか扱えないけどね

462 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:36:04 ]
いつの時代の住人だ

463 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 11:24:41 ]
N2378 と N2588 に従うと以下のような感じになるとは思うんですが,
いかんせん以下をコンパイルして確認できる環境が存在しないので
間違いがある可能性が高いです.

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 を使いました.

464 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 12:22:30 ]
しかし、この例をみるにつけても C++0x は変態ですね

465 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 19:32:22 ]
これはまだ分かりやすい方だろ。



466 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:30:21 ]
美少女中学生は変態さん。なんと制服の下で身体を縄で縛って学校に行っちゃうのです

467 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:31:32 ]
マジレスすると疲れるだけで全然えろくも変態でもない。

468 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 23:03:57 ]
>467は人生の勝ち組

469 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 05:34:54 ]
0b狂がいなくなったら誰もいなくなった

470 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 10:36:22 ]
mailing2008-03読んでるけど、
0bで馬鹿らしくなって>>257くらいしか書き込んでないw

471 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 10:53:04 ]
美少女中学生は空を見上げ待ち続けている…

472 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:20:10 ]
C++0xで2進リテラルを作成するスレを別に立てたらどうだ?

473 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:22:39 ]
糞スレたてんなよ

474 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 01:15:32 ]
>>473
読まなければ良いのでは?

475 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 01:22:22 ]
糞スレを立てると無駄なCO2を排出することになります



476 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 01:31:12 ]
俺様のゲップに含まれるメタンガスに比べれば無視できる量だけどな

477 名前:デフォルトの名無しさん [2008/04/23(水) 08:11:49 ]
美少女中学生が排出したメタンを肺いっぱいに吸い込みたい

478 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:33:53 ]
つ (美少女の)硫化水素

479 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 12:15:45 ]
お前らスレタイ0x100回読め

480 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:33:01 ]
スレンダーでタイツの似合う美少女中学生が俺の嫁

481 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:35:18 ]
256回読みましたがわかりませんでした

482 名前:デフォルトの名無しさん [2008/04/26(土) 22:18:03 ]
>>481
美少女中学生について語ってはならないとは
スレタイにもテンプレにも書いてないんだが

# 個人的には平面の方が好きなんだけどな


483 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 23:25:12 ]
C++0xは3次元あるいはそれ以上の次元を持つとはどこにも書いていないぞ。
まあ2次元とも決まっていないがな。
#ん、C++タンの出番だな。

484 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 23:27:23 ]
N2582
新しい関数宣言方法(ラムダ式と同じ形にする案)
[]foo(int x) -> int { return x; }

485 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 23:30:30 ]
[] は大変キモいので、こういうマクロを標準で提供して欲しい。
lambda とかいうヘッダファイルを用意して。

#define labmda []
foo(lambda foo(int x) -> int { return x; });



486 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 23:33:19 ]
typo したがキニシナイ

487 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 00:49:50 ]
[] にはもう既に慣れちゃった

488 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 03:30:50 ]
委員会のキーワード忌避は強迫観念レベルだな

489 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 03:33:59 ]
それほど既存のソースが多すぎるのさ。
そこはしゃーないと思う。
でも、C99 の #define bool _Bool みたいに
互換性を保ちつつキーワードを導入するテクはもっと使ってもいいと思う。

490 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 03:48:53 ]
無名関数のおかげで無名構造体にコンストラクタとデストラクタを搭載できるようになりました!
大勝利ですね!

491 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 04:06:37 ]
一方ロシアはコンストラクタをthisで定義できるようにした。

492 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 11:12:49 ]
なんでlambda expressionのlambda-return-type-clauseって、
->を使うんだろ。
コロンじゃだめだったのかな。
たとえば、普通の関数も統一しようぜっていうN2582も、
こんな風に書けるのに。

[] func() : int
{
  return 0 ;
}

493 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 11:35:23 ]
#define : ->
は無理だったっけ ...

494 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 11:44:20 ]
>>492
見た目が違うだけじゃんw

495 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 13:33:02 ]
 [] main(int argc, char* argv[]) -> int
 {
  //...
 }




496 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:35:05 ]
>>492
コロンはコンストラクタの初期化子と競合しそうだな。

497 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:38:20 ]
コンストラクタでは戻り値の型がないから大丈夫じゃね。
文法的な紛らわしさに関してはまああるかもしれないが。

498 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:46:28 ]
ECMAScript4ってそんな感じじゃなかったっけ
いやだなぁ

499 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:30:15 ]
function func() : int { return 0 ; }
だったか。ECMAScript4は文法キモすぎて見たくもない。
いつのまにかコンストラクタの初期化子まで採用してるし。

500 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:35:51 ]
テンプレートもあるよ!
function func.<T>() : T { return new T(); }

501 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:35:43 ]
ぐはぁ

502 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:42:16 ]
しかしなぜ->なんだ
Haskellかよ

503 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 21:04:22 ]
プログラミング言語 Scala
pc11.2ch.net/test/read.cgi/tech/1205156417/

Scala違いだ移動しる・・

504 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:49:10 ]
returnでいいじゃんかよ
コンフリクトはないはずだ

[] func() return int
{
  return 0 ;
}

505 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:50:51 ]
なんかもうどうやってもキモいんだが。



506 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:52:00 ]
ラムダ式くらい 100% 型推論でやってくれ。

507 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:53:18 ]
そもそもどうしてラムダと形を合わせたいんだ
コピペのためか?

508 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:56:04 ]
関数型言語的には→なんだから、
->でいいんじゃないの?

509 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:58:39 ]
関数型言語的にどうかは知らんしどうでもいいが
C系言語的には->は昔からずっと間接参照演算子だ

510 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:13:55 ]
美少女中学生的には -> と [] はブラのホックの両端だから

511 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:26:17 ]
>>504
それ、俺も思っていたんだけど、
C++の文法としては、何か違和感あるよね。

ところで、@と$がC++の規格にないのは、何か理由があるの?

512 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:30:21 ]
[] int foo() { ... } で不都合があったから -> になったんだと思うが、
どんな不都合があったの?

513 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:50:13 ]
returnsのほうがいい

514 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:53:10 ]
>>512
(charからcharへの関数)を引数に取り(intからintへの関数)を返す関数
を引数に取り(charからintへの関数)を返す関数の型を、
C++03(「関数」は「関数へのポインタ」とする)とC++0xで書いてみてくれ。

515 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:58:27 ]
int (*(int (*(*)(char (*)(char)))(int)))(char) のことだよね?



516 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:10:24 ]
グロい

517 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:11:59 ]
まぁ現状十分汚い言語なんだから、
多少醜くなってもいいじゃん

518 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:14:30 ]
>>517
いいこと言うなあ。君のそのレスで俺の気持ちは吹っ切れたよ。

519 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:19:47 ]
[]([]([](char)->char)->([](int)->int))->([](char)->int)

520 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:22:09 ]
typedef char (*ctoc_t)(char);
typedef 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で作るべき

521 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 06:35:41 ]
>>519の方がわかりやすいが?

522 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 07:06:50 ]
>>519
これは従来のアナルっぽい記法よりは読みやすいな

523 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 07:15:37 ]
>>511
いまさらtrigraphやdigraphの要るような記号追加するのもねえ…ってことじゃないかと予想

524 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 07:38:26 ]
>>523
そういう理由なのかなぁ。
しかし、trigraphやdigraphって廃止しても、それほど互換性の問題も無いんじゃないかなとおもったりするんだけど。
西側の、なまじ7bitで全種類の文字を表せちゃったので、悲惨なことになっている連中も、
結局使ってないみたいだし。

525 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 09:39:20 ]
>>521
まずそんなものを書く状況自体が無いな。
あっても >>519 も読みづらいから typedef 使うわ。



526 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:51:29 ]
C++でtypedefを禁止したらどんなカオスなコードになるか見てみたい

527 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:53:44 ]
>>526
template メタプログラミングがかなり出来なくなる気が ...

528 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:58:25 ]
>>526
decltype と auto を駆使することになる

529 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 18:05:21 ]
あーはやくautoが欲しい

530 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 19:02:48 ]
正直、auto 以外、いらん。初期化もまぁあればいいね、程度だし

531 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 19:46:54 ]
ここまでいじっちゃうともう新しく言語作った方が早い気がするしな。

532 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 19:51:44 ]
Cとの互換性をとりつつ拡張するのに苦労してんのにそんな事言うなよ

533 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 20:12:56 ]
互換性無視できる
ネイティブディレクティブとか作ろうよ


534 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 20:36:05 ]
もう互換性なんかとっくにボロボロなのに今更何を

535 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 21:37:43 ]
>>530
初期化指定子で初期化指定が完了するのは美しいと思わんか



536 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 21:54:12 ]
なぁ、これは俺の思い過ごしかもしれんのだが

ヒープ領域って誰が管理してくれるんだ?

ラムダ返されて、それ引数に関数呼び出して
関数の中でグローバルに束縛されて... ... ...

でも, らむだはデストラクションしないとまずいんだろ?


537 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:07:15 ]
関数を動的に生成してるわけじゃないだろ

538 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:17:48 ]
536 に便乗で聞くけど、
例えば C# の場合、ローカル変数を参照するようなラムダ式書くと、
クラスが自動生成されて、ローカル変数参照がメンバ参照に置き換わるんだけど、
そういう状態になった場合、デストラクタはどこで呼ばれるの?

ローカルスコープ内でしか使わないラムダ式ならいいけど、
例えば、「ラムダ式を返す関数」みたいなの作っちゃった場合。

539 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:21:56 ]
そんなのローカル変数のポインタ返してるのと一緒だろ
クラッシュしても自業自得で済まされる話
C++はプログラマを全面的に信頼する言語ですよ

540 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:24:33 ]
>>537
あんまマジにシンタックス見てないんであれなんだが

こんな感じの関数書くとするやん?
f(x, y) {
return [copy x]lambda(y){+ x; ...}
}
この場合, x はスタックじゃなくてヒープに取るしかないと思うんだ

で,
g(f(1), f(2)...)
とかな感じで, 呼び出したら?
f が返す関数に束縛されてる x がコピーされた領域は誰が回収するんだろ?

と、思った


541 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:01:43 ]
ん、よくわからん。
スタックじゃないの?

542 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:04:43 ]
alloca() を思い出した

543 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:08:10 ]
new [...] (...) {...}
はないの?よくわからんけど

544 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:23:24 ]
ラムダ式は関数オブジェクトのシンタックスシュガー
なので、単なる一時オブジェクトとして生成されると思う

545 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:24:34 ]
関数から返せないということか。
何かエセっぽいな。



546 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:28:11 ]
C的に考えると、それでいい気がする。

547 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:30:37 ]
折角だからカリー化とかしたいのになあ。

548 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:31:35 ]
ラムダキャプチャーを参照でなく値(コピー)にしたら返せる
関数オブジェクトと同じ
でも、戻り値の型を特定できないかも、新シンタックスで可能?

549 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:33:07 ]
カリー化は手動だな

550 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:33:48 ]
>>544
となると、>>543 みたいな、ラムダ式をヒープに取るような構文が必要じゃない?
(スマートポインタ使うにしても、まずはただのポインタが要るし。)

それか、ラムダ式から生成される関数オブジェクトが
適切な operator = を実装しててくれるなら別にどうでもいいことなのかな。

551 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:37:49 ]
>>550
あっても困らないけど、なくても良いと思う
ポリモーフィズムは必要ないし、必要なら従来の関数オブジェクトがあるし

552 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:13:58 ]
本物のC++プログラマは動的解決をしない。
本物のC++プログラマはコンパイル時に解決する。
コンパイラでできなければ、プリプロセッサでやる。
プリプロセッサでできなければ、それはやる価値が無いのだ。

553 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:16:03 ]
new を入れたのが間違いの始まりだったんですね

554 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:30:05 ]
プリプロセッサ(笑)

555 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:36:14 ]
タイトルはどうなるんだろう。
「本物のプログラマはJavaを使わない」
あたりかな



556 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:36:39 ]
本物のプログラマネタが分からないのは
流石に本物のプログラマとは言えないな。

557 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:45:50 ]
本物のプログラマがわからなければ、そのネタは理解する価値が無いのだ。

558 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 01:03:02 ]
>>555
間違いなく言語と環境をごっちゃにした反論が帰ってきそうなタイトルだなw

559 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:38:19 ]
conceptがまだドラフトに入らないのが気になる
一番楽しみなのに

560 名前:デフォルトの名無しさん mailto:age [2008/05/04(日) 00:39:07 ]
独立wordingの方でまだまだ直しが続いてる。

561 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 18:01:34 ]
ここで聞くか、Boostスレで聞くか迷ったんだけど、
Unordered associativeコンテナの、bucket関連のメンバってなんに使うの?
規格読んだだけだと、どうもよくわからないんだけど。
あるキーがどのbucketに属するかのインデックスを返されたとしても、
実際のbucket単位に直接アクセスする方法って無いよね?
普通に要素へのイテレータしかないみたいだし。
そのどのbucketに入れられているかってことが分かって、ライブラリを使う側の人間にとって、何がうれしいの?

562 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:14:44 ]
>>561
begin(i),end(i) で local_iterator を取得できたような。
ハッシュの分散結果をどう使うかってことなので、カスタムハッシュ関数次第
じゃないか? まあ通常はあまり使わないかも

563 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:23:03 ]
どっかのbucketにばっかり入っちゃうようなデータで、そのせいで遅くなるようなときに
調査するためじゃねえの

564 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:27:20 ]
>>561
詳しいドキュメント読んでないから分からんけど、たぶん同一 hash 値だったら
同一の bucket に入ることが保証されるはずだから、次のような使い方ができる。

次の問題を考える:
 二次元平面上の点が大量に与えられる。これを前処理して
 新たな点 p が与えられたときに p に最も近い点を求めよ。

こんなときに、最初の二次元平面上の点に対して、ハッシュ関数を
(x座標値/1000)×(y座標値/1000) なんかに設定したコンテナを用意すると
元のデータが結構ばらけていたら、「同一 bucket 内に入るデータを全部調べる」
みたいなアルゴリズムで結構効率的に解ける。

565 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:59:38 ]
おもろい



566 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 20:46:02 ]
>>562
本当だ。
引数を取る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に入るとも規定されてないよね。

あくまでハッシュという名称を使っているだけで、実装じゃないし。

567 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 21:01:51 ]
境界の違うハッシュを2つ使えば?
(x/1000)*(y/1000) と ((x+500)/1000)*((y+500)/1000) みたいな

568 名前:564 mailto:sage [2008/05/05(月) 21:33:30 ]
>>566
bucket の番号を用いる例のためだけに、アルゴリズムの細かなことを書くのは
面倒だったから、本当に方針だけを書いたつもりなんだけどなあ。


まず、点を含む領域以外も見ないといけないのはそのとおりで、
ちゃんとやるには、点を含む領域から近い順に探索することになる。
(それまでに見つけた最も近い点までの距離を覚えておき、
 見る必要のある領域を限定していく)

見る領域に対応する bucket の番号は、領域の座標値が分かっているのだから
領域座標 → ハッシュ を計算してやった後に ハッシュ → bucket 番号と取得する。
このとき、隣接領域で bucket 番号が隣接している必要はない。

詳しいことは、適当な計算幾何学の本を読んで欲しいところ。
こういうのはバケット法などの名前で知られている割と標準的な技法。

569 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 21:36:55 ]
えぴが陰毛茫々じゃないから
進みが遅いと思う

570 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 21:40:38 ]
>>566
いや、だから規格では、同じハッシュ値のキーが同じbucketに入ってるって事ぐらいしか、
規定されてないような気がするんだけど。
似たようなハッシュ値が同じ、あるいは近いオフセットのbucketに入っているかもしれないとは書いてない。
そりゃ、大抵の実装はそうなるだろうけど。


571 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 21:40:59 ]
間違えた、>>568

572 名前:デフォルトの名無しさん [2008/05/05(月) 22:01:44 ]
>>561
cpplover.blogspot.com/2008/05/c0xunordered.html

573 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 22:05:07 ]
>>570
似たような点を同じハッシュにするって話じゃないの?

574 名前:564 mailto:sage [2008/05/05(月) 22:10:03 ]
>>570
なんで似たようなハッシュ値が近い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) を実行することがこの操作に対応する)

575 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 22:34:13 ]
で、0x関係あんのか



576 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 22:41:03 ]
>>574
関係ねーだろ10000回染んで来い


577 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:41:50 ]
そんなにdelete thisできないな

578 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 00:17:58 ]
>>570
つうか、一体何が疑問なんだ
同じハッシュ値のキーが同じbucketに入ってるって事が規定されてりゃ十分だろう
同じハッシュ値になるようにハッシュ関数を作れば同じbucketに分類されるんだから

579 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 05:45:07 ]
ああ、なるほど。
似たようなキーを同じハッシュにするのか。
それで(x座標値/1000)×(y座標値/1000)だったのか。

580 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 21:04:03 ]
レベルが高すぎてよくわからん

581 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 21:05:26 ]
そんなに高くないよ
情報系の学校入れば絶対習う程度

582 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 21:26:48 ]
学無くても考えれば分かりそうな。

583 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:06:41 ]
修学旅行での温泉の脱衣場の洗濯カゴみたいなもんだ
一つのカゴで一人の美少女中学生をイテレートできる
美少女中学生は控えめだから棚の下の方にハッシュされてるという寸法さベイベ♪

584 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:08:43 ]
下着がなくなってたりするんだな

585 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:54:27 ]
露骨なエロで興奮するあたり、それらが控えられた萌えに欲情する若者とは違うという部分がみえみえなスレだな。
勢力の足りないおっさんが無理にネタ振らなくても良いんだぜ?つまらないだけだから。



586 名前:デフォルトの名無しさん [2008/05/07(水) 02:20:45 ]
age

587 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 03:27:54 ]
>>585
つまらない。

588 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 09:42:13 ]
どうでもいいよ

589 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 03:55:48 ]
ここんとこ寒いね

590 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 04:05:16 ]
うんそうだね

591 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 04:34:23 ]
今までが暑くて相対的に寒く感じるだけ。
平年並みだろ。

592 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:41:35 ]
それだけ暑いのが続けば「平年並み」の気温も底上げされててもいいんだがなあ。

593 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:02:04 ]
平均気温は過去20年のデータで計算するから、20年間で急激に気候が変動してると追いつかない。
そんだけ温暖化が深刻ってこったな。

594 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:45:41 ]
strong typedef って入るんだったっけ?

595 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:32:54 ]
ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2141.html
これか?
入る見込みは無さそうだねぇ。

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でもつかっておけば。



596 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:20:55 ]
strong typedefってどういう物?
usingとかとは違くて?

597 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:41:23 ]
typedef元とtypedef先が別の型として扱われるというtypedef。

598 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:43:10 ]
C++09 になってんのか、もう。

599 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:58:14 ]
え、まじ?

600 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:12:18 ]
あ、いや、ちゃうわ。ごめん。

601 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:19:45 ]
>>597
それあったらテンプレートがまたワクワクするものになりそうだな

602 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:38:47 ]
数値型の暗黙の変換はC/C++の型システムの穴だから
strong typedef でまずその穴をふさぎたい

603 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:43:14 ]
そんなもん別に機能にしなくてもこれでいいんじゃないの

class AnotherType : public Type{
private:
 operator Type(); //実装しない
}

604 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:44:25 ]
そんなこともできるのか。それは欲しい

605 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:11:50 ]
intとかでもやりたいんでは



606 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 22:50:15 ]
実装あるもんなw

607 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 23:24:53 ]
もう#define int nanikaしろよ

608 名前:デフォルトの名無しさん mailto:sage [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();
}

609 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 07:37:07 ]
手抜きをするためのものなのに、メンバがコピーされないようじゃ意味がない。

610 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 10:29:55 ]
mailing 2008-05 きてるお

611 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:09:49 ]
^ω^

612 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:32:56 ]
>>610


613 名前:デフォルトの名無しさん mailto:age [2008/05/21(水) 12:37:34 ]
コンテナとかSTLがみんなconcept化されてる!

614 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:42:31 ]
ドラフトは N2606

615 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:48:01 ]
www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2601.html
がスゲイ




616 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:04:02 ]
C99と同じ感じになったりしないの?
現行のC++から、この仕様のC++にキレイに置き換わってしまう?
また、複雑難解怪奇な文法を覚え直さなければいけないの?

617 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:49:37 ]
>>616
GCCだけでなくVC++も実装してくると思う、現にTR1も対応しているし。
C99よりは広まると思う。

文法はどうしようもないな。現在でも複雑怪奇なんだから
今さら少しくらい増えたってどうってことないって構えをしたほうがいいかも。


618 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:50:26 ]
better C++03 として使う人が多そうな予感。
auto とかは使うけど・・・って感じ。

619 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:38:48 ]
ぶっちゃけC++が廃れる要因になるだけな気がしないでもない

620 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:49:42 ]
化粧を覚えたてでちょっと厚塗りしてみた美少女中学生のような感じだな
化粧のナイステクを見つけるのが先かこっちが見慣れるのが先かというところか

621 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:21:56 ]
今はネイティブで代わりがないから C++ 一択だけど、ObjCを綺麗にしたようなクラスベースの
言語があれば、もう C++ にこだわる気になれないなぁ。うんざりする

622 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:36:41 ]
Cに速度的な最適化を期待したのが間違いだったんだ。
やるならfortranを++すれば良かったのに。

623 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:38:00 ]
>>622
そこで Fortress ですよ

624 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:35:21 ]
>>621
だからD言語を使えと(ry

625 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:36:59 ]
>>623
あれは数値計算用途以外では使いたい文法でもないけど・・・
それ以前に、なかなか開発進んでなくね?



626 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:40:30 ]
>624
GC がいらない

627 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:09:24 ]
>>616
(ほぼ)今のままのコードで動く。

628 名前:デフォルトの名無しさん mailto:age [2008/05/21(水) 23:10:26 ]
>>626
GCありというか明示的メモリ管理なしのC++ってもの使ってみたい。
DとかJavaじゃなくて、まっとうなC++で。

629 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:25:00 ]
>628
だが、リソース管理は結局自前だろ
ファイナライザは入れないんだよな

630 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:45:13 ]
>>618
現行でC++03としても使えてない奴の方が多いからな
その辺はしゃーない

631 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:04:12 ]
サブセットでヘッダの要らない仕様を作ってくれないかな。
どうせ、プリコンパイルヘッダみたいな事やるんだから、
.cppをプリコンパイルして参照解決したっていいじゃん。

632 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:09:22 ]
そうやってサブセットのスーパーセットを考えてるうちに C# になってしまいました

633 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:12:52 ]
>>631
モジュールシステムを設計しなおすことになると思う

634 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:49:18 ]
仕様を作るのはいいけどさ、
とりあえずその前にほとんどのコンパイラベンダに言いたいんだが
export を実装してくれよ!

Comeau 以外どこか実装してんの?

635 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:51:43 ]
実装が大変な割に大したメリットがないからじゃないの



636 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:54:50 ]
exportの実装がめんどうになった時点で分割コンパイルなんてあきらめればよかったのだ

637 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:59:03 ]
extern inline なんかどこも完全実装できてないしな
Comeauでさえ

638 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:51:17 ]
>>615
提案しているのが Lawrence Crowl だし,ほんの一瞬とはいえ
本気にして「なんだ!?とち狂ったのか!?」とか思った俺涙目www

639 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 05:58:24 ]
>>638

ま、いつか入るかもな。競合は大丈夫そうだし。
16進浮動小数点数リテラルとか知名度低いのもあるし、こっそり紛れてても誰も騒がないでしょw

640 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 18:12:45 ]
ASCII外の字をプログラム本文に持ち込むことをあっちの国の人らが許すはずがない

641 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:20:22 ]
コメント文字列をプログラム本文とみなすかどうかだが
普通にやってるとチェコ語だかでパース失敗しなかったか?

642 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:26:27 ]
なんだそりゃ。
まさかチェコ語は、スラッシュやアスタリスクにまで独自の文字を割り当てているのか?

643 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 20:05:42 ]
チェコ語ということはutf-8か?
-Ku は当然付けてるよね。

644 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:06:45 ]
コメントに??付けるだけでおかしくなります

645 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:02:47 ]
もう APL になったつもりで変な字いっぱい使おうぜ



646 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:46:19 ]
トリグラフも迂闊に追加できないこんな世の中じゃ。

647 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:01:50 ]
つまりクアッドグラフが求められる時代になったということですね

648 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:42:00 ]
concept 使った for_each がこう提案されてる
auto がこんな使い方できるんだ

template<InputIterator Iter, Callable<auto, Iter::reference> Function>
Function for_each(Iter first , Iter last , Function f );

役立たずだった auto が大人気だ

649 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:46:41 ]
大人気で広まる

恐ろしい副作用が見つかる

カオス

の黄金パターンですね、わかります

650 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:04:34 ]
>>639
十六進浮動小数点数は、C99由来だから知名度低くても余裕で入るだろ、たぶん。

651 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:17:23 ]
concept のようなメタタイプを持つ言語がほかにあるんでしょうか?
Haskellのほかに
静的型付言語で

652 名前:デフォルトの名無しさん mailto:age [2008/05/24(土) 03:58:02 ]
>>651
conceptの型理論を書いた人たちがGってのを作ったよ。
他にはない。concept_mapみたいなglueがあるのは。

653 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:43:16 ]
conceptの一番の利点はコンパイル時のエラーメッセージ

654 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:39:46 ]
>>653
concept_mapを理解してないね。

655 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:41:52 ]
今度はコンセプトメタプログラミングの時代ですか



656 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:44:38 ]
自然な流れじゃないかな
ジェネリックス系としては

657 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:23:27 ]
そしてC++1xでは
コンセプトの型を規定するスーパーコンセプトが目玉機能になるんですね
わかりました

658 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:32:03 ]
滅多metaな超言語それがC++1x

659 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:10:08 ]
C++ 捨てて別言語使った方がいいんじゃね?
と、マジで思う今日このごろ


660 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:11:07 ]
そんなあなたにC++0x。 もはや別言語だから。

661 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:12:28 ]
まともなC++0x処理系ができるまでは暫く離れるのもいいだろうな

662 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:18:31 ]
C++3xで会いましょう

663 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:09:52 ]
namespaceスコープでアクセス制御が出来たらいいと思わね?

namespace hoge {
private: void priv();
public: void pub() { priv(); }
}
hoge::priv(); // error

664 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:20:34 ]
>>663
入れ子にした無名 namespace で代用できない?

665 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:44:37 ]
>>657
concept はコンセプトをパラメータにとることが出来るのでメタコンセプトは必要ないと思う



666 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:46:20 ]
無名にしなくても、boostの
namespace detail {
はそういうことやってるんだわな。
>>663はスロット単位でやりたいんだろうけど。

667 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:02:23 ]
>>654
「自尊心はあっても自信が無い」から、衝動で突っ込むけど説明添える勇気は無いんですね、わかります。

668 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:51:48 ]
整数のイタレータのサンプルコード見ればいいんじゃない? > concept_map

669 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:01:51 ]
autoとcenceptでC++も分かりやすい言語になるかなあ。

670 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:04:22 ]
ならんね

671 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:13:27 ]
そもそも、現行C++も分かりやすい言語にするために
突っ走ってきたという面が多かったと思う、D&E読んだ直後の感想。

しかし、現実はと言うと……。
0xも同じ道を辿るに違いない。

672 名前:デフォルトの名無しさん mailto:age [2008/05/24(土) 18:17:27 ]
>>671
> 分かりやすい言語にするために

皮肉とかじゃなく、そうは思えません。
やはりCとの互換性を抑えた上での、実行効率をメインに考えてきたと思います。

673 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:21:59 ]
>>665
kwsk

674 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:42:42 ]
Perl6 の二の舞になる、なんてことはないよな。あはは

675 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:42:58 ]
>>673
やっぱ出来ねえや
勘違い



676 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:09:08 ]
最近は使う人にやさしくなってきてるよね

つらいのはコンパイラベンダやライブラリベンダ

677 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:21:53 ]
ここまで巨大仕様になるともう新規参入とか不可能だよな

678 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 08:48:19 ]
GCCからforkすればいい。

679 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:55:43 ]
現行の auto って型名のかわりに
auto i = v.begin();
みたいな書き方をする以外に使い方ありますか?

680 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:07:49 ]
型名の現れうる場所全てに現れて
福音と混沌をもたらします

681 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:05:28 ]
>648

682 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:13:09 ]
自動変数の宣言

683 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:13:47 ]
使うだけの人間としては規格の議論より処理系がいつできるかの方に興味がある

684 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:57:30 ]
規格書いてる奴らが作る訳じゃないからな
2020 ぐらいじゃね?

685 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 09:04:38 ]
だが実装可能性ぐらいは考えて欲しいんだぜ。



686 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 15:41:55 ]
もう委員会が「完全準拠のコンパイラを最初に作ったチームに賞金」でいいだろ。
商用コンパイラとかだとその賞金が売り上げを下回るっていう可能性もあるから、
MSの無償配布してるものと同じ様なライセンスでなければいけないとかいう条件をつけてさ。
そうすれば販売方法を確立できない個人でも目指す事ができるし、万が一先を越されてしまっても
その場合は販売すれば良い。

687 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 15:53:55 ]
C++03の下位互換性から考えると、exportも必須なわけか?
そんな非現実的で理想を追求した完全準拠のコンパイラは、まず実用にはならないと思われる。

688 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:07:34 ]
外部テンプレートなんかさっさと規格からぶち殺して
貴重な予約語exportをもっと他の有意義なことに使えるように努力すべき

689 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:47:46 ]
>>686
個人でやれるような範囲の話ではない

690 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:16:07 ]
MSがバイナリインデックスの並び順で特許取っててそこをCOMに使ってるから無理
テーブルを先頭に持ってくるんだったか程度のもの

691 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:22:03 ]
特許なんてそのうち切れるさ

692 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:23:11 ]
vtblを頭に持ってくるって話?
ABIだと思ってたが、特許なのか?

693 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:46:26 ]
>>684
Conceptは、Douglas Gregorが規格も処理系(ConceptGCC)も書いてるよー。


694 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 00:25:18 ]
そのGCCではあのクソ気持ち悪いラムダ式とかもコンパイルできるのかい
だったらちょっと試してみたい

695 名前:デフォルトの名無しさん mailto:age [2008/05/29(木) 06:43:01 ]
これはconcept branchだから、
他の新標準機能は入ってないよ。
gcc.gnu.org/projects/cxx0x.html
lambdaはgcc headで実装始まってるはず。



696 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 08:49:35 ]
>>686
2100頃までC++は生き残るわけですね分かります

697 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 11:46:02 ]
std::*Integralが、
std::*IntegralLikeになってやがる。
FloatingPointLikeってなんだよ
// Revision 1の頃から変わっていたのか


698 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 13:39:48 ]
C++0xはそろそろJavaの時のような誇大広告を始めて盛り上げるべき。

699 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 13:52:25 ]
どんだけ人集めてもmove semantics見たらみんな引くって。
大衆には見向きもせずプログラミング言語の実験室として頑張っていただきたい。

700 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 14:03:10 ]
もはや C++ 自体が大衆向けじゃないよな。
でも、必要としている一部の人間のために頑張って頂きたい。w

701 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 14:05:12 ]
まずはまともな処理系を、話はそれからだ

702 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 14:11:26 ]
Move SemanticsとかVariable TemplateとかConceptとか、
ライブラリを書く奴のための機能だから、
一般ピーポーが覚える必要は無いんじゃない?

とは言ったものの、どうやって実装しているか分からないと、
俺としては、使う気にならなかったりするから微妙だ。

STLヤベー、超便利ー。

イテレータとか関数オブジェクトとか分からん。勉強するか。

いわゆる、STLの解説本とかではまともに説明されてねー。何コレ。

テンプレート解説本なら詳しく載ってる。やっべ、スゲー詳しい。面白れー。

Boostたのしー。

あれ、当初の目的って何だっけ?
STL? デザインが貧弱すぎじゃね? あれって。


703 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:25:03 ]
素人の人たちに受けのいい機能も少し追加されたんじゃない。
auto とか。

704 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:26:10 ]
conceptだってコンパイル・エラー見やすくなるしね。


705 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 04:01:49 ]
今回は入門者のためにもなる改良がたくさんあるとどこかで聞きました



706 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 14:58:46 ]
c++であと10年は持つのかな
すでにフォートラン化しはじめてる?

707 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:44:53 ]
当分、いろんな意味でC++を越える言語は出てこないだろうな。

708 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 20:08:45 ]
export イラネ
予約語から外してほしい

709 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 20:23:20 ]
export の実装って結局二度以上同じソースをコンパイルしてるだけだからな
prelink 工程というのがあってそこで全部解決するまで再帰的にコンパイルしつづける

関数がインラインにならないという効果はあるがそれ以上の利益はない気がする

710 名前:デフォルトの名無しさん mailto:age [2008/06/05(木) 21:53:24 ]
>>706
FORTRAN 77とは全然違う。
FORTRAN 77は数値計算の世界では現役のまま陳腐化した。
C++0xは現役のまま最先端を走り続け、プログラマを置き去りにし続けてる。

711 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:55:37 ]
置き去りかよw

712 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:04:19 ]
道を踏み誤りつつあるマッドサイエンティストみたいなもんだな

713 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:04:26 ]
exportは後々autoみたいに役に立つ日がくるのでほっといてやってください


714 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:53:05 ]
>>710
> C++0xは現役のまま最先端を走り続け
「他言語に出来ることが出来ないので悔しい」
って、入れた機能がほとんどじゃないかい?


715 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:53:25 ]
>710
Fortran2008は結構強烈だぞ?



716 名前:デフォルトの名無しさん mailto:age [2008/06/05(木) 23:00:35 ]
>>714
conceptはHaskellだけじゃない、似てる機能があるのは。
しかもそれは後から分かったことだし。
traitsを置き換えるために生まれた。

move semanticsだってかなり狂ってるしね。
明示的なメモリ管理がある言語で導入するとは。

717 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:50:13 ]
C++ はあまりお作法がない言語だったと思っていたんだが、今は作法が大杉って困る

718 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:03:11 ]
意味が不明瞭だ
お作法って具体的にはどういうこと?

719 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:01:23 ]
>>713
registerもいつか役に立つ日が来るのでしょうか?

720 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:06:07 ]
>>715
Fortran2008のco-Arrayなんて、
Crayの実装の後追いじゃないですか。
C++0xなんて規格が独走状態ですよ。
一緒にしないでください、失礼です。

721 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:45:38 ]
>>718
俺のエスパー能力を駆使すると、パラダイムをお作法と訳してるんじゃねーの。
禿げ曰く「C++はマルチパラダイム言語だ」と。
パラダイムがないつーか、ひとつに縛らない言語だがな。
パラダイムが何も無いのがすばらしいなら、ifとgotoだけでいいじゃねーかと。

722 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 16:09:13 ]
規格を崇拝するお前らに楽しい問題。

class 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

これをもうちょっと人間的にするために、
なにかプログラマが優先順位を指定できるような機能はつくれないのかな。

723 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 16:39:20 ]
暗黙的に呼ばれる変換コンストラクタに依存するのはよくないってのは有名な話じゃね。
だれしも一回は引っかかる罠だけどね。

724 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:49:35 ]
その辺いじくるとスマートポインタが軒並みぶっ壊れるから
触れないし触らない方がいい

725 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:52:57 ]
つ f(string("Hello"), string("Goodbye"));





726 名前:デフォルトの名無しさん [2008/06/06(金) 18:45:45 ]
正直ついていけてません。すみません orz


727 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 19:38:40 ]
>>719
もしかしたら、&の使用を制限する目的に使えるかもしれない。
例えば、register int foo して func(& foo) したらエラーになるとか。
で、参照渡しができるのなら、ポインタの使用を禁止できることになる。
# 意味が違いすぎるなw


728 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:37:33 ]
俺も最近まで register に & を付けれないと思ってたけど、
C++ では付けれるらしいよ。

729 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:42:27 ]
もうラムダ式のキーワードにregister使ったらいいじゃん
どうせ予約語の意味なんてメチャクチャなんだから

730 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:42:58 ]
何度も言うようだが inline がいいと思うお

731 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:45:01 ]
却下されたんだろそれ

732 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:47:45 ]
やっぱり解析が凶悪になるからか。

733 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:20:43 ]
>>731
だれか提案したの?

734 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:45:36 ]
ここの誰かが突撃してはいはいワロスワロスされた

735 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:57:33 ]
キチガイ度で言えば現状もどっこいどっこいだと思うだけどな。



736 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:32:07 ]
最初から頭の使い方が足りなくて狂ってるとしか思えないのと
考えに考えた末に発狂するのとでは筋が違うと思う。

737 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:42:24 ]
オーバーロードは罠が多いから・・
特に特殊化と混じったりするとわけわからん

738 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:54:55 ]
>>734
それどこで?
comp.std.c++ と comp.lang.c++ と流し読みしてるけど、とりあえず見覚えが無い。

739 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 01:11:13 ]
inlineも規格化前に勝手な独自拡張でクチャクチャに使われてきた経緯があるから
あまり触れたくないよな

740 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:41:12 ]
inlineってどうするの?

m = inline (auto x, auto y) { return x > y ? x : y; } (10, 20);

とか?

741 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:23:44 ]
無名関数をinlineと呼ぶのはすげえ違和感がある

742 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:35:49 ]
__lambdaとか_Lambdaでいいからキーワード追加してくれよ。
適当に#defineして使うからさあ

743 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:21:55 ]
別に _Lambda だろうが [&] だろうがいいけど
とりあえず #include <lambda> をくれ。

744 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:07:30 ]
C++03 の extern inline って C++0x にまだ残ってる?

745 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:24:25 ]
>>722
でどっちが呼ばれるの?

ふつーに考えて1でしょ?
(ブーッという音が聞こえてるようだ)




746 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:31:18 ]
失礼、答えつけててくれたんだね。。。
んで、pointer-to-boolなんて知らなかったので、さらに調査中。
昔はほんとにC++好きだったんだけどな。今は規格がぎしぎししてるね。

747 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:31:18 ]
その馬鹿げた変換を何とかするためのnullptrだが
全然何ともなってないといういつものパターンなんだろ

748 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 19:25:05 ]
もうポインタと整数
整数とbool
は互換禁止にすべきだな

やりたきゃ明示的にキャストしれと

749 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 19:27:18 ]
if(smart_ptr)が出来なくなるとブーたれる奴らが強硬に反対するので無理です

750 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:17:32 ]
それは暗黙的変換とは関係なくね?

751 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:18:01 ]
NULL と比較しろよ・・・。
ただ、if (T* p = dynamic_cast<T*>(q)) { ... } がやりたいので
無くなると困る。

752 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:47:28 ]
「さらば、式の中でも変数を定義できるようにして進ぜよう!」

753 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:45:57 ]
なんでよりカオスな方向に解決するんだよw

754 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:27:43 ]
オカス!?美少女中学生を!?

755 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:42:09 ]
>>751
は?C++でNULLなんて使うなよ。0を使え。



756 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:48:56 ]
これからはnullptrだろ常考

757 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:34:52 ]
nullptrなんて意味ないよなぁ
どうせ変数に入れたら0と区別付かないからやりたい放題なのに

758 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:41:26 ]
>>755
NULL をどう定義するかは処理系定義で、
整数変数に代入しようとした時に警告出してくれるように
定義してくれてるかもしれないというのに
何で 0 なんて使わないといけないのか。

759 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:42:55 ]
>>758
Effective C++ を100回読め

760 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:49:27 ]
NULLを0以外でdefineしてるC++の処理系なんてものがあったとしたら
今すぐ叩き壊した方がいいよ

761 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:58:26 ]
C++では、マクロを使わない事を推奨されている。なのでNULLよりも0を使う方が綺麗。
もちろん、C++はある程度「綺麗」なスタイルを提示しながらも、そうじゃないスタイルを拒絶することはしない。
better Cとして、例外を使わなかったり、templateを使わなかったり、NULLを使っても良い。
ただし、それが推奨されているわけではないことは覚えておくべき。

762 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:08:51 ]
>>760
g++ は __null で定義されているが・・・。

763 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:35:32 ]
NULL 使ってる人は毎回 cstddef あたりを #include してるのか?

764 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:00:50 ]
>>761
enum{NULL = 0};

765 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:03:49 ]
<template T>
T *NULL(){
 return 0;
}



766 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:04:54 ]
NULLより0ってのは、
Effective C++以前のC++ FAQの時代からの常識。
>>759
情けない…このスレに来るのは十年早いよ。

767 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:20:10 ]
>>763
NULL は結構色んなヘッダファイルで定義されてるので
cstddef をインクルードするまでもないことが殆ど。

768 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:24:44 ]
Effective C++ と C++ FAQ の説明内容に違いはあるの?お爺様

769 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:28:50 ]
相変わらず破綻してる言語だな

770 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:29:45 ]
>>765
それだとメンバへのポインタに対応できない気がする。

771 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 08:42:09 ]
定期的に低レベルの話題で荒れるな

772 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 08:50:23 ]
>>767
実際のコンパイルでエラーになるまで対応するヘッダをインクルードしないってこと?
ライブラリの実装に依存してそうでイヤじゃない?

773 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 09:37:26 ]
>>771
低レベルの質問にはよく答えられる低の高くらいのレベルの人が多いんですよ。
おいらも含めて。w

774 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 10:47:54 ]
低の高っていうと
エントリーモデルの中で頭一つ出た商品みたいで所謂人気商品ってイメージ

775 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 11:16:08 ]
ある意味正しいな。
今は、プレミアム系商品の人気が高くなっている辺りも含めて。



776 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:01:46 ]
C--

777 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 15:27:35 ]
>>776
廃れたね。
JVMもCLRもなければ主流になったかも知れないのに。

778 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 16:32:19 ]
>>772
規格でどのヘッダがNULLを定義してるか決めてあるでしょ。

779 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:05:26 ]
>>772の言っているのは、
使うなら、定義されてるヘッダを必ず明示的にインクルードしないと、
コンパイル通っても、実装依存なコードだってことでしょ。
実際多いよね、そういうコードは。
実装上の都合による孫インクルードに依存しているコード。

780 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:37:45 ]
>>779
多いね。
うっかりやることもあるので、ちゃんと警告するシステムが欲しい。
(あるのかな?)

781 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:43:48 ]
NULLはプリプロセッサマクロだから使うなと言う舌の根も乾かぬうちに
#includeの話題で盛り上がってるあたりC++の病巣がよく表れている

782 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:45:27 ]
#include を使わずに済むしかけを入れて欲しかったな>C++0x

783 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:50:06 ]
シンボルだけを読み込む機能は確かに欲しいが、
いまさらC++に入れるくらいなら俺はDを使うわ。

784 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:52:09 ]
標準ヘッダーファイルの拡張子を無くしたときにやるべきだったな

785 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:46:50 ]
>>784
標準の拡張子無しのヤツはヘッダっていうんじゃなかった?
自分で作ったらヘッダーファイルだっけね。




786 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 20:53:48 ]
ヘッダはファイルである必要は必ずしもないという実装者を挑発するルールです

787 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:00:08 ]
Windows使っている俺は、実際のファイル名をヘッダ名と同じにしないでくれと思っている。
具体的に言うとファイル名に拡張子ほしい。<ios>でios.hppを探しに行くような感じで。
拡張子のないファイルは扱いが面倒臭い。

関連付け以外にも、色分けなどのために拡張子で種類を判別するエディタの多いこと。

788 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:19:21 ]
ヘッダファイルにエディタへのヒントとして、ファイルタイプを書くか、
副次ストリームに書く。
エディタはそれを読んで判断。

789 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:41:22 ]
ハードリンクでも張っとけばいいんじゃない?

790 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:15:03 ]
副ストリームって最近冷遇されてる気がするなあ

791 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:17:46 ]
><ios>でios.hppを探しに行くような感じで
でも結局iosのファイルの中身は
#include <ios.hpp>
だけだったりするんだよね

792 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:29:30 ]
0xが正式に導入されたら、今ある入門書って買い換えなきゃいけない?

793 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:31:43 ]
入門レベルなら大して変わらないかと

794 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:38:16 ]
「対して変わらない入門書」なんてものは悪書としか言いようが無い。
C++標準化後にどれだけ旧態然とした入門書が悪影響を与えたか。

795 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:54:23 ]
正式導入されたとしても、
結局 VC++ が無視したら広まらないんだろうな。
C99 みたいに。



796 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:56:17 ]
既にTR1入れてるぐらいだし、比較的早めに0x対応するのではないかと楽観視している

797 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:58:18 ]
STLの書き換えがダルそうだよな
俺らは使うだけだけど

798 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:00:01 ]
どうせ書くのはdinkumwareだろ
MSじゃなくてさ

799 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:00:45 ]
まあ TR1 くらいなら特にコンパイラいじる必要もないから簡単に入れれるけど、
言語仕様に手を入れるのはどうなんだろうね。
VCEE の C++ の力の入れ具合が 2005 で微妙だったのが(デフォでは Platform SDK なし)
2008 で微妙に改善されたので(デフォで Windows SDK あり)
もしかしたらやる気があるのかもしれない。

800 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:16:03 ]
>>799
TR1だってispodとかコンパイラに手を入れないと無理なのもある。

ところで、もしVC++がExpressだと0x使えないって言われたら
喜んでStandard買いそうな気がしてならない。
そんときゃg++で我慢すればいいはずなのに。

801 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:16:59 ]
で、結局入門書は買いなおしたほうがいいんだな?

802 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:19:50 ]
しばらくは取って付けたような入門書ばかり出るんだろうけどね。

803 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:20:53 ]
入門書なんてvarとshared_ptrあたりをさわるので精一杯じゃね

804 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:22:39 ]
var じゃなくて auto じゃね

805 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:23:59 ]
autoとヌルポは絶対教えるだろ。
あとはinitializerでのコンテナ初期化と範囲forとか



806 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:27:12 ]
どうせ数ページ書き直しただけで「C++0x対応・全面改訂版」とかって帯付けて売るんだぜw

807 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:29:05 ]
欄外に「新しいC++の規格ではこのように書くことも出来るようになりました」って注釈つけて終わりにしたりな

808 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:31:26 ]
D&E 2015年版が出るなら絶対買う。

809 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:43:26 ]
地味だけどlong longは間違いなくとり上げられる。

810 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:48:09 ]
>>799
けどC++/CLI蹴られたし、ISO C++からは離れるかもね。

811 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:53:26 ]
>>809
型の種類と値の範囲の表をちょっと増やすだけだもんなw

個人的にはUTF文字列をまともに扱って欲しい

812 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:58:03 ]
美少女中学生にしてみれば下着の種類が増えるだけだからな
外に出るときの見た目は変わらない

813 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:48:21 ]
対応したコンパイラって、すぐ出るのかな?

814 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:49:30 ]
gccとか既に一部対応してるから、規格になることには全部対応してるんじゃね?

815 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:53:42 ]
ふむ。
gccぶち込んでみるかな。



816 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:54:49 ]
139 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/11(水) 20:50:38
どうでも良いが個人的にまつもと氏に0xに改善されても尚C++が問題外かどうかを訊ねたい。

817 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:31:56 ]
>>816
もっとだめと言うに100万ペリカ

ところで初心者向けと言えば、やっぱりテンプレート絡みの
エラーメッセージがまともになるという1点においてコンセプトが
一番簡単にアピールできる機能だと思う。
コンセプト自体は、入門書で取り上げられるような内容ではないだろうけど。

818 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 08:16:26 ]
禿は0xむけに第4版出すんだろうか

819 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 10:28:13 ]
第4版よりD&Eの第2版がほしい

820 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:25:24 ]
D&Eの続編書いて欲しいな。別の本で。
>>693のGregorとか。
一人で大幅な改訂してる暇はたぶんないだろ。
WG21 papers、かなり名前出てくてるからな。

821 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:26:54 ]
Wikiを読んでいると、「うざくなって?」って、思えてきたのですが、
そんなことない?

822 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:32:27 ]
日本語でおk

823 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:20:39 ]
美少女中学生が携帯で書き込んでいるようだな

824 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:13:20 ]
>>823
ぼっぼくと付き合ってくださいっ!

825 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:01:42 ]
>>824
文脈的には>>821が美少女中学生だと思う

TC++PLやD&Eの続編って書く予定ないのかな と思って禿のページ見に行ったら
なんかいまC++の入門書書いてるみたいだね



826 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:30:15 ]
VCって、どこまで対応させるのかな〜?

827 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:21:40 ]
>>825
おお、それは期待したい

828 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:21:56 ]
テンプレートだって未だにまともになってないのに
そこにコンセプトなんか追加したらどうなることやら

829 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:22:58 ]
「もう美少女中学生とかどうでもいいだろC++0xの話をしろよ」と書き込もうとしたけどやめた。

830 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:24:03 ]
やめろよ

831 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:31:25 ]
「もう美少女中学生とかどうでもいいだろC++0xの話をしろよ」っていう書き込みを見て「やめろよ」と書き込もうとしたけどやめた。

832 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:33:18 ]
C++0xは美少女中学生萌え言語ですよ?

833 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:35:17 ]
C++0xと美少女中学生には全く関連性がありません!
両者が結びついているかのような書き込みは控えてください!迷惑です!
ここはC++0xのスレッドです!C++0xの話をしてください!
美少女中学生の話がしたければどこかよそでやってください!

834 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:39:31 ]
えぇーまじでぇー


835 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:55:11 ]
C++0xなら美少女中学生なんてコンパイル時にゲットできる



836 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:56:41 ]
NGワード : 少女

837 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:57:56 ]
>>835
コンパイルに何年かかるんだ?

838 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:58:14 ]
>>828
コンセプトが追加されてはじめてまともになるんじゃないか。何を言ってるんだ

839 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:37:42 ]
>>838
紫の上のコンパイルはたった4年です。

840 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:31:21 ]
>>784
拡張子をなくした理由ってなんだろ?


841 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:32:15 ]
>>792
いつまで入門者でいるつもりなのかなー

842 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:38:19 ]
>>840
ヘッダはファイルである必要は無い
とか言えるようにするため。

843 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:34:50 ]
.hまで含めて名前です。とかでもよかったじゃん。

844 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:36:53 ]
互換性を失う変更を導入するための苦肉の策だったのだと思う

845 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:37:26 ]
名前空間の無い時代に

#include <iostream.h>
int main() {
 cout << "hoge" << endl;
 return 0;
}

とか書かれたプログラムが大量にあってだな・・・。
それとの互換性を考えると名前を変えざるを



846 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:06:58 ]
ほんっとしがらみいっぱい過ぎだよな。

847 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:11:18 ]
互換性無視してしがらみ全部捨てたC++欲しいよな。
特に暗黙の型変換辺り。

ちなみにDなら不要だよ。

848 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:12:46 ]
Dは自分でしがらみ作りまくったりしてるからな・・・
時には思い切って捨てたりしてるけど(信者を)それが逆にしがらみになってる。

849 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:25:48 ]
>>847
仕様だけでも作ってくれ

850 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:28:12 ]
>>847
暗黙関係はトラブルの元だからどうにかしたいな。暗黙関係は警告を出すオプションが欲しい。
デフォルトのコピーコンストラクタが作成できませんなんて余計な警告はあるのになんでないんだ?>VC8

851 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:52:11 ]
明示的なメモリ管理ができないC++とか
その場合でもmove semanticsは面白いこと出来ると思う。

852 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:27:37 ]
暗黙の型変換を全部禁止したらどうなるのかな
double d = 1;
とか
Base *b = new Derived();
とかが全部エラーになるんだよな

853 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:29:42 ]
アップキャストは安全なキャストだから禁止する必要もあるまい。

854 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:33:28 ]
安全だろうと何だろうと、何かの暗黙の変換を認めたら
あれも認めろこれも認めろと言うキチガイが出てくるので全て禁止です

そういう思想で作られてる言語ねえのかな

855 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:42:53 ]
OCaml は結構型に厳しかったと思う



856 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:20:30 ]
double d = 1;
は実質
double d( 1 );
と同じだから明示的な変換を表しているんじゃないか?

857 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:22:16 ]
暗黙的なコピーコンストラクタの実行をやめてくれって話じゃなかったのか

858 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:29:26 ]
explicit でおkだっしょ

859 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:41:09 ]
デフォルトのコピーコンストラクタはどうかなあ。

860 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:42:31 ]
ああ、コピーコンストラクタの話か。
0x 的には = delete してくれってことじゃないのかな。

861 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:44:38 ]
組み込み型の暗黙の型変換が結構うざいんだよな。
特にポインタ、文字型、論理型が整数様型と絡むと。

862 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:46:08 ]
explicit をデフォルトにしてほしかった。

863 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:47:36 ]
schemeみたいに簡単に方言作れるkitがあればいいのにな。

864 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:55:09 ]
>>862
それはよく思う。
でも、今更変えらんないんだろうなあ。

865 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:57:43 ]
Javaはreflection APIがあるから、
言語拡張&コンパイラ実装の研究がどんどん進んでいるね。



866 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:38:08 ]
セックスプリプリシット?

867 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:46:35 ]
虚しいオッサンの虚しい書き込みが続いております

868 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:47:36 ]
>>865
OpenC++の中の人も今はOpenJavaやってるね。

869 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 06:06:45 ]
クラスの内部ポインタを交換するような例外安全な swap を書くとき
それを std 空間に template <> swap( .. ) と逐一定義しないと std::swap から呼ばれない。
理屈はわかるんですけど、なんとかならないですかね。
一々 namespace std { template <> swap( うんたらかんたらと書くのが面倒くさいです。

870 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 06:50:04 ]
クラステンプレートならどうにもならない

871 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:24:39 ]
自分の場合は using std::swap してから swap() を呼び出しているので
クラスと同じ名前空間に swap() を定義している。

872 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:01:32 ]
swapなんか使わない設計にしなさい

873 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:08:06 ]
そうですね。
これからは右辺値参照の時代ですもんね。

874 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:41:59 ]
swapを使おうとする前に、一度立ち止まって
自分が値をあべこべに格納していないか考え直しなさい

                 Bjarne Stroustrup

875 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:38:14 ]
>>869
恐らくどうしようもないかと思います.
さらに, 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 さえあれば良いということは必ずしも言えないかと思います.



876 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:51:43 ]
concept HasSwapFunction<typename T> { T& swap(T&) throw (); }

template <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); }

↑ こういう感じのってダメなの?よくわからんけど…

877 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:00:17 ]
>>876
template<HasSwapFunction T>
concept_map Swappable<T> { void swap(T &x, T &y){ x.swap(y); } }

多分,こんな感じで concept_map で差異を吸収したほうが楽なのではないかと.

878 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:03:49 ]
交換も、コピーコンストラクタや代入演算子と同じように扱えばシンプルになると思うんだけど
・デフォルトはクラスが定義するswapを実行する
・swapが実装されていなければ、言語側で一時オブジェクトを作り処理する
とできないのかな
実装で埋めようとして複雑になっている印象がありますが

879 名前:デフォルトの名無しさん [2008/06/18(水) 04:23:08 ]
Namespace issue with specialized swap
groups.google.ca/group/comp.lang.c++.moderated/browse_thread/thread/b396fedad7dcdc81

880 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:07:18 ]
for文の改良ってしないの?


881 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:18:58 ]
foreachってC++0xになかったっけ?

882 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:00:02 ]
入ったよ。
for (int &entry: aContainer) { ... }

Javaのクロージャを引数に取る拡張に比べるとつまらない。>>48
C++的には最悪のセンスだと思う。


883 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:41:05 ]
Javaから構文パクるなんてC++も地に墜ちたもんだな

884 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:58:22 ]
まあでもC++にeachとかinとかのキーワードを入れるのも有り得ないだろうし、
これくらいしか書きようがないと思う。

885 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:00:07 ]
ところでこのループ変数は参照なの?
参照が指す先変えながらグルグル回るの?

キモッ



886 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:21:35 ]
別にキモくはないだろ。
従来の、for無いのスコープで参照変数を宣言してるようなもの。

887 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:29:26 ]
for (int &&entry: aContainer) { ... } はあり?

888 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:55:18 ]
ぅん・・・

889 名前:1/2 mailto:sage [2008/06/18(水) 19:11:15 ]
昔々、Sunにとある厨が居た。
彼はC言語の研修でポインターでつまづくような無能で、無論C++など理解出来なかった。
プログラマーとしては全く使い物にならんということでネットワークエンジニアとして使われていた。当然役には立たなかったが、サーバー運びや配線や小間使いぐらいは出来た。
この世にポインターがあるから自分がそんな境遇に陥ったのだと不満を募らせた彼はポインターを憎悪し、ポインターの無い言語があればいいのに、と夢想するようになった。
彼はその夢想言語をJAVAと名付け陳腐な企画書を出したが、すべて無視された。
そんなある日、どうせ役には立たないんだからと、しつこいNetscape社の営業を追い払う仕事を任された。もちろん権限は一切なく、ただNetscape社の営業の話相手をし、すべてを断るだけの仕事だ。
彼は毎日のようにNetscape社の営業と無駄話をした。彼にとってそれは、愚痴や不平不満をこぼす絶好の機会だった。
Netscape社の営業は当然のように彼に同意した。彼の境遇に同情し、彼の才能を認め、褒め称えた。
そして誰も耳を傾けなかった夢想言語JAVAの話になるとNetscape社の営業は強い興味を持ち、ブラウザーに搭載したいと言い出した。当時のNetscape社は、動きのあるページを作る案を求めていた。
夢想言語JAVAが現実のものになる。彼は天にも昇る気持ちになり、全面的に協力を申し出た。が、やはり何の役にも立たなかった。すべての設計、策定、実装はNetscape社によって行われた。
Netscape社は、夢想言語JAVAを「何処でも全く同じに動く言語」としてブラウザーに搭載しようとしたのだ。
これを聞いて驚いたのはSunの役員達だ。直ちにNetscape社と交渉し、JAVAはそもそもSunのものであることを主張し始めた。
交渉の結果夢想言語JAVAの最初の実装はJavaScriptと改名することになり、SunのJAVAとは独立したNetscape社の言語となった。

890 名前:1/2 mailto:sage [2008/06/18(水) 19:11:45 ]
Sunは直ちに「何処でも全く同じに動く言語」の現実性を調査し、仮想マシンを使うことで可能であることを検証した。
また夢想言語JAVAの詳細を厨に尋ね、規格をまとめ……ようとした。というのは、厨の頭の中には「ポインターを使わない」の他には支離滅裂な妄想以外何も無かったからだ。
役に立たない彼を「夢想言語JAVAを広める為の広報」に追い出し、夢想言語JAVAではなく現実的なJAVA言語の設計が行われた。
だが現実的設計にはいろいろと難があった。その度に開発部は厨に尋ね、その意向を可能な限り反映する努力を行った。しかし無能な厨の意向を反映することは困難を極めた。
その中で最も大きな障害となったのが、多重継承の禁止である。
未だにSunは公式に認めていないが、JAVAが多重継承を禁止する決断をさせたのは、実はMicrosoftの寄与するところが大きかった。
Microsoftは既にMFCとCOMによって多重継承が抱える問題を解決していたからである。
その後も厨は(何度出入り禁止を喰らっても)設計に口を出し、そして開発部はその意向を可能な限り反映する努力を行ない続けた。
特に厨が主張するコーディング規約は支離滅裂を極め、ゴスリンは「それまでに書かれたコードを書き直す量が最も少なくなるコーディング規約」をまとめる必要に迫られた。
この時にまとめられた何の意味も無いコーディング規約は後に、それを知らなかった企画部によって改めてまとめられJAVAの標準のコーディング規約として発表された。
ゴスリンはこの時の心境を「JAVAが最高だと生涯言い張り続ける覚悟を決めた」と述懐している。
厨は熱心に広報活動を行っていたが、役に立ったのは最初だけだった。すごい言語が出来る、ということを印象付けた後は、何の役にも立たなかった。
開発には近寄ることすら許されず、広報からは役立たずの烙印を押された。彼は再びネットワークエンジニアとして保守管理部に戻った。
今では彼は毎日何百ものLEDを見張って、消えたらそれに対応するハードディスクドライブを交換する仕事をしていると言われている。名前は記録されていない。

891 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:12:40 ]
ついに参照の指し変えが認められてしまったのか…

892 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:18:37 ]
>>875
valid resourceless state てなーに?

893 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:24:14 ]
Java の参照型はまさにポインタだろうが・・・。

894 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:26:03 ]
NullPointerExceptionがあるしな

895 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:26:50 ]
Javaの参照型はインクリメントできる?



896 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:28:34 ]
>>893-895
ネタにマジレスw

897 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:29:56 ]
マジレスもできない奴は板を替えたほうがいい

898 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:30:34 ]
ネタにマジレスするのが最近のトレンドなんだぜ

899 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:37:47 ]
ネタに、というよりホラにマジレスだな

900 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:38:24 ]
>>892
d = 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 の観点から見てやや大きな弱点を生じるように思います.






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<166KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef