C++0x 3at TECH
C++0x 3 - 暇つぶし2ch175:デフォルトの名無しさん
08/04/09 09:53:56
Schemeと比べてああだこうだ言われても。
Schemeのプリミティブは強力だけど、
Schemeだって得意じゃないことは一杯あるし。

C++のclosureは、Javaの奴みたいに、
コントロール拡張について考慮されてないのが寂しいですねえ。

176:デフォルトの名無しさん
08/04/09 10:53:42
>>175
>C++のclosureは、Javaの奴みたいに、
>コントロール拡張について考慮されてないのが寂しいですねえ。
もうちょっとkwsk

177:デフォルトの名無しさん
08/04/09 11:23:44
URLリンク(jazoon.com)

178:デフォルトの名無しさん
08/04/09 11:25:27
range-based for-loopと絡めたいね。

179:デフォルトの名無しさん
08/04/09 12:31:24
>>162
まるでLISPが関数型言語みたいな言い方だな。w

180:デフォルトの名無しさん
08/04/09 13:17:07
自分の知識がきっちりしていることをひけらかすだめだけの
細かい突っ込みは痛々しいよ。
その「句点のあとのダブリュー」に突っ込むくらい虚しいことだ。

181:デフォルトの名無しさん
08/04/09 13:17:51
美少女中学生が丸出し!

182:デフォルトの名無しさん
08/04/09 13:35:51
いい加減中学生から離れろ。

183:デフォルトの名無しさん
08/04/09 13:38:14
そうだそうだ。中学生なんてババアだろ。

184:デフォルトの名無しさん
08/04/09 14:50:27
>>180
あやふやな知識じゃ自慢できませんものね。w

185:デフォルトの名無しさん
08/04/09 15:14:33
自慢というか、自爆。

186:デフォルトの名無しさん
08/04/09 16:44:56
美少女中学生の初めての自慰はダイソーバイブと相場が決まっていてな

187:デフォルトの名無しさん
08/04/09 17:39:48
つまりUnlambdaサイコー!ということですね
わかります

188:デフォルトの名無しさん
08/04/09 21:42:03
>>177
遅くなりましたけれどありがとうございます.
finally 周りを省略するための使い方は, scope guard 系の技法に
lambda expression を組み合わせれば C++0x でもおよそそのまま転用できそうですね.
Listener に Event 設定したり, thread function の設定に使うのは
C++ だと lifetime の問題が出てくるのでそのまま転用するのが
難しい局面が出てくると思いますけれど,
これはコントロール云々とは直接は関係ないですかね.

189:デフォルトの名無しさん
08/04/10 15:51:50
>>138
Dスレから来ました
> Brainf*ckやWhitespaceまでもがC++としてコンパイル可能
DでBrainfuckをDの関数としてコンパイルするサンプルはもう作ってみたよ。
C++でもテンプレートプログラミングが変態的になればできると思う。
メモリ管理がうまくいけばJavaあたりはC++で直接いけるような気がします

190:デフォルトの名無しさん
08/04/10 16:11:46
Dか。
Dはやねうらおが一時期信者だったので敬遠してたんだが、
今は離れたみたいだし、ちょっと遊んでみようかな。
流行るとは思わないけれど。

191:デフォルトの名無しさん
08/04/11 11:57:20
>>190
「誰々が信者だったから~」
なんともくだらない理由だなww

192:デフォルトの名無しさん
08/04/11 12:15:17
Rubyはまつもとが××信者だったから~

193:デフォルトの名無しさん
08/04/11 12:50:57
生理的に駄目なやつっているだろ

美少女中学生の生理なら駄目じゃないぞむしろ大歓迎

194:デフォルトの名無しさん
08/04/11 18:00:43
製作者がGPL信者だったから敬遠しますた

195:デフォルトの名無しさん
08/04/11 18:02:33
それは実害があるからしゃーないが・・・
坊主憎けりゃ袈裟まで憎いとか俺には一生分からない感情だろうな。

196:デフォルトの名無しさん
08/04/11 18:30:23
「誰誰が信者だったから~~」
「坊主憎けりゃなんとやらか」
「でも今日は気にしないよ」
「あー、"今朝まで憎い"ってか」

197:デフォルトの名無しさん
08/04/11 18:43:42
まつもとはいいかげん他言語を煽って目立とうとするのはやめてほしいんだが
煽りの内容もお前が言うなレベルの低次元なものだし・・・

198:デフォルトの名無しさん
08/04/11 19:10:56
子供っぽい美少女中学生はどこが坊主?

199:デフォルトの名無しさん
08/04/11 19:27:21
結局 Python に落ち着いた漏れ.
でも最近は仕事じゃPHPばっかりで萎える.

200:デフォルトの名無しさん
08/04/11 20:40:51
まぁ標準みたいなもんだし

201:デフォルトの名無しさん
08/04/11 23:00:49
C++0xはC++1xになるのだろうか…

202:デフォルトの名無しさん
08/04/12 09:07:38
0f までいけるからまあ大丈夫だろ。

203:デフォルトの名無しさん
08/04/12 09:27:12
07までだろ…

204:デフォルトの名無しさん
08/04/12 11:47:56
それは盲点だった

205:デフォルトの名無しさん
08/04/12 11:50:32
いいかげん0のプリフィクスで8進数リテラルっての止めて欲しい
誰も使わない上に紛らわしい

pythonを見習って止めるべし

206:デフォルトの名無しさん
08/04/12 11:51:15
つ 互換性

207:デフォルトの名無しさん
08/04/12 14:32:37
パーミション設定するときに使うべ。

208:デフォルトの名無しさん
08/04/12 14:51:09
そうだな
パーミションは3ビットだから8進使うと便利だな

209:デフォルトの名無しさん
08/04/12 14:55:54
そのために8進表記があるんじゃないのか

