constexpr ~ 歩く魔導書が犬耳を装備しプロゴルファーになるまでの記録 ~

12
Akso de la Malbono @Cryolite

http://twitter.com/Flast_RO/statuses/2237571467837440 が当然できるものだと思い込んでいたけれど,これは原理的にできないんじゃないでしょうか……夢は儚く散ってしもた.夢破れてサンガリアやで…….

2010-11-10 18:22:14
病気の美少女 @lyrical_logical

@Cryolite GCC 拡張で文字列リテラルを template<char... seq> な関数テンプレート呼び出しにするのを作っちゃえば C++1x に入って大勝利ですね。

2010-11-10 18:25:09
にゃははー仙人 @Flast_RO

template < int idx, std::size_t N > constexpr char get( char str[ N ] ) { return str[ idx ]; } ってのとかできないのかな いや、試してないけど で、マクロ使って展開とか...むりか・・・

2010-11-10 18:26:19
若年寄(もう若くない) @kikairoya

constexprな関数をdecltypeに掛けるとどうなるんだ

2010-11-10 18:27:37
若年寄(もう若くない) @kikairoya

あうー、trailing-return-typeの中では引数の名前使えないのね

2010-11-10 18:32:01
若年寄(もう若くない) @kikairoya

やっぱりテンプレート引数に直接文字列リテラル渡せないとだめなんだよ!!!

2010-11-10 18:37:44
Akso de la Malbono @Cryolite

@lyrical_logical それを負けと言うんや!! 負け犬耳なんや!!! くぅ~んくぅ~ん

2010-11-10 18:39:06
Norihisa Fujita, ぽん @fjnli

始まった瞬間に、一部終わってしまったか… > constexpr

2010-11-10 18:42:01
Akso de la Malbono @Cryolite

きっと D 言語ユーザ(なぜかゆっくり霊夢のお面をかぶっているイメージ)はこんな C++0x の醜態をあざ笑っているんやでえええぇぇぇぐぎぎぎぎぎ!!!!!

2010-11-10 18:49:16
SKS rep @repeatedly

あざ笑う以前に見てもいないというね RT @Cryolite: きっと D 言語ユーザ(なぜかゆっくり霊夢のお面をかぶっているイメージ)はこんな C++0x の醜態をあざ笑っているんやでえええぇぇぇぐぎぎぎぎぎ!!!!!

2010-11-10 18:50:37
SKS rep @repeatedly

まぁC++とか所詮その程度.

2010-11-10 18:52:25
めるぽん.c @melponn

1000ページ強の紙に注意して下さいね RT @repeatedly: あざ笑う以前に見てもいないというね RT @Cryolite: きっと D 言語ユーザ(なぜかゆっくり霊夢のお面をかぶっているイメージ)はこんな C++0x の醜態をあざ笑っているんやでえええぇぇぇぐぎぎぎぎ

2010-11-10 18:53:11
はるえす@イカのフレンズ @Rayerd

凶器的な意味か RT @melponn: 1000ページ強の紙に注意して下さいね RT @repeatedly: あざ笑う以前に見てもいないというね RT @Cryolite: きっと D 言語ユーザ(なぜかゆっくり霊夢のお面をかぶっているイメージ)はこんな C+...

2010-11-10 18:55:02
SKS rep @repeatedly

まぁ今のC++erは今までコンパイルタイムに色々出来なくても我慢出来てたわけだから,C++0xのは丁度いいんじゃないですかね^^

2010-11-10 19:00:26
若年寄(もう若くない) @kikairoya

あーマクロ様にお出まし願えば…

2010-11-10 19:02:29
若年寄(もう若くない) @kikairoya

…再帰マクロか、お化けに任せたいなあ

2010-11-10 19:03:52
若年寄(もう若くない) @kikairoya

ああプリプロセス時に文字列リテラルの長さがわからんからだめね

2010-11-10 19:08:09
Akso de la Malbono @Cryolite

http://ideone.com/OVMk1 まあ,こういうことして文字列リテラルからコンパイル時の「値」を作って使う分にはまったく問題なく使えるんだよにぇ…….文字列リテラルからコンパイル時の「型」を作るのがどうしても無理ぽ.

2010-11-10 23:33:04
Akso de la Malbono @Cryolite

あ,いっけね.せっかくオブジェクトジェネレータ作ってたのに使ってないコードうpしちゃった.テヘッ☆ http://ideone.com/AaTDm

2010-11-10 23:35:45
Akso de la Malbono @Cryolite

literal type じゃないクラスのメンバ関数が constexpr 指定されてて,そいつが literal type なメンバ変数の constexpr メンバ関数に委譲していれば戻り値も潜在的コンパイル時定数か.んじゃ別に文字列を型に載せなくても良い気もしてきたわわわ.

2010-11-10 23:52:05
Akso de la Malbono @Cryolite

値だけだと関数オーバーロード等に使えないので文字列を型に載せるべく試行錯誤してたけれど, func("name", []{}) などという黄昏よりも暗き存在(もの)でいくらでも固有の型(とコンパイル時文字列定数とのマッピング)を作り出せるのでわりあいどーでもよくなってきたわわわ.

2010-11-11 00:06:09
Akso de la Malbono @Cryolite

これよ,これ.「ダメだ.この言語じゃこんなこともできないんだ……」という敗北感と,「この言語でなんとかするんだ……言語仕様の重箱の隅に必ず間隙があるはず!」という不屈の精神との間で揺れ動いて,最後にとうとう言語内でなんとかするための妥協点を見出す喜び.久しく忘れていたわわわわわ.

2010-11-11 00:16:01
Fadis @fadis_

文字列を 喰ってる... これがC++0x... QT @Cryolite: http://ideone.com/uXhYH が GCC 4.6 で通ったけれど,これが通るということは勝つる! 勝つるでえええぇぇぇ!!!

2010-11-11 00:16:31