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


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

C++0x 4



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

wikipedia
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/
C++0x 3
pc11.2ch.net/test/read.cgi/tech/1204808027/

152 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:38:22 ]
>>148
> 末尾コールのジャンプ変換とループへの変換との違いは?
ジャンプ先が別のルーチンか呼自分の内部かの違いに過ぎないだろ?
アセンブラやってる奴ならみんな使ってると思うんだが…


153 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:40:17 ]
>>152
編集ミス
x …が別のルーチンか呼自分の…
o …が別のルーチンか自分の…


154 名前:152 mailto:sage [2008/07/12(土) 00:46:52 ]
補足
つっても, 戻り番地スタックに積む程度のコストみたいだが


155 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:48:33 ]
GCC 3.4.4で

f(a, n)
{
 if (a==0)
  return n;
 
 return f(a-1, n*a);
}



_f:
 pushl %ebp
 movl %esp, %ebp
 movl 8(%ebp), %edx
 movl 12(%ebp), %eax
 jmp  L3
 .p2align 4,,7
L6:
 imull %edx, %eax
 decl %edx
L3:
 testl %edx, %edx
 jne L6
 popl %ebp
 ret

でした

156 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:51:35 ]
>>150
継続スタイルに変換できるのはしってるよ、そんなの常識。
CPSを中間表現に使っているコンパイラも、
オブジェクトコードの生成ではCSP止めてます。
再帰スタックの代わりに、継続の入れ子を持ち運ぶのはとても効率が悪いので。
まともな処理系でAck関数をループや継続に変換して実行するものはないでしょ?
お遊びや学習用ってことなら俺も書いたことがあるけれど。


157 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:52:25 ]
>>155
こんなのコンパイルしてみ
int f(...){return ...;}
int g(...) {return f(...);}
おそらく g() の最後は call f になると思う


158 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:54:04 ]
>>157
gccがやるのは自己再帰の関数内ジャンプだけじゃないの? > おそらく

159 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:57:24 ]
>>157
それはインライン展開すべきなの?

160 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:59:19 ]
>>156
CL-USER> (lisp-implementation-type)
"SBCL"
CL-USER> (lisp-implementation-version)
"1.0.17.42"
CL-USER> (defun a (x y)
(declare (optimize (speed 3) (safety 0))
(type fixnum x y))
(cond ((zerop y) 0)
((zerop x) (the fixnum (* 2 y)))
((= y 1) 2)
(t (the fixnum (a (- x 1) (the fixnum (a x (- y 1))))))))
A
CL-USER> (disassemble 'a)
;;; 続く




161 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:00:53 ]
;;; 続き 1/2
CL-USER> (disassemble 'a)
; 03B5BE33: L0: 4885C9 TEST RCX, RCX ; no-arg-parsing entry point
; 36: 750D JNE L2
; 38: 31C9 XOR ECX, ECX
; 3A: L1: 488D65F0 LEA RSP, [RBP-16]
; 3E: 488B6DF8 MOV RBP, [RBP-8]
; 42: C20800 RET 8
; 45: L2: 488D04D500000000 LEA RAX, [RDX*8]
; 4D: 4885C0 TEST RAX, RAX
; 50: 7505 JNE L3
; 52: 48D1E1 SHL RCX, 1
; 55: EBE3 JMP L1
; 57: L3: 4883F908 CMP RCX, 8
; 5B: 7507 JNE L4
; 5D: B910000000 MOV ECX, 16
; 62: EBD6 JMP L1
; 64: L4: 488BC2 MOV RAX, RDX
; 67: 4883E801 SUB RAX, 1
; 6B: 488945E8 MOV [RBP-24], RAX
; 6F: 4883E908 SUB RCX, 8
; 73: 488BC5 MOV RAX, RBP


162 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:02:22 ]
;;; 続き 2/2 技と1行だぶらせてある
; 73: 488BC5 MOV RAX, RBP
; 76: 488BDC MOV RBX, RSP
; 79: 4883EC40 SUB RSP, 64
; 7D: 488943F8 MOV [RBX-8], RAX
; 81: 488BEB MOV RBP, RBX
; 84: 488D0506000000 LEA RAX, [RIP+6]
; 8B: 488945F0 MOV [RBP-16], RAX
; 8F: EBA2 JMP L0
; 91: 488B55E8 MOV RDX, [RBP-24]
; 95: EB9C JMP L0
; 97: 90 NOP
; 98: 90 NOP
; 99: 90 NOP
; 9A: 90 NOP
; 9B: 90 NOP
; 9C: 90 NOP
; 9D: 90 NOP
; 9E: 90 NOP
; 9F: 90 NOP
;
NIL
CL-USER>