210:デフォルトの名無しさん
08/04/12 14:59:15
別にパーミションのためにあるわけじゃないぞ。

211:デフォルトの名無しさん
08/04/12 15:00:11
for all 3bit user

212:デフォルトの名無しさん
08/04/12 16:04:49
それより2進表記を作ってくれ 0b0100110101010 みたいな

213:デフォルトの名無しさん
08/04/12 16:08:27
読みづらいから D みたいに区切りを入れられるようにしてくれ。

214:デフォルトの名無しさん
08/04/12 17:27:33
>>212
これ良く書かれてるんだけど
0xdcとかが11011100とかに見えないの?
実に不思議だ

215:デフォルトの名無しさん
08/04/12 17:28:57
TMPで2進表記をする有名なサンプルがあってだな・・・

216:デフォルトの名無しさん
08/04/12 17:34:12
>>214
「実質ゼロ時間・ゼロ労力」でできるのはせいぜいその辺の変換+αくらいで、
その程度ではまるで不便だから「よく書かれる」んだろう。

もし「0xdcが11011100に見えないレベルの人が」よくこの要望を出しているのだと考えているなら、
勘違いで自分を相対的に持ち上げすぎ。不思議っていうか、君が不思議ちゃんだよw

217:デフォルトの名無しさん
08/04/12 17:36:42
頭の中で変換可能ならリテラルの表記は10進のみでおk
という話しになってしまうな

ただ二進数だと桁が多くなるから区切りがないと返って可読性落ちるな

218:デフォルトの名無しさん
08/04/12 17:40:15
>>216
どういうこと?
16進と2進は直接4桁ごとに変換できるから2進表記はないんだろ?
そしてそれをほとんどができるから
よく書かれるってのは皮肉で書いたんだけど

219:デフォルトの名無しさん
08/04/12 17:40:54
皮肉っていうのはおまえいつもそれ書いてるなって意味

220:デフォルトの名無しさん
08/04/12 18:02:42
俺は脳内で変換できるから、5進数でも大丈夫

221:デフォルトの名無しさん
08/04/12 18:04:05
16進でいいだろってのは釣りなんだから相手にしないでおけ。

222:デフォルトの名無しさん
08/04/12 18:28:35
C系言語使うつもりなら
・2進 <-> 8進 <-> 16進の変換
・0xF*0xFまでの16進九九
・文字定数 <-> ASCII値
・主要な2^n値の10進表記(n=1~16,20,24,30,31,32,40,63,64あたり)
くらいは身につけてるのが常識だし、マナーだと思ってたが
最近はそうでもないのか

223:デフォルトの名無しさん
08/04/12 18:30:39
身につけるのが常識である事と、
そのままでいいこととは別の話だろ?

224:デフォルトの名無しさん
08/04/12 18:34:33
そんなのまで言語側で面倒見るべきではないと思うぞ
九九を知らない奴が家を設計できるようになることが良いこととは思えない

225:デフォルトの名無しさん
08/04/12 18:34:38
0b0100110101010
こんなのぱっと見て長すぎて分かりにくいし
たかだか16個のビットパターン覚えられないって方がネタだろ

226:デフォルトの名無しさん
08/04/12 18:38:18
>>222
この辺、本当にそう思うならちょっと披露して欲しいと思った。
・8進16進変換
普通の人は、2進を介在させないと難しいと思う。
・16進9x9
必要になるケースがレアすぎる。
・2^nのnが40とか64とか。
nが16以下なら普通に言えるけど。nが32でさえ桁数が多すぎて普通は無理。

227:デフォルトの名無しさん
08/04/12 18:38:20
D みたいに自由にアンダースコア入れれるようにすればいい。

228:デフォルトの名無しさん
08/04/12 18:38:45
>>222
そんな化石言語使いません。

229:デフォルトの名無しさん
08/04/12 18:39:30
マクロとか書けるけどな。
でも、できるなら言語的にサポートされてほしい。

230:デフォルトの名無しさん
08/04/12 18:40:18
0b001101000101ならすぐ0x345とわかるけど
これを0b1101000101とか書かれると困る
0bの後に続く数は4の倍数個に制限するべきだが、導入されたとして多分そうはならないだろ
だったら有害なだけ

231:デフォルトの名無しさん
08/04/12 18:40:59
いや32なら簡単だろさすがに

232:デフォルトの名無しさん
08/04/12 18:41:41
>>231は思いっきり勘違い

233:デフォルトの名無しさん
08/04/12 18:42:55
>>230
D ではこう書く。

0b11_0100_0101

234:デフォルトの名無しさん
08/04/12 18:43:18
特にメモリが4Gに迫って色々あったり2038年問題の影がちらつきだしたこのご時世に
2^31と2^32の10進値も知らないコンピュータ技術者がいるなんて信じたくない

235:デフォルトの名無しさん
08/04/12 18:44:27
だから、概数を覚えていることと全桁そらで言えることは違うって。

236:デフォルトの名無しさん
08/04/12 18:45:06
およそ40億としか覚えてなかった
1048576までなら覚えてるけど

237:デフォルトの名無しさん
08/04/12 18:45:36
20億代と40億代だと覚えておけば、
細かい値が必要なときだけ電卓でポンでいいだろ。
無駄な事覚えるのはタダのバカ。

238:デフォルトの名無しさん
08/04/12 18:48:05
約21億と約43億としか覚えてないなぁ
けど2^24は16777216って覚えてるな

239:デフォルトの名無しさん
08/04/12 18:48:14
>>234
2^10 = K
2^20 = M
2^30 = G

で十分だ。

240:デフォルトの名無しさん
08/04/12 18:49:04
>>238
俺も 16777216 は覚えてるな。
何か覚えやすい並びだしな。

