
On Fri, Feb 8, 2013 at 2:12 AM, oswin krause < oswin.krause@ruhr-uni-bochum.de> wrote:
Hi,
Is it possible to evaluate, whether a certain argument type given to a functor will lead to a valid expression with the result_of template?
i am trying to achieve the following, maybe there is a better way to do it:
template
Container< typename boost::result_of ::type > transform( Container<T> c, F f, std::disable_if >::type* dummy = 0 ){ //slow default implementation Container<T> res(c.size()); std::transform(c.begin(),c.**end(),res.begin(),f): return res; } //blocked implmentation of transform template
Container< typename boost::result_of ::type > transform( Container<T>, F functor, std::enable_if >::type* dummy = 0 ){ //functor supports fast implementation Container<T> res(c.size()); std::transform(c.blocks().**begin(),c.blocks().end(),res.**blocks().begin(),functor): return res; }
the question is, how valid_expression
could be implemented and right now the only mechanism which get's close to what i want would be checking result_of is valid.
Google search "boost can_be_called" or similar. Among other hits will probably be something Eric Niebler wrote for Boost.Proto (within whose documentation I think there's an explanation of how it works). TONGARI's implementation also pops up, I think. - Jeff