    // file      : Utility/ExH/Compound.hpp
    // author    : Boris Kolpackov <boris@kolpackov.net>
    // copyright : Copyright (c) 2002-2003 Boris Kolpackov
    // license   : http://kolpackov.net/license.html

    namespace Utility
    {
      namespace ExH
      {
        template <typename Type, typename Base>
        class Compound : public virtual Base
        {
        public:
          explicit
          Compound (char const* description) throw ();

          explicit
          Compound (std::string const& description) throw ();

          template <typename T>
          explicit
          Compound (T const& description) throw ();

          Compound (Compound const& src) throw ();

          virtual
          ~Compound () throw ();

        public:
          Compound&
          operator= (Compound const& src) throw ();

        protected:
          Compound () throw ();
        };
      }
    }