241:デフォルトの名無しさん
08/04/12 18:50:18
>>239
Gってのは文脈によって1073741824・1047586000・1024000000・1000000000を意味する可能性がある
全然十分ではない

242:デフォルトの名無しさん
08/04/12 18:51:08
>>239
2^10=1024も知らないとか冗談だろ?

243:デフォルトの名無しさん
08/04/12 18:51:51
1024 は流石に知らないと恥ずかしいな。

244:デフォルトの名無しさん
08/04/12 18:53:29
>>241
例えば伝送速度は1k=1000、メモリ容量などは1k=1024換算だ。

>>242
んなもん覚えてるわ

245:デフォルトの名無しさん
08/04/12 18:53:37
2^31=2147483648は結構覚えやすいと思うんだけどな
万の区切りで48が2回出てくるし偶数桁目に4,4,3,4って調子よく並んでるし

246:デフォルトの名無しさん
08/04/12 18:54:10
>>241
文脈だって、馬鹿じゃね

247:デフォルトの名無しさん
08/04/12 18:54:58
2^8 = 256
2^10 = 1024
2^15 = 32768
2^16 = 65536

これはおさえとかないと確かにマズいな

248:デフォルトの名無しさん
08/04/12 18:56:38
データ容量でキロを1000メガを1000000と解釈するのは記録メディア業界だけ?

249:デフォルトの名無しさん
08/04/12 18:56:51
0xFFFF = 65535
これで覚えてる

250:デフォルトの名無しさん
08/04/12 18:58:21
>>248
メディア業界でも会社によってメガが1000000だったり1024000だったりするから困る
(1048576であることはまずないけど)

251:デフォルトの名無しさん
08/04/12 18:58:28
てかC++0xのスレだよな?

252:デフォルトの名無しさん
08/04/12 18:59:21
いつまでも0bなんて粘着に持ち出すゆとりのせいで荒れたじゃないか

253:デフォルトの名無しさん
08/04/12 19:04:49
0bを導入するメリットがあるとすればフラグを表す定数なんかで
#define FLAG_A 0b00000001
#define FLAG_B 0b00000010
#define FLAG_C 0b00000100
#define FLAG_D 0b00001000
#define FLAG_E 0b00010000
#define FLAG_F 0b00100000

なんて表現ができて初心者がフラグの定義の仕方を直感的に理解できるくらいか?
それ以外のメリットが思いつかん・・・



254:デフォルトの名無しさん
08/04/12 19:06:21
#define BIT(n) (1u << (n))

#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)

とかの方が分かりやすい

255:デフォルトの名無しさん
08/04/12 19:07:07
0b literals considered harmful

256:デフォルトの名無しさん
08/04/12 19:10:50
Gauche使え

257:デフォルトの名無しさん
08/04/12 19:12:27
そういう思い込み書き込むスレじゃないからw
マ板行けよ

新しい関数型の記法です。->を使う。
URLリンク(www.open-std.org)

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


258:デフォルトの名無しさん
08/04/12 19:17:28
コンパイラの都合臭がする記法だよな

259:デフォルトの名無しさん
08/04/12 19:19:27
constexpr long operator prefix"0b"(const char *literal_string){
  long n=0;
  for(; *literal_string; literal_string++){
    n = (n << 1) + *literal_string - '0';
  }
  return n
}
こういうのが出来れば0b厨もおとなしくなるのに

260:デフォルトの名無しさん
08/04/12 19:21:37
なんか盛り上がってると思ったら、記憶力自慢の子が来てたのか。w

261:デフォルトの名無しさん
08/04/12 19:21:55
typedefの何が気に食わなくてこんなキモい構文を

262:デフォルトの名無しさん
08/04/12 19:36:31
こういうのを見るとC/C++って下品なプログラミング言語だと思うよな。

263:デフォルトの名無しさん
08/04/12 19:37:58
>>262
そこがいい。下品な俺たちにぴったりなのだ。

264:デフォルトの名無しさん
08/04/12 19:50:37
>>261
templateの例はtypedefじゃきついだろ。

関数型表記の無理やり感がついに破綻しましたね。

265:デフォルトの名無しさん
08/04/12 19:51:05
>>260
というかその人達、これだけ会話が続いてもまだ
「16種類のビットパターンを覚えられないから0b表記を欲しがっている」
と思い込んでるのが痛い。

266:デフォルトの名無しさん
08/04/12 19:58:44
>>265
ごめん、違うの?

267:デフォルトの名無しさん
08/04/12 19:59:45
>>266
違うに決まってるだろ。
その記憶力でちゃんと日本語を覚えような。

268:デフォルトの名無しさん
08/04/12 20:04:25
ごめんなさいバカなのでわかりません
0bには16進のビットパターンを覚えられないゆとりのため以外にどのような利点があるのでしょうか

269:デフォルトの名無しさん
08/04/12 20:06:34
最近のGCCは独自拡張で0bを持っている。

270:デフォルトの名無しさん
08/04/12 20:07:39
>>268
バーカバーカ

271:デフォルトの名無しさん
08/04/12 20:09:47
>>268
保守性の向上

272:デフォルトの名無しさん
08/04/12 20:10:36
0bでは保守性向上しないだろ・・・

273:デフォルトの名無しさん
08/04/12 20:12:12
他の言語に採用されてる事に関しては疑問を持たないのかね

274:デフォルトの名無しさん
08/04/12 20:18:02
何を言おうと標準化委員会に却下された時点で0b厨の敗北は決定している

275:デフォルトの名無しさん
08/04/12 20:20:56
>>271
0bの方が読みやすい、だから保守性が向上するんだ!という主張ですね?

つまり0xを読めない奴でも保守できるようにするための機能ということですから
16進のビットパターンを覚えられないゆとりのための機能という意味ですね
解答になってないですね

