------- Comment #12 from paolo dot carlini at oracle dot com  2009-12-21 18:33 
-------
Ok, thanks. From your work I produced the below, which doesn't use any C++0x
feature and to me looks like a 4.5 Regression.

///////////////////

template<typename _Tp, typename _Up>
  struct tuple { };

template<int __i, typename _Tp, typename _Up>
  void*
  get(const tuple<_Tp, _Up>&);

template <typename _Tp, typename _Tp_Deleter = void>
  struct unique_ptr;

template<typename _Tp, typename _Tp_Deleter>
  struct unique_ptr<_Tp[], _Tp_Deleter>
  {
    typedef tuple<_Tp*, _Tp_Deleter> __tuple_type;

    void*
    get() const
    { return ::get<0>(_M_t); }

    __tuple_type _M_t;
  };

struct release_deleter;

template <typename T> class dynamic_dispatch;

template <typename TC, typename TR, typename TD>
  struct dynamic_dispatch<TR (TC::*)(TD&)>
  {
    struct entry { };

    typedef unique_ptr<entry[], release_deleter> entry_ptr;
    entry_ptr m_Start;

    template <typename UC, typename UD>
      void attach_handler(TR (UC::*m)(UD&))
      {
        entry* p = 0;
        if (p != m_Start.get()) {
        } while(--p != m_Start.get());
      }
  };

struct request;

struct read_request;

template <typename TC>
  class request_dispatcher
  : private dynamic_dispatch<void (TC::*)(request&)>
  { request_dispatcher(); };

struct file_reader
{
  void execute_command(read_request&);
};

template <>
  request_dispatcher<file_reader>::request_dispatcher()
{
  attach_handler(&file_reader::execute_command); 
}


-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|piotr dot wyderski at gmail |jason at gcc dot gnu dot org
                   |dot com                     |
      Known to fail|                            |4.5.0
      Known to work|                            |4.4.1
           Priority|P3                          |P1
            Summary|[C++0x] ICE during          |[4.5 Regresson] ICE during
                   |processing complex templates|processing complex templates
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42447

Reply via email to