http://thread.gmane.org/gmane.comp.lib.boost.devel/231185/focus=231432
regular()が出力する型のindirect_functor関数オブジェクトが、boost::result_of
boost::result_of
indirect_functorはFをboost::optional
template <class P> struct pointer_value { typedef typename P::value_type type; }; namespace boost { template <class F> struct result_of<indirect_functor<F>()> { typedef typename boost::result_of< typename pointer_value<F>::type() >::type type; }; }
実際のコードは以下を参照:
indirect_functor.hpp
それともう一件。
http://thread.gmane.org/gmane.comp.lib.boost.devel/231185/focus=231432
oven::copied相当の機能として、as_containerというのを用意してるのですが、コンストラクタ呼び出し構文と、代入演算子に対応したいという要望が出てます。
boost::array<int, 3> ar = {{1, 2, 3}}; std::vector<int> v(ar | as_container);
boost::array<int, 3> ar = {{1, 2, 3}}; std::vector<int> v; v = ar | as_container; // C++11だとinitializer_listと曖昧になる
現状、どうすれば実現できるのか見当もつかないので悩み中。as_containerはファーストリリースに含めない予定なので、あとでexperimentalディレクトリを作ってとりあえず移動しておきます。