「16進のビットパターンを覚えられないゆとりのため」以外の理由を教えて下さい
この馬鹿な私に教えて下さい

276:デフォルトの名無しさん
08/04/12 20:21:57
>>274
こういう下品な理由こそが C++ に相応しい

277:デフォルトの名無しさん
08/04/12 20:22:32
>>275
君は馬鹿というより単純だと思う

278:デフォルトの名無しさん
08/04/12 20:24:26
面倒くさいから
「ゆとりと仕事する(或いは保守をやらせる)かも知れないから」
でいいんじゃね

279:デフォルトの名無しさん
08/04/12 20:24:42
>>275
一行目と二行目の間に凄い飛躍があるなw

280:デフォルトの名無しさん
08/04/12 20:26:55
>>279
0xが読めるなら0xだろうと0bだろうと保守性は変わらないんですから
0xが読めない人にのみ意味のある保守性の向上ということですよね?

普通に読めばそういう意味になると思いますが
どのような飛躍があるのか教えて下さい
単純な私に教えて下さい

281:デフォルトの名無しさん
08/04/12 20:31:06
読める人でも分かりやすさに差があるし、
2進で書くか16進で書くかによって
コードに込められた意図に差が出ることだってあるだろ。

282:デフォルトの名無しさん
08/04/12 20:31:06
>>280
「読める」と「読みやすい」の違いは判る?

283:デフォルトの名無しさん
08/04/12 20:31:27
そもそも16種類のビットパターンすら覚えられないような奴が
73種類もある(しかも多くは多重に意味のある)C++の予約語を覚えられるわけがないから
そういう奴は普通に考えてC++をいじるような仕事が出来るわけがないと思うんだが
0b入れたとしてもさ

284:デフォルトの名無しさん
08/04/12 20:32:20
駄目だ、こいつ粘着だよw

285:デフォルトの名無しさん
08/04/12 20:32:53
>>280
読みやすさなら圧倒的に16進だろ
0bには別のメリットがあるに決まってるじゃん馬鹿なの?

286:デフォルトの名無しさん
08/04/12 20:33:16
16進テトリスとかやったことあるけど、
やりづらいことこの上なかったぞw

287:デフォルトの名無しさん
08/04/12 20:33:17
>>283
本当に単純なんだね

288:デフォルトの名無しさん
08/04/12 20:33:36
>>281
そんな意図はコメントやドキュメントに書くべきであって
リテラルの形式に勝手にそんな暗黙の約束を置く方がかえって保守性下がると思うんだが

289:デフォルトの名無しさん
08/04/12 20:34:54
じゃあ for とか while とかじゃなくて goto 使ってください。

290:デフォルトの名無しさん
08/04/12 20:35:29
>>282
それはもちろんゆとりでも対応表を片手に一つずつ変換していけば読むこと自体は出来るに決まっていますから
今までの「読める」はすべて「読みやすい」の意味だと思って下さい
言葉が足りなくて申し訳ありませんでした

では改めて「16進のビットパターンを覚えられなくて0xを読みにくいゆとりのため」以外の理由を教えて下さい

291:デフォルトの名無しさん
08/04/12 20:35:33
10進と16進の使い分けだってやってるだろ?
まさか意味も無く16進使ってるわけはないよな?

292:デフォルトの名無しさん
08/04/12 20:36:41
>>288
Unixのchmodも10進数で書いちゃう人ですか?

293:デフォルトの名無しさん
08/04/12 20:38:17
>>289
forが出てくれば繰り返しだとわかるけど
コード中に「0xAA」と「0b10101010」が説明なしに出てきて
一体どうやってプログラマの意図をくみ取ればいいんだ?
同じ数だぞ?

294:デフォルトの名無しさん
08/04/12 20:38:32
chmodを16進で書くのも読みづらいな。
あれは8進で書くべき。
2進が欲しいってのも似たような理由だな。
2進の方が分かりやすい所では2進が使えた方がいい。

295:デフォルトの名無しさん
08/04/12 20:39:59
2進が使いやすいとしたら4ビットせいぜい8ビットまでだろ
それ以上はかえって読みにくくなるし
読みやすさのためだけなら必要ないと思うんだけど

296:デフォルトの名無しさん
08/04/12 20:40:16
>>293
例えば5ビットずつ情報を与えたい場合であれば、
0b11011_11101_01011 と書けた方がいいだろう。

297:デフォルトの名無しさん
08/04/12 20:40:52
10進と16進の使い分けはそりゃあるだろう
おおむね「ビットに意味のある数」が16進でそうじゃない数を10進で書くよな

さて、2進で書きたい数というのは多分「ビットに意味のある数」だろう
16進とどう使い分けるんだ?

298:デフォルトの名無しさん
08/04/12 20:41:22
5ビットずつってのは16ビットRGBを扱う際に出てくる。

299:デフォルトの名無しさん
08/04/12 20:42:18
0bが却下されてる理由なんだったっけ
ビットオーダーが環境依存だからだっけ?
でもシフト演算子の << >> の方向にあわせて0bの記法をきめちゃってよさそうなのにな。

300:デフォルトの名無しさん
08/04/12 20:42:30
そんな書き方16進数でもできないじゃん
これ_挟むの

301:デフォルトの名無しさん
08/04/12 20:44:22
できるようにすればいいじゃん。

302:デフォルトの名無しさん
08/04/12 20:44:54
RGB(なんたら)ってマクロでも使えばいいんじゃないの

303:デフォルトの名無しさん
08/04/12 20:45:41
>>299
ビットオーダーって単なる値には特に関係ないんじゃないかと思うんだが。
つか、それ言い出すと16進数もやばいんじゃね?

304:デフォルトの名無しさん
08/04/12 20:46:26
メモリ上にはそんな区切りはどこにも存在しないのに
勝手にそんなもの入れられるようにして何が嬉しいんだ?