163 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:05:57 ]
Common Lispは使いたくないな

164 名前:デフォルトの名無しさん [2008/07/12(土) 01:28:52 ]
>>163
ほっとけ、Lisp は俺の電卓だ


165 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:32:00 ]
>>164
最近電卓はPythonに宗旨替えしました

166 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:40:14 ]
俺の電卓はRuby

167 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 04:06:59 ]
そこはウソでもよいから「俺の電卓はC++コンパイラ」と書くべきだろ・・・スレ的に考えて

168 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 04:14:48 ]
テ、テンプレート!


169 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 07:41:25 ]
じゃあ俺の電卓はghostscript

170 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 12:09:16 ]
俺の電卓はgoogle マジで



171 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 13:48:43 ]
俺の電卓は電卓

172 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 13:51:02 ]
calc.exeで十分

173 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 15:00:26 ]
>167
小数計算ができませn! ><

174 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 15:25:10 ]
本物のC++プログラマは、ジョブをこなすのに、実行時プログラミングをまったく必要としない。
彼らはキーパンチャーと規格準拠なC++0x コンパイラ、そしてアニメがあれば完璧に幸福になれるのだ。

本物のプログラマはテンプレートで整数値演算をする。
本物のプログラマはで固定小数点数演算をする。
本物のプログラマはテンプレートでIEEE754の単精度演算を必要ならば'実装する。
本物のプログラマは倍精度演算をテンプレートとコンパイラの64bit整数型でする。

もしテンプレートで出来なければ、プリプロセッサでやる。プリプロセッサで出来なきゃ、それはやる価値がないのだ。

175 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:36:56 ]
たらいまわし関数なんてはじめてきいたんでぐぐるとこんなのでてきた

/*
再帰的に定義された次のような関数。特に用途はない。
*/
int tarai(int x, int y, int z)
{
if (x <= y) return y;
return tarai(tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y));
}

たった数行なのに何が起こるか想像できないのは、おれだけ?
大学の時、再帰で書けばエレガントになる、ループで書くのは素人、と刷り込まれたので
再起が出てくるたびに自分はセンスがないと思わされた苦い思い出。

176 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 18:33:13 ]
おまえだけ。
わからないことを自慢しなくていいよ

177 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 18:38:27 ]
引数評価の順番がわからんので俺もどう動くか想像できない

178 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 23:37:27 ]
>>177
別に副作用ないんだから引数評価の順番は結果に関係ないだろう

179 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 15:25:45 ]
計算量の例題という趣旨から外れるが、
再帰定義がなぜわかりにくいかがよくわかる例だなと思った。
筋のいいやつは数学的定義がそのまま書けるようなメリットがあるが、ほんの一握りだなと
アプリとか分析エンジンとか作ってて感じる。


180 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 16:00:59 ]
ただ>>175はループに書き直すと更にわけわからなくなる気がする。



181 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 16:06:24 ]
しかしD言語ではたらい関数もコンパイル時に評価できるのに、
0xのconstexprはほんとがっかりだなあ。

182 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 17:57:38 ]
>>181
関数が提唱された本来の趣旨を考えると、コンパイル時にたらいをまわしても
意味ないような気がするんだが、気のせいか?


