@okomok result_type<func_type()>はいいけど、result_type<func_type()>::typeはダメだよって書いてあるように読めて、該当箇所はresult_of<func_type()>::typeになってますね [宮崎産を食べよう]
2010-09-27 22:06:37@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んーそれはもう一段::typeをどこかで噛ませるようにしないといけないんじゃないかな…どのみちpaperにもresult<f()>::typeはそのようなオーバーロードが無い場合はill-formedだと書いてある [宮崎産を食べよう]
2010-09-27 22:13:23つまり、nullaryで呼べるかどうかを判定せずにいきなり::typeには出来ない、とするとどこか別のところで一段::typeするか、enable_ifでなんとかするか。 [宮崎産を食べよう]
2010-09-27 22:14:22oven::ret<bool>( a_lambda )のようなのを作るしかないんじゃないかな。egg::retはオーバースペックだと思うから。 C++0xなら簡単・・・なはず。 is_cpp0x_lambda_expressionみたいなのがあれば対応できますけど
2010-09-27 22:14:34A_LambdaがC++0xラムダならA_Lambda()でvoid返すようresult_ofを部分特殊化すればいいのか?
2010-09-27 22:30:47そういえば、result_ofはいつの間にか<functional>から<type_traits>に移ったんだよなー、って前にも言ったな。
2010-09-27 22:48:29std::result_ofの仕様は、完全にdecltype任せになってるからdecltypeの仕様を読まねば。
2010-09-27 22:51:15