namespace boost {
  namespace signals {
    template<typename Combiner, typename Group = int, 
             typename GroupCompare = std::less<Group> > 
      struct signal_args;
    template<typename OutSignature> struct default_signal_args;

    template<> struct default_signal_args<void>;

    template<typename Derived, typename OutSignature, 
             typename InSignatures = mpl::vector<>, 
             typename SignalArgs = typename default_signal_args<OutSignature>::type> 
      class filter;
    template<typename Derived, typename InSignatures = mpl::vector<> > 
      class consumer;
  }
}