completes boost::result_of-based result type computation

[SVN r38194]
This commit is contained in:
Tobias Schwinger
2007-07-12 09:08:46 +00:00
parent 046d853d63
commit 8eda5d32ca
16 changed files with 305 additions and 156 deletions

View File

@@ -35,40 +35,47 @@ namespace boost { namespace fusion
{ }
template <class Seq>
inline typename result_of::invoke<Function,Seq const>::type
inline typename result_of::invoke<func_const_fwd_t,Seq const>::type
operator()(Seq const & s) const
{
return fusion::invoke<func_const_fwd_t>(this->fnc_transformed,s);
return fusion::invoke<func_const_fwd_t>(this->fnc_transformed,s);
}
template <class Seq>
inline typename result_of::invoke<Function,Seq const>::type
inline typename result_of::invoke<func_fwd_t,Seq const>::type
operator()(Seq const & s)
{
return fusion::invoke<func_fwd_t>(this->fnc_transformed,s);
return fusion::invoke<func_fwd_t>(this->fnc_transformed,s);
}
template <class Seq>
inline typename result_of::invoke<Function,Seq>::type
inline typename result_of::invoke<func_const_fwd_t,Seq>::type
operator()(Seq & s) const
{
return fusion::invoke<func_const_fwd_t>(this->fnc_transformed,s);
return fusion::invoke<func_const_fwd_t>(this->fnc_transformed,s);
}
template <class Seq>
inline typename result_of::invoke<Function,Seq>::type
inline typename result_of::invoke<func_fwd_t,Seq>::type
operator()(Seq & s)
{
return fusion::invoke<func_fwd_t>(this->fnc_transformed,s);
return fusion::invoke<func_fwd_t>(this->fnc_transformed,s);
}
template<typename T>
struct result;
template <typename Func, class Seq>
struct result<fused<Func>(Seq)>
: result_of::invoke<Function,Seq>
template <typename Sig>
struct result
{ };
template <class Self, class Seq>
struct result< Self const (Seq) >
: result_of::invoke<func_const_fwd_t,Seq>
{ };
template <class Self, class Seq>
struct result< Self(Seq) >
: result_of::invoke<func_fwd_t,Seq>
{ };
};
}}