is_cpp0x_lambda_expression meta function をつくろう!

3
若年寄(もう若くない) @kikairoya

@okomok result_type<func_type()>はいいけど、result_type<func_type()>::typeはダメだよって書いてあるように読めて、該当箇所はresult_of<func_type()>::typeになってますね [宮崎産を食べよう]

2010-09-27 22:06:37
若年寄(もう若くない) @kikairoya

@okomok typedef typename result_of<func_type()>::type nullary_result_type; をtypedef result_of<func_type()> nullary_result_typeにしたら通りました

2010-09-27 22:07:27
@okomok

@kikairoya そうするとこんどは本当に引数無しのが呼べなくなります 笑

2010-09-27 22:10:21
若年寄(もう若くない) @kikairoya

んーそれはもう一段::typeをどこかで噛ませるようにしないといけないんじゃないかな…どのみちpaperにもresult<f()>::typeはそのようなオーバーロードが無い場合はill-formedだと書いてある [宮崎産を食べよう]

2010-09-27 22:13:23
若年寄(もう若くない) @kikairoya

つまり、nullaryで呼べるかどうかを判定せずにいきなり::typeには出来ない、とするとどこか別のところで一段::typeするか、enable_ifでなんとかするか。 [宮崎産を食べよう]

2010-09-27 22:14:22
@okomok

oven::ret<bool>( a_lambda )のようなのを作るしかないんじゃないかな。egg::retはオーバースペックだと思うから。 C++0xなら簡単・・・なはず。 is_cpp0x_lambda_expressionみたいなのがあれば対応できますけど

2010-09-27 22:14:34
若年寄(もう若くない) @kikairoya

えーと、これどげんすればよかけ。。。 [宮崎産を食べよう]

2010-09-27 22:16:03
@okomok

@kikairoya それはill-formedになるかもしれないから、zero-argumentで成功しないといけないって意味です。

2010-09-27 22:18:46
若年寄(もう若くない) @kikairoya

あれ…壮絶な読み間違いをしている? [宮崎産を食べよう]

2010-09-27 22:19:30
Akira Takahashi @cpp_akira

A_LambdaがC++0xラムダならA_Lambda()でvoid返すようresult_ofを部分特殊化すればいいのか?

2010-09-27 22:30:47
Akira Takahashi @cpp_akira

まず、std::result_ofの仕様を読もう。

2010-09-27 22:32:13
若年寄(もう若くない) @kikairoya

インスタンス化の経路を追いかけきれない… [宮崎産を食べよう]

2010-09-27 22:33:42
@okomok

@cpp_akira それができるなら解決策になると思います

2010-09-27 22:38:26
若年寄(もう若くない) @kikairoya

lambda-expressionかどうか判別する方法なんてあるん? [宮崎産を食べよう]

2010-09-27 22:38:59
Akira Takahashi @cpp_akira

"C++0xの"ラムダかを判定するのはムリ。

2010-09-27 22:40:50
若年寄(もう若くない) @kikairoya

あーやっぱ一段::type噛ませられればいいんだよなあ [宮崎産を食べよう]

2010-09-27 22:45:39
Akira Takahashi @cpp_akira

そういえば、result_ofはいつの間にか<functional>から<type_traits>に移ったんだよなー、って前にも言ったな。

2010-09-27 22:48:29
Akira Takahashi @cpp_akira

std::result_ofの仕様は、完全にdecltype任せになってるからdecltypeの仕様を読まねば。

2010-09-27 22:51:15
Akira Takahashi @cpp_akira

std::result_ofの仕様が・・・。

2010-09-27 23:05:15
若年寄(もう若くない) @kikairoya

ぬあーeval_ifばっかりで::typeつけると片っ端からインスタンス化される… [宮崎産を食べよう]

2010-09-27 23:06:50
若年寄(もう若くない) @kikairoya

一段ネスト深くするだけなんだけどなー…どこを深くすればいいのかさっぱりだ [宮崎産を食べよう]

2010-09-27 23:08:03
Akira Takahashi @cpp_akira

【急募】 is_cpp0x_lambda_expressionメタ関数 【変態のみなさんがんばって><】

2010-09-27 23:08:30
でちまるさん(実際かわいい) @decimalbloat

Fがラムダ式の型だとresult_of<F()>が失敗するんだっけ?

2010-09-27 23:09:36