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

12
前へ 1 ・・ 3 4
Akso de la Malbono @Cryolite

@lyrical_logical いえ,仕様云々以前の話として,たとえば関数呼び出し f("hoge") が string<'h', 'o', 'g', 'e'> なる型を返すのは原理的に不可能に思われるので,この構文以外のどんな感じをイメージしているのかにゃー,と思いまして.

2010-11-14 20:00:23
病気の美少女 @lyrical_logical

@Cryolite "hoge" の長さ N はとれるので、そこから 0..N-1 の parameter pack indices を作って src[indicies]... で unpack できるかなーと思ったんですが、何かこれはダメなんですかね多分。

2010-11-14 20:02:25
病気の美少女 @lyrical_logical

@Cryolite string は struct string<char... seq> { static const char* value; }; const char* string<char... seq>::value = { seq... }; とかで。

2010-11-14 20:04:06
Akso de la Malbono @Cryolite

@lyrical_logical f("hoge") が仮に string<'h', 'o', 'g', 'e'> を返せるとすると f は signature として string<'h', 'o', 'g', 'e'> f(char (&)[5]) を持つはずで,

2010-11-14 20:06:01
病気の美少女 @lyrical_logical

@Cryolite ようは実引数に関数の signature が引きずられるのはなんかおかしいってことですよね。まあ確かにそうなんですがなんとかなるじゃろホイみたいな…

2010-11-14 20:07:21
Akso de la Malbono @Cryolite

@lyrical_logical そうすると f("huga") は string<'h', 'u', 'g', 'a'> f(char (&)[5]) なる signature を持つはずで, f は戻り値の型だけが違うオーバーロードがなされており,これ無理じゃね? てぅ.

2010-11-14 20:08:05
病気の美少女 @lyrical_logical

@Cryolite うーん全くおっしゃる通りですね漠然としか考えてませんでしたが、矢張りいくらコンパイル時定数とはいえ値の世界から型を作るのは無理そうですね。まあなら型で表現しなければいいじゃんとも思うんですが。型で表現せずにどこまで出きるかは全く知らないのでなんともです。

2010-11-14 20:10:24
Akso de la Malbono @Cryolite

@lyrical_logical src[indices]... は値の操作としては問題ないはずです.多分,これを trailing return type あたりに載せようとしているんだと思いますけれど,実引数の名前は unevaluated なところにしか書けないはずです

2010-11-14 20:13:21
病気の美少女 @lyrical_logical

@Cryolite まあ無理ですね。矢張りリテラル拡張しましょう。

2010-11-14 20:18:18
Akso de la Malbono @Cryolite

@lyrical_logical コンパイル時定数で相当程度のことができるはずですけれど,関数のオーバーロードだけはどうしてもできないかと.コンパイル時決定な関数の呼び分けはできるんですが,こうすると全部の関数がインスタンス化されてオーバーロードより力不足なんでぐぬぬぬぬ.

2010-11-14 20:19:07
Akso de la Malbono @Cryolite

@lyrical_logical 「これ無理じゃね?」があってこそ始まる C++ 黒魔術ストーリー!!!

2010-11-14 20:31:30
病気の美少女 @lyrical_logical

@Cryolite 黒魔術は頂けません。黒といえば黒子さんではないでしょうか?

2010-11-14 20:33:48
病気の美少女 @lyrical_logical

あとボクは constexpr に対して興味がないのでした。やりました!!

2010-11-14 20:34:58
病気の美少女 @lyrical_logical

女子中学生フォローミー!(但しテレポーターの変態に限る

2010-11-14 20:37:49
Akso de la Malbono @Cryolite

@lyrical_logical はい!!! あと,「黒魔術」という言葉が頂けないようでしたら, C++ 言語仕様の堅いガードを必死に潜り抜けようと懸命にもがく様子と,お姉さまの堅いガードを必死に潜り抜けようとするも電撃で敢え無く撃退されてしまう様子を重ね合わせてみては!?

2010-11-14 20:41:06
kinaba @kinaba

『とりあえず全部のコンパイル時定数の型はその値だけを含むsingleton type(178の型はintではなくInt<178>、"foo"の型は String<'f','o','o'>)。んで、それらの型は全て普通の型に暗黙変換可能(Int<178>→intなど)。』

2010-11-14 20:44:31
kinaba @kinaba

とするのは、意外とドラスティックに見えて実はそうでもなくC++とかJavaとかHaskellの型レベル処理を劇的に使いやすく変えるんじゃないかなーということをこの前妄想していたのを思い出した。

2010-11-14 20:45:50
kinaba @kinaba

int x; は、動的にはともかく静的には「なにかわからんけどintであることはわかる」から仕方なくintと抽象化しているのであって、123というリテラルは静的にも123以外にありえないのでInt<123>という静的な型を持ててよくて、もちろん抽象化したい時は時で自由にすればよく

2010-11-14 20:53:07
前へ 1 ・・ 3 4