183 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:02:33 ]
コンパイル時に
int tarai(int x, int y, int z){return x<=y ? y<=z ? z : x : y}
に最適化して欲しいって話だろ

184 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:03:40 ]
違った
int tarai(int x, int y, int z){return x<=y ? y : y<=z ? z : x;}

185 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:08:45 ]
>>182
そりゃあ、そもそもたらい関数自体に意味がないから、
コンパイル時にたらいをまわせても意味がないのは自明なんだけど、
言いたいのはそういうことじゃなくて、

再帰ができないとか、return一文で書かないといけないとか制約が多すぎて使い勝手が悪い。

186 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:27:37 ]
そりゃまあコンパイル時評価したけりゃTMPで十分だし
わざわざ新予約語作ってまでconstexprなんて仕組みを作る理由もよくわからない

187 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:34:54 ]
constexprは普通のコードで書けることや実行時にも実行できることに価値があるんじゃないの?

従来だとコンパイルタイムにもランタイムにも欲しい値がある場合、
普通の関数とテンプレートで二つ同じ処理を書かないといけなかった。

それが制限があるとはいえ普通のコード一つで済むようになるのは、
プログラマの負担の観点から言うと大きな進歩だと思う。

とはいえ、再帰ができないんじゃテンプレートの代わりにはならないよなあ…

188 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 23:05:38 ]
いらない機能は使わなけりゃいい
禿もそう言っている

189 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:04:53 ]
ぶっちゃけauto以外の新機能は全部いらない
最終的にはautoだけ取り入れられてあとはガン無視されるだろう
C99がlong longとか以外ガン無視されているように

190 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:17:36 ]




191 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 01:19:27 ]


192 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 13:30:51 ]
autoに食いついてる時点で素人丸出し
普通autoなんて使わない

193 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:07:21 ]
まじで?
型指定子としてのautoはいるだろ。

194 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:33:34 ]
auto int x;

195 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:46:22 ]
signedかunsignedか自動的に判断するのかな?
そんな風に考えるようになりました。

196 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:46:55 ]
馬鹿じゃねーの?

197 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:48:17 ]
>>195
型名が後に続く場合は自動変数の宣言になります。

198 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:52:21 ]
馬鹿なことやってないで、コンパイラに型推論要求すりゃいい話じゃねぇの?


199 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:54:44 ]
それがautoなんです(><)

200 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:44:24 ]
>>199
C++ の言語仕様でどこまでトレースきるのさ?




201 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:58:46 ]
C++ の言語仕様にも手を入れたのでへっちゃらですよ

202 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:36:15 ]
ムーブセマンティクスとかコンセプトとか、とりあえずライブラリ実装者が使ってくれれば、
利用者は何もしなくても恩恵を被れるって機能も多いぞ。

203 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:02:45 ]
ムーブセマンティクスは微妙だな。
また頭ひねることになりそう。
constくらいは。

204 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 21:23:06 ]
いやいやあれは超便利だろ。

205 名前:デフォルトの名無しさん [2008/07/18(金) 21:34:59 ]
美少女中学生が呼吸をするたびに形のいいおっぱいがオートムーブ

206 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 21:41:16 ]
ムーブの概念はコピーより自然
今までなかったのが不思議

207 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:57:13 ]
そりゃ一般的な機械語にムーブがなかったからだろうよ。

208 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 23:39:30 ]
autoなんて、0x新仕様の中でも一番利用者として理解しやすい機能の1つなんだから
少しは勉強してからカキコしろよ。だってここ0xのスレなんだぜ。
という漏れも、Move Semanticsはよく理解してないので、えらそうなこと言えないけどさ。ごめん。

209 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:10:16 ]
mov ebx, eax

210 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:28:24 ]
>>209
俺それ書くの我慢したのに……。



211 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:12:06 ]
copyだし

212 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:15:12 ]
その点、Z80ニーモニックは正しいな