305:デフォルトの名無しさん
08/04/12 20:46:53
その釣りは流石に稚拙だ

306:デフォルトの名無しさん
08/04/12 20:49:16
0x__________________1____________________________0________________________
とか書けるようになるんだろ
きめえ

307:デフォルトの名無しさん
08/04/12 20:54:26
_ を連続させられないようにすればいいだけだろ・・・そんなの。

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

309:デフォルトの名無しさん
08/04/12 20:57:08


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

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

312:デフォルトの名無しさん
08/04/12 21:01:32
ここは変態言語らしく1~36進数までサポートしようぜ

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

314:デフォルトの名無しさん
08/04/12 21:06:41
委員会に却下された理由ってなんなの?

315:デフォルトの名無しさん
08/04/12 21:06:53
そういえば85進数でIPv6書こうっていうRFCがあったな

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

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

とか。

317:デフォルトの名無しさん
08/04/12 21:07:52
等幅で見て

318:デフォルトの名無しさん
08/04/12 21:14:30
一進数は便利だ
数えれば幾つかすぐ分かる

319:デフォルトの名無しさん
08/04/12 21:17:40
#define unitary(s) (sizeof(s)-1)

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

320:デフォルトの名無しさん
08/04/12 21:18:36
unitaryじゃなくてunaryか

321:デフォルトの名無しさん
08/04/12 21:18:48
そこはこうだろ・・・

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

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

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

323:デフォルトの名無しさん
08/04/12 21:25:36
エラーになるけど??

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

325:デフォルトの名無しさん
08/04/12 21:34:45
octal-literal:
 0
 octal-literal octal-digit

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

と書いてあるが・・・。

326:デフォルトの名無しさん
08/04/12 21:36:29
あれ?
昔の話だったかもしれん。すまん

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

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

329:デフォルトの名無しさん
08/04/13 16:44:18
ビットマスクには2進を使いたいじゃんね

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

331:デフォルトの名無しさん
08/04/13 17:28:58
その理屈だと整数リテラルはすべて禁止だな

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

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

334:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/13 17:46:55
64ビットの2進リテラルはきもい

336:デフォルトの名無しさん
08/04/13 17:46:59
もう想像力の欠如した粘着の相手はやめようぜ

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


338:デフォルトの名無しさん
08/04/13 17:52:09
なんで || なんだよー

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

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

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

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

342:デフォルトの名無しさん
08/04/13 18:12:17
お前ら>>257にも少しは意見を寄せろ

343:デフォルトの名無しさん
08/04/13 18:12:59
まだやってるのかよ

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

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

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

346:デフォルトの名無しさん
08/04/13 18:38:58
美少女中学生にオーバーライド

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

348:デフォルトの名無しさん
08/04/13 19:15:29
それが最大にして絶対的な理由だとなぜ気づかないんだ

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

350:デフォルトの名無しさん
08/04/13 19:18:00
論点もなにもただのスレ違いだろ

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

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

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

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

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

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

