------- Comment #11 from piotr dot wyderski at gmail dot com  2009-12-21 17:38 
-------
An even more reduced testcase which ICEs. Delta is amazing...
I think I'll stop here.

// ------------------------8<----------------

namespace std
    class tuple<>
    {
    };
  template<std::size_t __i, typename... _Elements>
    get(tuple<_Elements...>& __t)
    {
    }
  template <class _OutputIterator, class _Tp>
    class unique_ptr
    {
  };
  template<typename _Tp, typename _Tp_Deleter>
    class unique_ptr<_Tp[], _Tp_Deleter>
    {
      typedef std::tuple<_Tp*, _Tp_Deleter> __tuple_type;
      get() const
      { return std::get<0>(_M_t); }
      __tuple_type _M_t;
  };
namespace base {
    struct release_deleter {
    };
    template <typename T> class dynamic_dispatch;
    template <
        typename TC,
        typename TR,
        typename TD,
        typename... TA
    > class dynamic_dispatch<TR (TC::*)(TD&, TA...)> {
        struct entry {
        };
        typedef std::unique_ptr<entry[], release_deleter> entry_ptr;
        entry_ptr m_Start;
        template <typename UC, typename UD> void attach_handler(TR
(UC::*m)(UD&, TA...));
    };
    template <
        typename TC,
        typename TR,
        typename TD,
        typename... TA
    > template <
        typename UC,
        typename UD
    > void dynamic_dispatch<TR (TC::*)(TD&, TA...)>::attach_handler(TR
(UC::*m)(UD&, TA...)) {
        entry* p = m_Cursor;
        if (p != m_Start.get()) {
            } while(--p != m_Start.get());
        }
    class __attribute__((dllexport)) request {
    };
    template <std::size_t N_CHID> class read_request : public read_request_base
{
    };
    template <typename TC> class request_dispatcher
      : private base::dynamic_dispatch<void (TC::*)(request&)> {
        request_dispatcher();
    };
    class __attribute__((dllexport)) file_reader : public physical_device {
        void execute_command(read_request<0>& req);
    };
    template <> request_dispatcher<file_reader>::request_dispatcher()
      : super(&file_reader::report_unsupported_request) {
        attach_handler(&file_reader::execute_command); 


-- 


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

Reply via email to