213 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:47:49 ]
conceptのところ読んでみたけど
late_checkとaxiomの意味がわからん・・
何がうれしくなるんだろう

214 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 04:24:04 ]
>>208
勉強してから書くのは大変だ。
読んで書くくらいなら、かなりの割合で達成してるだろう。

だからみんな単語にだけ詳しいんだよww
特に俺www
読んで分かるのは大変だろ。
言い訳にならないのは承知だが。

215 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 04:38:01 ]
autoの便利さとコンセプトの強力さとラムダ式の醜悪さと0bが却下されたことさえ知ってれば
このスレでは充分

216 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 05:03:03 ]
個人的には initializer_list に地味に可能性を感じる

217 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 05:23:33 ]
xchg eax,ebx

218 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 08:05:19 ]
>>213
late_check:
あるインターフェースに適合するかどうかを
C++ではシグネチャーベースで判定するので、
テンプレート引数が決定して、
テンプレートインスタンスを生成する時にしか、
全体の適合性を判定できない場合が多い。
かといって、テンプレートの定義時に判定できる部分も、
インスタンス生成時まで判定できないのでは、
テンプレートのプログラミングがやりにくい。
だから、late_checkブロックの部分だけ、インスタンス生成時、
後は定義時に整合性のチェックを行う。
axiom:
条件式を最適化で利用して良い。
つまり型に対する論理的な制約になる。
Eiffelの「不変条件」みたいなもの。



219 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:18:40 ]
>>218
concept が与えられてなお

>テンプレート引数が決定して、
>テンプレートインスタンスを生成する時にしか、
>全体の適合性を判定できない場合が多い。

な場合についてkwsk

220 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:50:12 ]
>>208
知ってるかもしれないけど、
Move semantics(右辺値参照)に関しては禿がThe C++ Sourceに記事書いてたよ。
結構分かりやすい説明だった



221 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 13:15:29 ]
Move Semanticsは内部にコンテナとか持っているclassの
operator書いてればありがたみが分かるだろう。


222 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 01:59:02 ]
Extensible Literals が Proposed wording under review in Core にあるんだけど
まだ欲張るのか?
マジで09年に仕上げるつもりあるのか?

楽しい機能だから入るんなら歓迎だけどさぁ

223 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 02:24:34 ]
提案者にBjarne Stroustrupの名前があるので無下にできそうにないな

224 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 02:46:24 ]
>>222
だから2000+0xF年まではセーフだと…

225 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 06:33:47 ]
0x200F 旧西暦8207年 宇宙暦308年ついにC++0xの完成をみた。銀河の歴史がまた一頁。

226 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 06:45:23 ]
>>222
だいぶ前からその段階だから、今はもうほとんど、
"Integrated into working paper"に近いんじゃないのかな?

しかしこれliteralじゃねーだろ。
literalと組み合わせられるコンストラクタだ。

"こんにちわ、世界!"ISO2022JP

とかなんでもありだ。二進数リテラル問題も解決。
'_'で4桁ごとに区切るようなoperator"b"を書きたきゃ書けばいい。


227 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 09:16:16 ]
もう永久に0xでいいよ

228 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 09:57:19 ]
>>226
Cooked literalですw

229 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 10:26:02 ]
>>226
>"こんにちわ、世界!"ISO2022JP
>とかなんでもありだ。
それはどうかな?そもそも "..." の ... 内に非アスキー文字を書くと
未定義なんでは? (実際上はべつとして。)
operator "ISO2022JP" に渡る以前にエンコーディングが
どうなってるかわからないとどうしようもないべ。


230 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 10:39:17 ]
さすがに未定義ってことは…
処理系に依存するくらいでは



231 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 10:40:45 ]
char32_tで受け取れるようになればいいんだよ。

232 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 10:59:13 ]
やるとしても、
L"こんにちわ、世界!"ENCODING
だな。