356:デフォルトの名無しさん
08/04/13 19:21:53
じゃあ8進数が(ry

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

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

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

360:デフォルトの名無しさん
08/04/13 19:26:26
でなければ>>352みたいなことは書けない

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

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

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

こうですかわかりません

364:デフォルトの名無しさん
08/04/13 19:27:55
徹底的に無視される8進数カワイソス

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

366:デフォルトの名無しさん
08/04/13 19:28:40
しかも読みやすくなるならまだしも長ったらしくて読みにくくなるだけだし

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

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

369:デフォルトの名無しさん
08/04/13 19:29:42
ただの荒しだろこいつら

370:デフォルトの名無しさん
08/04/13 19:29:53
>>367
バカすぎる・・・

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

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

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

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

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

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

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

378:デフォルトの名無しさん
08/04/13 19:33:53
>>376
おまえ、改行と空白を敵に回したな

379:デフォルトの名無しさん
08/04/13 19:34:10
コメントも敵に回してるな。

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

381:デフォルトの名無しさん
08/04/13 19:35:50
>>380
そろそろ苦しいから諦めろ。

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

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

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

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

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

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

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

388:デフォルトの名無しさん
08/04/13 19:40:30
>>386
別に?

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

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

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

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

他になんかある?

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

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

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

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

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

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

398:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/13 19:53:35
>>397
abとa_bとa__bは違う識別子です
0b11と0b1_1と0b1__1は全く同じ意味です

400:デフォルトの名無しさん
08/04/13 19:53:36
int ab = 0;
int a_b = 0;
int a_b = 0;

意味は変わらないな。

401:デフォルトの名無しさん
08/04/13 19:54:07
>>398
何故無意味か説明できていない。
早く説明してくれ。

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

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

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

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

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

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

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

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

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

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

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

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

413:デフォルトの名無しさん
08/04/13 20:03:30
頭のおかしい奴が話を引っかき回してるようなので一回寝る

414:デフォルトの名無しさん
08/04/13 20:04:44
>>412
ムズカシイ話はワカラナイもん

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

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

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

418:デフォルトの名無しさん
08/04/13 20:06:25
互換性的にはどうなの
__1とかって識別子になったっけ

419:デフォルトの名無しさん
08/04/13 20:06:48
>>418
途中にしか入れられないようにすれば問題ない。

420:デフォルトの名無しさん
08/04/13 20:09:45
・・・まさか >>413>>376 なのか・・・?
・・・ゴクリ。

421:デフォルトの名無しさん
08/04/13 20:14:09
もうC++0bにしちゃえよ

422:デフォルトの名無しさん
08/04/13 20:16:00
実際そうなりそうで怖い。2011年。

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

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

425:デフォルトの名無しさん
08/04/13 20:36:17
>>412
美少女中学生の話も食い付き悪くてさみしい


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


427:デフォルトの名無しさん
08/04/13 21:19:59
>>425
そんなオバサンの話されても。

428:デフォルトの名無しさん
08/04/13 21:29:25
構成された美少女中学生そのものが意味なのだ

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

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

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

429:デフォルトの名無しさん
08/04/13 22:04:51
それは脳内美少女中学生ってことで FA?


430:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/13 23:13:32
10桁までしか使えないじゃんか・・・。
もっといいマクロならそこら辺に落ちてる。

432:デフォルトの名無しさん
08/04/13 23:16:57
最低128ビットくらいは使いたいんだけど

433:デフォルトの名無しさん
08/04/13 23:18:04
0bでスレが加速するってどんだけスレ違いなんだよ

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

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

436:デフォルトの名無しさん
08/04/14 00:39:07
どんな底辺プログラマが書き込んでるんだ?

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

438:デフォルトの名無しさん
08/04/14 01:03:38
>>437
式版の有る無しで何が変わるの?

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

439:デフォルトの名無しさん
08/04/14 04:35:03
#define 0B_00001111 0xff

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

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

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

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

444:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/14 22:37:44
いまさらだけど、0b の話って、
URLリンク(www.open-std.org)
が採用されたらさらに一般化されて解決されるんじゃないの?
誰も上で話に出してなかったけど ...

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

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

448:デフォルトの名無しさん
08/04/15 00:21:30
>>445
>>259を忘れないで。
たぶんこれのことだよね?

449:デフォルトの名無しさん
08/04/15 00:49:32
>>259を理解できていたらここまでスレは加速しない。

450:デフォルトの名無しさん
08/04/15 01:23:02
あれって入る見込みありそうなの?

451:デフォルトの名無しさん
08/04/15 01:23:26
たぶん無理

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

453:デフォルトの名無しさん
08/04/15 07:23:28
別にサフィックス b でいいよ。

454:デフォルトの名無しさん
08/04/15 07:29:49
#define b0 0
#define b00 0
#define b000 0
// ... 一つの数値に128通りの#define
// = 2^129個の#define

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

456:デフォルトの名無しさん
08/04/15 18:47:23
ループを手動でアンロールすればいいっしょ。

457:デフォルトの名無しさん
08/04/15 18:47:45
ああ、配列アクセスしてる時点で無理なのか。

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

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

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

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

461:デフォルトの名無しさん
08/04/16 07:28:12
5bitしか扱えないけどね

462:デフォルトの名無しさん
08/04/16 07:36:04
いつの時代の住人だ

463:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/16 12:22:30
しかし、この例をみるにつけても C++0x は変態ですね

465:デフォルトの名無しさん
08/04/16 19:32:22
これはまだ分かりやすい方だろ。

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

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

468:デフォルトの名無しさん
08/04/16 23:03:57
>467は人生の勝ち組

469:デフォルトの名無しさん
08/04/20 05:34:54
0b狂がいなくなったら誰もいなくなった

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

471:デフォルトの名無しさん
08/04/20 10:53:04
美少女中学生は空を見上げ待ち続けている…

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

473:デフォルトの名無しさん
08/04/20 12:22:39
糞スレたてんなよ

474:デフォルトの名無しさん
08/04/21 01:15:32
>>473
読まなければ良いのでは?

475:デフォルトの名無しさん
08/04/21 01:22:22
糞スレを立てると無駄なCO2を排出することになります

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

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

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

479:デフォルトの名無しさん
08/04/23 12:15:45
お前らスレタイ0x100回読め

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

481:デフォルトの名無しさん
08/04/23 18:35:18
256回読みましたがわかりませんでした

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

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


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

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

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

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

486:デフォルトの名無しさん
08/04/26 23:33:19
typo したがキニシナイ

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

488:デフォルトの名無しさん
08/04/27 03:30:50
委員会のキーワード忌避は強迫観念レベルだな

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

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

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

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

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

493:デフォルトの名無しさん
08/04/28 11:35:23
#define : ->
は無理だったっけ ...

494:デフォルトの名無しさん
08/04/28 11:44:20
>>492
見た目が違うだけじゃんw

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


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

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

498:デフォルトの名無しさん
08/04/28 18:46:28
ECMAScript4ってそんな感じじゃなかったっけ
いやだなぁ

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

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

501:デフォルトの名無しさん
08/04/28 20:35:43
ぐはぁ

502:デフォルトの名無しさん
08/04/28 20:42:16
しかしなぜ->なんだ
Haskellかよ

503:デフォルトの名無しさん
08/04/28 21:04:22
プログラミング言語 Scala
スレリンク(tech板)

Scala違いだ移動しる・・

504:デフォルトの名無しさん
08/04/28 22:49:10
returnでいいじゃんかよ
コンフリクトはないはずだ

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

505:デフォルトの名無しさん
08/04/28 22:50:51
なんかもうどうやってもキモいんだが。

506:デフォルトの名無しさん
08/04/28 22:52:00
ラムダ式くらい 100% 型推論でやってくれ。

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

508:デフォルトの名無しさん
08/04/28 22:56:04
関数型言語的には→なんだから、
->でいいんじゃないの?

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

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

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

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

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

513:デフォルトの名無しさん
08/04/28 23:50:13
returnsのほうがいい

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

515:デフォルトの名無しさん
08/04/28 23:58:27
int (*(int (*(*)(char (*)(char)))(int)))(char) のことだよね?

516:デフォルトの名無しさん
08/04/29 00:10:24
グロい

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

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

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

520:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/29 06:35:41
>>519の方がわかりやすいが?

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

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

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

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

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

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

528:デフォルトの名無しさん
08/04/29 11:58:25
>>526
decltype と auto を駆使することになる

529:デフォルトの名無しさん
08/04/29 18:05:21
あーはやくautoが欲しい

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

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

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

533:デフォルトの名無しさん
08/04/29 20:12:56
互換性無視できる
ネイティブディレクティブとか作ろうよ


534:デフォルトの名無しさん
08/04/29 20:36:05
もう互換性なんかとっくにボロボロなのに今更何を

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

536:デフォルトの名無しさん
08/04/29 21:54:12
なぁ、これは俺の思い過ごしかもしれんのだが

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

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

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


537:デフォルトの名無しさん
08/04/29 22:07:15
関数を動的に生成してるわけじゃないだろ

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

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

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

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

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

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

と、思った


541:デフォルトの名無しさん
08/04/29 23:01:43
ん、よくわからん。
スタックじゃないの?

542:デフォルトの名無しさん
08/04/29 23:04:43
alloca() を思い出した

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

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

545:デフォルトの名無しさん
08/04/29 23:24:34
関数から返せないということか。
何かエセっぽいな。

546:デフォルトの名無しさん
08/04/29 23:28:11
C的に考えると、それでいい気がする。

547:デフォルトの名無しさん
08/04/29 23:30:37
折角だからカリー化とかしたいのになあ。

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

549:デフォルトの名無しさん
08/04/29 23:33:07
カリー化は手動だな

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

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

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

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

553:デフォルトの名無しさん
08/04/30 00:16:03
new を入れたのが間違いの始まりだったんですね

554:デフォルトの名無しさん
08/04/30 00:30:05
プリプロセッサ(笑)

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

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

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

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

559:デフォルトの名無しさん
08/05/04 00:38:19
conceptがまだドラフトに入らないのが気になる
一番楽しみなのに

560:デフォルトの名無しさん
08/05/04 00:39:07
独立wordingの方でまだまだ直しが続いてる。

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

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

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

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

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

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

565:デフォルトの名無しさん
08/05/05 19:59:38
おもろい

566:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/05 21:01:51
境界の違うハッシュを2つ使えば?
(x/1000)*(y/1000) と ((x+500)/1000)*((y+500)/1000) みたいな

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


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

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

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

569:デフォルトの名無しさん
08/05/05 21:36:55
えぴが陰毛茫々じゃないから
進みが遅いと思う

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


571:デフォルトの名無しさん
08/05/05 21:40:59
間違えた、>>568

572:デフォルトの名無しさん
08/05/05 22:01:44
>>561
URLリンク(cpplover.blogspot.com)

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

574:564
08/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:デフォルトの名無しさん
08/05/05 22:34:13
で、0x関係あんのか

576:デフォルトの名無しさん
08/05/05 22:41:03
>>574
関係ねーだろ10000回染んで来い


577:デフォルトの名無しさん
08/05/05 23:41:50
そんなにdelete thisできないな

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

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

580:デフォルトの名無しさん
08/05/06 21:04:03
レベルが高すぎてよくわからん

581:デフォルトの名無しさん
08/05/06 21:05:26
そんなに高くないよ
情報系の学校入れば絶対習う程度

582:デフォルトの名無しさん
08/05/06 21:26:48
学無くても考えれば分かりそうな。

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

584:デフォルトの名無しさん
08/05/06 22:08:43
下着がなくなってたりするんだな

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

586:デフォルトの名無しさん
08/05/07 02:20:45
age

587:デフォルトの名無しさん
08/05/09 03:27:54
>>585
つまらない。

588:デフォルトの名無しさん
08/05/09 09:42:13
どうでもいいよ

589:デフォルトの名無しさん
08/05/14 03:55:48
ここんとこ寒いね

590:デフォルトの名無しさん
08/05/14 04:05:16
うんそうだね

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

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

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

594:デフォルトの名無しさん
08/05/17 18:45:41
strong typedef って入るんだったっけ?

595:デフォルトの名無しさん
08/05/17 19:32:54
URLリンク(www.open-std.org)
これか?
入る見込みは無さそうだねぇ。

URLリンク(www.open-std.org)
>Not ready for C++0x, but open to resubmit in future

BOOST_STRONG_TYPEDEFでもつかっておけば。

596:デフォルトの名無しさん
08/05/17 20:20:55
strong typedefってどういう物?
usingとかとは違くて?

597:デフォルトの名無しさん
08/05/17 20:41:23
typedef元とtypedef先が別の型として扱われるというtypedef。

598:デフォルトの名無しさん
08/05/17 20:43:10
C++09 になってんのか、もう。

599:デフォルトの名無しさん
08/05/17 20:58:14
え、まじ?

600:デフォルトの名無しさん
08/05/17 21:12:18
あ、いや、ちゃうわ。ごめん。

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

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

603:デフォルトの名無しさん
08/05/17 22:43:14
そんなもん別に機能にしなくてもこれでいいんじゃないの

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

604:デフォルトの名無しさん
08/05/17 22:44:25
そんなこともできるのか。それは欲しい

605:デフォルトの名無しさん
08/05/17 23:11:50
intとかでもやりたいんでは

606:デフォルトの名無しさん
08/05/18 22:50:15
実装あるもんなw

607:デフォルトの名無しさん
08/05/18 23:24:53
もう#define int nanikaしろよ

608:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/19 07:37:07
手抜きをするためのものなのに、メンバがコピーされないようじゃ意味がない。

610:デフォルトの名無しさん
08/05/21 10:29:55
mailing 2008-05 きてるお

611:デフォルトの名無しさん
08/05/21 11:09:49
^ω^

612:デフォルトの名無しさん
08/05/21 12:32:56
>>610


613:デフォルトの名無しさん
08/05/21 12:37:34
コンテナとかSTLがみんなconcept化されてる!

614:デフォルトの名無しさん
08/05/21 12:42:31
ドラフトは N2606

615:デフォルトの名無しさん
08/05/21 12:48:01
URLリンク(www.open-std.org)
がスゲイ


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

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

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


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

619:デフォルトの名無しさん
08/05/21 20:38:48
ぶっちゃけC++が廃れる要因になるだけな気がしないでもない

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

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

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

623:デフォルトの名無しさん
08/05/21 21:38:00
>>622
そこで Fortress ですよ

624:デフォルトの名無しさん
08/05/21 22:35:21
>>621
だからD言語を使えと(ry

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

626:デフォルトの名無しさん
08/05/21 22:40:30
>624
GC がいらない

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

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

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

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

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

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

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

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

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

635:デフォルトの名無しさん
08/05/22 22:51:43
実装が大変な割に大したメリットがないからじゃないの

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

637:デフォルトの名無しさん
08/05/22 22:59:03
extern inline なんかどこも完全実装できてないしな
Comeauでさえ

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

639:デフォルトの名無しさん
08/05/23 05:58:24
>>638

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

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

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

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

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

644:デフォルトの名無しさん
08/05/23 21:06:45
コメントに??付けるだけでおかしくなります

645:デフォルトの名無しさん
08/05/23 22:02:47
もう APL になったつもりで変な字いっぱい使おうぜ

646:デフォルトの名無しさん
08/05/23 22:46:19
トリグラフも迂闊に追加できないこんな世の中じゃ。

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

648:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/23 23:46:41
大人気で広まる

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

カオス

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

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

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

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

653:デフォルトの名無しさん
08/05/24 11:43:16
conceptの一番の利点はコンパイル時のエラーメッセージ

654:デフォルトの名無しさん
08/05/24 12:39:46
>>653
concept_mapを理解してないね。

655:デフォルトの名無しさん
08/05/24 12:41:52
今度はコンセプトメタプログラミングの時代ですか

656:デフォルトの名無しさん
08/05/24 12:44:38
自然な流れじゃないかな
ジェネリックス系としては

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

658:デフォルトの名無しさん
08/05/24 14:32:03
滅多metaな超言語それがC++1x

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


660:デフォルトの名無しさん
08/05/24 15:11:07
そんなあなたにC++0x。 もはや別言語だから。

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

662:デフォルトの名無しさん
08/05/24 15:18:31
C++3xで会いましょう

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

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

664:デフォルトの名無しさん
08/05/24 16:20:34
>>663
入れ子にした無名 namespace で代用できない?

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

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

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

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

669:デフォルトの名無しさん
08/05/24 18:01:51
autoとcenceptでC++も分かりやすい言語になるかなあ。

670:デフォルトの名無しさん
08/05/24 18:04:22
ならんね

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

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

672:デフォルトの名無しさん
08/05/24 18:17:27
>>671
> 分かりやすい言語にするために

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

673:デフォルトの名無しさん
08/05/24 18:21:59
>>665
kwsk

674:デフォルトの名無しさん
08/05/24 18:42:42
Perl6 の二の舞になる、なんてことはないよな。あはは

675:デフォルトの名無しさん
08/05/24 18:42:58
>>673
やっぱ出来ねえや
勘違い

676:デフォルトの名無しさん
08/05/24 20:09:08
最近は使う人にやさしくなってきてるよね

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

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

678:デフォルトの名無しさん
08/05/27 08:48:19
GCCからforkすればいい。

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

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

681:デフォルトの名無しさん
08/05/27 20:05:28
>648

682:デフォルトの名無しさん
08/05/27 20:13:09
自動変数の宣言

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

684:デフォルトの名無しさん
08/05/27 21:57:30
規格書いてる奴らが作る訳じゃないからな
2020 ぐらいじゃね?

685:デフォルトの名無しさん
08/05/28 09:04:38
だが実装可能性ぐらいは考えて欲しいんだぜ。

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

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

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

689:デフォルトの名無しさん
08/05/28 19:47:46
>>686
個人でやれるような範囲の話ではない

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

691:デフォルトの名無しさん
08/05/28 20:22:03
特許なんてそのうち切れるさ

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

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


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

695:デフォルトの名無しさん
08/05/29 06:43:01
これはconcept branchだから、
他の新標準機能は入ってないよ。
URLリンク(gcc.gnu.org)
lambdaはgcc headで実装始まってるはず。

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

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


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

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

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

701:デフォルトの名無しさん
08/06/04 14:05:12
まずはまともな処理系を、話はそれからだ

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

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

STLヤベー、超便利ー。

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

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

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

Boostたのしー。

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


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

704:デフォルトの名無しさん
08/06/04 16:26:10
conceptだってコンパイル・エラー見やすくなるしね。


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

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

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

708:デフォルトの名無しさん
08/06/05 20:08:45
export イラネ
予約語から外してほしい

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

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

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

711:デフォルトの名無しさん
08/06/05 21:55:37
置き去りかよw

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

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


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


715:デフォルトの名無しさん
08/06/05 22:53:25
>710
Fortran2008は結構強烈だぞ?

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

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

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

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

719:デフォルトの名無しさん
08/06/06 13:01:23
>>713
registerもいつか役に立つ日が来るのでしょうか?

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

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

722:デフォルトの名無しさん
08/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の厳密なルールを暗記してるわけじゃないし。
答え:URLリンク(blogs.msdn.com)

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

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

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

725:デフォルトの名無しさん
08/06/06 17:52:57
つ f(string("Hello"), string("Goodbye"));



726:デフォルトの名無しさん
08/06/06 18:45:45
正直ついていけてません。すみません orz


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


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

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

730:デフォルトの名無しさん
08/06/06 20:42:58
何度も言うようだが inline がいいと思うお

731:デフォルトの名無しさん
08/06/06 20:45:01
却下されたんだろそれ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch