Re: [Boost-users] result_of protocol
---------------------------------------------------------------------------------- struct extract_rule {
template <typename Sig> struct result;
template <typename Holder> struct result< extract_rule(const Holder) > { typedef const typename Holder::type& type; };
template <typename Holder> typename result< extract_rule(const Holder) >::type operator()( const Holder& h ) const { return h.rule; } }; ----------------------------------------------------------------------------------
1> with 1> [ 1> Sig=extract_rule (const onevariantrule
) 1> ]
The template onevariantrule<> is defined _before_ extract_rule.
------------------------------------------------------------------------------------------- template
struct onevariantrule { typedef .... type; }; -------------------------------------------------------------------------------------------
Holder matches onevariantrule
. That template instantiation is indeed a class.
Both specializations template <typename Holder> struct result< extract_rule(const Holder) > { }; and template <typename Holder> struct result< extract_rule(const Holder& ) > { ///// the reference was missing here, doh! typedef const typename Holder::type& type; }; were needed. Sorry for the spam,
participants (1)
-
Hicham Mouline