233 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 11:01:43 ]
失礼しました、undefined じゃなくて implementation-defined ぽいですね。
char32_t は Unicode だと決まってるから、
U"こんにちわ、世界!"ISO2022JP
と書いておけば問題ないわけですね。なんか 先頭のU が気持ち悪いけど。

234 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 11:18:14 ]
operator "suffix"(char32_t const*, size_t)がinvokeされるわけですね。

>>226
つ constexpr

235 名前:デフォルトの名無しさん [2008/07/30(水) 07:55:42 ]
www.open-std.org/jtc1/sc22/wg21/
News 2008-07-28: The 2008-07 mailing is available
News 2008-07-28: The C++ Standard Library Issues List (Revision 58) is available
News 2008-07-28: The C++ Standard Core Language Issues List (Revision 57) is available

236 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 01:37:54 ]
誰も反応しないのは英語読めないからですね

237 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 01:39:08 ]
自己紹介乙

238 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 01:43:12 ]
そんなことより0bをだな

239 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 04:28:43 ]
というか詰めの作業に入っているから、
そんな勢い良くリアクションするようなことはない。
ただ思った以上に書き直しが多かったので驚いた。> Concept Rev.7

240 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:25:37 ]
今さら変えられないんだろうけど、
ストリーム関連の命名規則がぐちゃぐちゃすぎる。
書式を変更すると保存されるのも使いにくい。
cout << hex(123); みたいにしてほしかった。
これじゃあprintfの方が便利とか言われても仕方ない。

あと、再帰のできないconstexprには失望した。
コンパイラの仕事は、実行時向けに最適化してループにするだけじゃね?



241 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:35:10 ]
実行時にループしたらconstexprとは呼べない。

242 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:41:59 ]
実行時はすでに定数じゃないが、
しかし現状で、テンプレートでコンパイル時再帰の定数ができる以上、
constexprも再帰できてほしかったなぁ。

243 名前:240 mailto:sage [2008/08/02(土) 14:47:06 ]
>>241
N2235には変数を引数に取る例も載ってる。
実行時も使えるよっていうメリットを残しながら、
再帰できるようにするのは可能だと言いたかった。

244 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 15:31:10 ]
>>243
仮にそうだとしても、再帰するconstexpr関数がどうせ実行時評価しかしないなら、constexpr付ける意味が無いのでは。

245 名前:240 mailto:sage [2008/08/02(土) 17:06:39 ]
>>244
いやいや、もちろんコンパイル時も使う。
定数のみを引数に取ったらコンパイル時に展開すればいい。

constexpr int pow(int x, unsigned int n) { return n > 0 ? x * pow(x, n - 1) : 1; }
...
char buffer[pow(2, 8)]; // 定数
unsigned int n; std::cin >> n; std::cout << pow(2, n); // 変数

constexprを取ったら、配列のサイズが定数式じゃないから通らない。
テンプレートでメタ関数として書くと、今度は変数が使えない。

246 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 17:39:31 ]
>>245
可能かどうかで言えばまあ可能なんだろうな。

N2235も「今はまだそのときじゃない」って感じだし。

247 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 20:36:23 ]
constexprは「実行時にも使いまわせる型厳密なマクロ」だよな。
お世辞にもコンパイルタイム関数実行とは呼べない。

248 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 21:55:46 ]
再帰がやりたければtemplate使えばいいって考えがあったから
constexprは再帰禁止にしたのではないかと思う。

249 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:39:28 ]
C++の拡張の目的としてあげられている
ユーザー定義型に組み込み型と同等の待遇を与える
っていうのを実現するのには今のconstexprで十分っていう判断だと推測

250 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:56:41 ]
テンプレート引数は小数使えないしな・・・。



251 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 01:54:32 ]
俺は>>245の愚案には反対。
constexprの狙いから外れすぎ。


252 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 04:05:47 ]
浮動小数点演算テンプレートを作ればいい






[ 続きを読む ] / [ 携帯版 ]

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

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