C++0x 3 ..
[2ch|▼Menu]
175:デフォルトの名無しさん
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


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

5372日前に更新/166 KB
担当:undef